diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -1167,6 +1167,7 @@ case MVT::i1: { // Masks are calculated assuming 8-bit elements since that's when we need // the most elements. + // FIXME: We're limiting to LMUL 1,2,4,8. Should we support fractional? MinVLen /= 8; unsigned LMul = divideCeil(VT.getSizeInBits(), MinVLen); unsigned EltsPerBlock = RISCV::RVVBitsPerBlock / 8; @@ -1179,9 +1180,11 @@ case MVT::f16: case MVT::f32: case MVT::f64: { - unsigned LMul = divideCeil(VT.getSizeInBits(), MinVLen); + // We prefer to use LMUL=1 for VLEN sized types. Use fractonal lmuls for + // narrower types, but we can't below LMUL=64/SEW. unsigned EltsPerBlock = RISCV::RVVBitsPerBlock / EltVT.getSizeInBits(); - return MVT::getScalableVectorVT(EltVT, LMul * EltsPerBlock); + unsigned NumElts = divideCeil(VT.getSizeInBits() * EltsPerBlock, MinVLen); + return MVT::getScalableVectorVT(EltVT, NumElts); } } } diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitcast.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitcast.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitcast.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitcast.ll @@ -17,7 +17,7 @@ define i8 @bitcast_v1i8_i8(<1 x i8> %a) { ; CHECK-LABEL: bitcast_v1i8_i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e8,mf8,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <1 x i8> %a to i8 @@ -27,7 +27,7 @@ define i16 @bitcast_v2i8_i16(<2 x i8> %a) { ; CHECK-LABEL: bitcast_v2i8_i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e16,mf4,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <2 x i8> %a to i16 @@ -37,7 +37,7 @@ define i16 @bitcast_v1i16_i16(<1 x i16> %a) { ; CHECK-LABEL: bitcast_v1i16_i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e16,mf4,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <1 x i16> %a to i16 @@ -47,7 +47,7 @@ define i32 @bitcast_v4i8_i32(<4 x i8> %a) { ; CHECK-LABEL: bitcast_v4i8_i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <4 x i8> %a to i32 @@ -57,7 +57,7 @@ define i32 @bitcast_v2i16_i32(<2 x i16> %a) { ; CHECK-LABEL: bitcast_v2i16_i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <2 x i16> %a to i32 @@ -67,7 +67,7 @@ define i32 @bitcast_v1i32_i32(<1 x i32> %a) { ; CHECK-LABEL: bitcast_v1i32_i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <1 x i32> %a to i32 @@ -153,7 +153,7 @@ define half @bitcast_v2i8_f16(<2 x i8> %a) { ; CHECK-LABEL: bitcast_v2i8_f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e16,mf4,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <2 x i8> %a to half @@ -163,7 +163,7 @@ define half @bitcast_v1i16_f16(<1 x i16> %a) { ; CHECK-LABEL: bitcast_v1i16_f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e16,mf4,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <1 x i16> %a to half @@ -173,7 +173,7 @@ define float @bitcast_v4i8_f32(<4 x i8> %a) { ; CHECK-LABEL: bitcast_v4i8_f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <4 x i8> %a to float @@ -183,7 +183,7 @@ define float @bitcast_v2i16_f32(<2 x i16> %a) { ; CHECK-LABEL: bitcast_v2i16_f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <2 x i16> %a to float @@ -193,7 +193,7 @@ define float @bitcast_v1i32_f32(<1 x i32> %a) { ; CHECK-LABEL: bitcast_v1i32_f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <1 x i32> %a to float @@ -279,7 +279,7 @@ define <1 x i16> @bitcast_i16_v1i16(i16 %a) { ; CHECK-LABEL: bitcast_i16_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vmv.v.x v8, a0 ; CHECK-NEXT: ret %b = bitcast i16 %a to <1 x i16> @@ -289,13 +289,13 @@ define <2 x i16> @bitcast_i32_v2i16(i32 %a) { ; RV32-LABEL: bitcast_i32_v2i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-NEXT: vmv.s.x v8, a0 ; RV32-NEXT: ret ; ; RV64-LABEL: bitcast_i32_v2i16: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-NEXT: vmv.v.x v8, a0 ; RV64-NEXT: ret %b = bitcast i32 %a to <2 x i16> @@ -305,13 +305,13 @@ define <1 x i32> @bitcast_i32_v1i32(i32 %a) { ; RV32-LABEL: bitcast_i32_v1i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-NEXT: vmv.s.x v8, a0 ; RV32-NEXT: ret ; ; RV64-LABEL: bitcast_i32_v1i32: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-NEXT: vmv.v.x v8, a0 ; RV64-NEXT: ret %b = bitcast i32 %a to <1 x i32> diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse.ll @@ -378,7 +378,7 @@ ; LMULMAX2-RV32-NEXT: vand.vx v27, v27, a3 ; LMULMAX2-RV32-NEXT: vor.vv v26, v27, v26 ; LMULMAX2-RV32-NEXT: addi a4, zero, 5 -; LMULMAX2-RV32-NEXT: vsetivli a5, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a5, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a4 ; LMULMAX2-RV32-NEXT: vsetivli a4, 4, e32,m1,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v27, 0 @@ -578,7 +578,7 @@ ; LMULMAX1-RV32-NEXT: vand.vx v27, v27, a3 ; LMULMAX1-RV32-NEXT: vor.vv v26, v27, v26 ; LMULMAX1-RV32-NEXT: addi a4, zero, 5 -; LMULMAX1-RV32-NEXT: vsetivli a5, 1, e8,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a5, 1, e8,mf8,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a4 ; LMULMAX1-RV32-NEXT: vsetivli a4, 4, e32,m1,ta,mu ; LMULMAX1-RV32-NEXT: vmv.v.i v27, 0 @@ -1242,7 +1242,7 @@ ; LMULMAX2-RV32-NEXT: vand.vx v30, v30, a3 ; LMULMAX2-RV32-NEXT: vor.vv v28, v30, v28 ; LMULMAX2-RV32-NEXT: addi a4, zero, 85 -; LMULMAX2-RV32-NEXT: vsetivli a5, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a5, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a4 ; LMULMAX2-RV32-NEXT: vsetivli a4, 8, e32,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v30, 0 @@ -1444,7 +1444,7 @@ ; LMULMAX1-RV32-NEXT: vand.vx v27, v27, a4 ; LMULMAX1-RV32-NEXT: vor.vv v27, v27, v26 ; LMULMAX1-RV32-NEXT: addi a5, zero, 5 -; LMULMAX1-RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a5 ; LMULMAX1-RV32-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; LMULMAX1-RV32-NEXT: vmv.v.i v26, 0 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll @@ -7,7 +7,7 @@ define <4 x i8> @ret_v4i8(<4 x i8>* %p) { ; CHECK-LABEL: ret_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v8, (a0) ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %p @@ -490,7 +490,7 @@ define <4 x i8> @ret_v8i8_param_v4i8(<4 x i8> %v) { ; CHECK-LABEL: ret_v8i8_param_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vadd.vi v8, v8, 2 ; CHECK-NEXT: ret %r = add <4 x i8> %v, @@ -500,7 +500,7 @@ define <4 x i8> @ret_v4i8_param_v4i8_v4i8(<4 x i8> %v, <4 x i8> %w) { ; CHECK-LABEL: ret_v4i8_param_v4i8_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vadd.vv v8, v8, v9 ; CHECK-NEXT: ret %r = add <4 x i8> %v, %w @@ -1022,7 +1022,7 @@ ; LMULMAX8-NEXT: addi s0, sp, 256 ; LMULMAX8-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX8-NEXT: andi sp, sp, -128 -; LMULMAX8-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX8-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX8-NEXT: vle32.v v8, (a0) ; LMULMAX8-NEXT: addi a0, zero, 32 ; LMULMAX8-NEXT: vsetvli a0, a0, e32,m8,ta,mu @@ -1051,7 +1051,7 @@ ; LMULMAX4-NEXT: addi s0, sp, 256 ; LMULMAX4-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX4-NEXT: andi sp, sp, -128 -; LMULMAX4-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX4-NEXT: vle32.v v8, (a0) ; LMULMAX4-NEXT: vsetivli a0, 16, e32,m4,ta,mu ; LMULMAX4-NEXT: vle32.v v16, (a1) @@ -1083,7 +1083,7 @@ ; LMULMAX2-NEXT: addi s0, sp, 256 ; LMULMAX2-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX2-NEXT: andi sp, sp, -128 -; LMULMAX2-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vle32.v v8, (a0) ; LMULMAX2-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vle32.v v14, (a1) @@ -1122,7 +1122,7 @@ ; LMULMAX1-NEXT: addi s0, sp, 256 ; LMULMAX1-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX1-NEXT: andi sp, sp, -128 -; LMULMAX1-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vle32.v v8, (a0) ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vle32.v v13, (a1) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extload-truncstore.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extload-truncstore.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extload-truncstore.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extload-truncstore.ll @@ -9,7 +9,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v8, v25, -1, v0 ; CHECK-NEXT: ret @@ -21,9 +21,9 @@ define <2 x i16> @sextload_v2i8_v2i16(<2 x i8>* %x) { ; CHECK-LABEL: sextload_v2i8_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vsext.vf2 v8, v25 ; CHECK-NEXT: ret %y = load <2 x i8>, <2 x i8>* %x @@ -34,9 +34,9 @@ define <2 x i16> @zextload_v2i8_v2i16(<2 x i8>* %x) { ; CHECK-LABEL: zextload_v2i8_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vzext.vf2 v8, v25 ; CHECK-NEXT: ret %y = load <2 x i8>, <2 x i8>* %x @@ -47,9 +47,9 @@ define <2 x i32> @sextload_v2i8_v2i32(<2 x i8>* %x) { ; CHECK-LABEL: sextload_v2i8_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vsext.vf4 v8, v25 ; CHECK-NEXT: ret %y = load <2 x i8>, <2 x i8>* %x @@ -60,9 +60,9 @@ define <2 x i32> @zextload_v2i8_v2i32(<2 x i8>* %x) { ; CHECK-LABEL: zextload_v2i8_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vzext.vf4 v8, v25 ; CHECK-NEXT: ret %y = load <2 x i8>, <2 x i8>* %x @@ -73,7 +73,7 @@ define <2 x i64> @sextload_v2i8_v2i64(<2 x i8>* %x) { ; CHECK-LABEL: sextload_v2i8_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vsext.vf8 v8, v25 @@ -86,7 +86,7 @@ define <2 x i64> @zextload_v2i8_v2i64(<2 x i8>* %x) { ; CHECK-LABEL: zextload_v2i8_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vzext.vf8 v8, v25 @@ -99,9 +99,9 @@ define <4 x i16> @sextload_v4i8_v4i16(<4 x i8>* %x) { ; CHECK-LABEL: sextload_v4i8_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vsext.vf2 v8, v25 ; CHECK-NEXT: ret %y = load <4 x i8>, <4 x i8>* %x @@ -112,9 +112,9 @@ define <4 x i16> @zextload_v4i8_v4i16(<4 x i8>* %x) { ; CHECK-LABEL: zextload_v4i8_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vzext.vf2 v8, v25 ; CHECK-NEXT: ret %y = load <4 x i8>, <4 x i8>* %x @@ -125,7 +125,7 @@ define <4 x i32> @sextload_v4i8_v4i32(<4 x i8>* %x) { ; CHECK-LABEL: sextload_v4i8_v4i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; CHECK-NEXT: vsext.vf4 v8, v25 @@ -138,7 +138,7 @@ define <4 x i32> @zextload_v4i8_v4i32(<4 x i8>* %x) { ; CHECK-LABEL: zextload_v4i8_v4i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; CHECK-NEXT: vzext.vf4 v8, v25 @@ -151,11 +151,11 @@ define <4 x i64> @sextload_v4i8_v4i64(<4 x i8>* %x) { ; LMULMAX1-LABEL: sextload_v4i8_v4i64: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vle8.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v9, v25 @@ -163,7 +163,7 @@ ; ; LMULMAX4-LABEL: sextload_v4i8_v4i64: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX4-NEXT: vle8.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; LMULMAX4-NEXT: vsext.vf8 v8, v25 @@ -176,11 +176,11 @@ define <4 x i64> @zextload_v4i8_v4i64(<4 x i8>* %x) { ; LMULMAX1-LABEL: zextload_v4i8_v4i64: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vle8.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v9, v25 @@ -188,7 +188,7 @@ ; ; LMULMAX4-LABEL: zextload_v4i8_v4i64: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX4-NEXT: vle8.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; LMULMAX4-NEXT: vzext.vf8 v8, v25 @@ -201,7 +201,7 @@ define <8 x i16> @sextload_v8i8_v8i16(<8 x i8>* %x) { ; CHECK-LABEL: sextload_v8i8_v8i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 8, e16,m1,ta,mu ; CHECK-NEXT: vsext.vf2 v8, v25 @@ -214,7 +214,7 @@ define <8 x i16> @zextload_v8i8_v8i16(<8 x i8>* %x) { ; CHECK-LABEL: zextload_v8i8_v8i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 8, e16,m1,ta,mu ; CHECK-NEXT: vzext.vf2 v8, v25 @@ -227,11 +227,11 @@ define <8 x i32> @sextload_v8i8_v8i32(<8 x i8>* %x) { ; LMULMAX1-LABEL: sextload_v8i8_v8i32: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vle8.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v9, v25 @@ -239,7 +239,7 @@ ; ; LMULMAX4-LABEL: sextload_v8i8_v8i32: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX4-NEXT: vle8.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; LMULMAX4-NEXT: vsext.vf4 v8, v25 @@ -252,11 +252,11 @@ define <8 x i32> @zextload_v8i8_v8i32(<8 x i8>* %x) { ; LMULMAX1-LABEL: zextload_v8i8_v8i32: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vle8.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v9, v25 @@ -264,7 +264,7 @@ ; ; LMULMAX4-LABEL: zextload_v8i8_v8i32: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX4-NEXT: vle8.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; LMULMAX4-NEXT: vzext.vf4 v8, v25 @@ -277,27 +277,27 @@ define <8 x i64> @sextload_v8i8_v8i64(<8 x i8>* %x) { ; LMULMAX1-LABEL: sextload_v8i8_v8i64: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vle8.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v10, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf8 v11, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v9, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf8 v11, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: sextload_v8i8_v8i64: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX4-NEXT: vle8.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 8, e64,m4,ta,mu ; LMULMAX4-NEXT: vsext.vf8 v8, v25 @@ -310,27 +310,27 @@ define <8 x i64> @zextload_v8i8_v8i64(<8 x i8>* %x) { ; LMULMAX1-LABEL: zextload_v8i8_v8i64: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vle8.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v10, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf8 v11, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v9, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf8 v11, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: zextload_v8i8_v8i64: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX4-NEXT: vle8.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 8, e64,m4,ta,mu ; LMULMAX4-NEXT: vzext.vf8 v8, v25 @@ -401,14 +401,14 @@ ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 8 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v10, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v11, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v9, v25 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v26, 4 +; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v11, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: sextload_v16i8_v16i32: @@ -434,14 +434,14 @@ ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 8 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v10, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v11, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v9, v25 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v26, 4 +; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v11, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: zextload_v16i8_v16i32: @@ -467,30 +467,30 @@ ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 8 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v12, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf8 v14, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf8 v15, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v27, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v9, v27 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v10, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf8 v13, v27 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v26, v26, 4 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf8 v14, v26 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v11, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf8 v13, v25 +; LMULMAX1-NEXT: vsext.vf8 v15, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: sextload_v16i8_v16i64: @@ -520,30 +520,30 @@ ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 8 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v12, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf8 v14, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf8 v15, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v27, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v9, v27 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v10, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf8 v13, v27 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v26, v26, 4 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf8 v14, v26 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v11, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf8 v13, v25 +; LMULMAX1-NEXT: vzext.vf8 v15, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: zextload_v16i8_v16i64: @@ -565,17 +565,18 @@ define void @truncstore_v2i8_v2i1(<2 x i8> %x, <2 x i1>* %z) { ; CHECK-LABEL: truncstore_v2i8_v2i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vand.vi v25, v8, 1 ; CHECK-NEXT: vmsne.vi v0, v25, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <2 x i8> %x to <2 x i1> @@ -586,9 +587,8 @@ define void @truncstore_v2i16_v2i8(<2 x i16> %x, <2 x i8>* %z) { ; CHECK-LABEL: truncstore_v2i16_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,mf2,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v8, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <2 x i16> %x to <2 x i8> @@ -599,9 +599,9 @@ define <2 x i32> @sextload_v2i16_v2i32(<2 x i16>* %x) { ; CHECK-LABEL: sextload_v2i16_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vsext.vf2 v8, v25 ; CHECK-NEXT: ret %y = load <2 x i16>, <2 x i16>* %x @@ -612,9 +612,9 @@ define <2 x i32> @zextload_v2i16_v2i32(<2 x i16>* %x) { ; CHECK-LABEL: zextload_v2i16_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vzext.vf2 v8, v25 ; CHECK-NEXT: ret %y = load <2 x i16>, <2 x i16>* %x @@ -625,7 +625,7 @@ define <2 x i64> @sextload_v2i16_v2i64(<2 x i16>* %x) { ; CHECK-LABEL: sextload_v2i16_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vsext.vf4 v8, v25 @@ -638,7 +638,7 @@ define <2 x i64> @zextload_v2i16_v2i64(<2 x i16>* %x) { ; CHECK-LABEL: zextload_v2i16_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vzext.vf4 v8, v25 @@ -651,9 +651,8 @@ define void @truncstore_v4i16_v4i8(<4 x i16> %x, <4 x i8>* %z) { ; CHECK-LABEL: truncstore_v4i16_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,mf2,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v8, 0 -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <4 x i16> %x to <4 x i8> @@ -664,7 +663,7 @@ define <4 x i32> @sextload_v4i16_v4i32(<4 x i16>* %x) { ; CHECK-LABEL: sextload_v4i16_v4i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; CHECK-NEXT: vsext.vf2 v8, v25 @@ -677,7 +676,7 @@ define <4 x i32> @zextload_v4i16_v4i32(<4 x i16>* %x) { ; CHECK-LABEL: zextload_v4i16_v4i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; CHECK-NEXT: vzext.vf2 v8, v25 @@ -690,11 +689,11 @@ define <4 x i64> @sextload_v4i16_v4i64(<4 x i16>* %x) { ; LMULMAX1-LABEL: sextload_v4i16_v4i64: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v9, v25 @@ -702,7 +701,7 @@ ; ; LMULMAX4-LABEL: sextload_v4i16_v4i64: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX4-NEXT: vle16.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; LMULMAX4-NEXT: vsext.vf4 v8, v25 @@ -715,11 +714,11 @@ define <4 x i64> @zextload_v4i16_v4i64(<4 x i16>* %x) { ; LMULMAX1-LABEL: zextload_v4i16_v4i64: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v8, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v9, v25 @@ -727,7 +726,7 @@ ; ; LMULMAX4-LABEL: zextload_v4i16_v4i64: ; LMULMAX4: # %bb.0: -; LMULMAX4-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX4-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX4-NEXT: vle16.v v25, (a0) ; LMULMAX4-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; LMULMAX4-NEXT: vzext.vf4 v8, v25 @@ -742,7 +741,6 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v8, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <8 x i16> %x to <8 x i8> @@ -811,14 +809,14 @@ ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v10, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v11, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v9, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v11, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: sextload_v8i16_v8i64: @@ -844,14 +842,14 @@ ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v10, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v11, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v9, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v11, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: zextload_v8i16_v8i64: @@ -971,27 +969,27 @@ ; LMULMAX1-NEXT: vslidedown.vi v27, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v10, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v11, v27 ; LMULMAX1-NEXT: vsext.vf4 v12, v26 ; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v14, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 +; LMULMAX1-NEXT: vslidedown.vi v28, v26, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v15, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v14, v28 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v9, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v27, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v11, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v13, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v28, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v15, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: sextload_v16i16_v16i64: @@ -1023,27 +1021,27 @@ ; LMULMAX1-NEXT: vslidedown.vi v27, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v10, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v11, v27 ; LMULMAX1-NEXT: vzext.vf4 v12, v26 ; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v26, 4 +; LMULMAX1-NEXT: vslidedown.vi v28, v26, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v14, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v15, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v14, v28 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v9, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v27, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v11, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v13, v25 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v25, v28, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v15, v25 ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: zextload_v16i16_v16i64: @@ -1065,11 +1063,10 @@ define void @truncstore_v2i32_v2i8(<2 x i32> %x, <2 x i8>* %z) { ; CHECK-LABEL: truncstore_v2i32_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,mf2,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v8, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,mf4,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vnsrl.wi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v26, (a0) ; CHECK-NEXT: ret %y = trunc <2 x i32> %x to <2 x i8> @@ -1080,9 +1077,8 @@ define void @truncstore_v2i32_v2i16(<2 x i32> %x, <2 x i16>* %z) { ; CHECK-LABEL: truncstore_v2i32_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,mf2,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v8, 0 -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu ; CHECK-NEXT: vse16.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <2 x i32> %x to <2 x i16> @@ -1093,7 +1089,7 @@ define <2 x i64> @sextload_v2i32_v2i64(<2 x i32>* %x) { ; CHECK-LABEL: sextload_v2i32_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vsext.vf2 v8, v25 @@ -1106,7 +1102,7 @@ define <2 x i64> @zextload_v2i32_v2i64(<2 x i32>* %x) { ; CHECK-LABEL: zextload_v2i32_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vzext.vf2 v8, v25 @@ -1123,7 +1119,6 @@ ; CHECK-NEXT: vnsrl.wi v25, v8, 0 ; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v26, (a0) ; CHECK-NEXT: ret %y = trunc <4 x i32> %x to <4 x i8> @@ -1136,7 +1131,6 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v8, 0 -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu ; CHECK-NEXT: vse16.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <4 x i32> %x to <4 x i16> @@ -1201,17 +1195,17 @@ ; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v27, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v27, 4 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vse8.v v25, (a0) ; LMULMAX1-NEXT: ret ; @@ -1221,7 +1215,6 @@ ; LMULMAX4-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX4-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX4-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX4-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; LMULMAX4-NEXT: vse8.v v26, (a0) ; LMULMAX4-NEXT: ret %y = trunc <8 x i32> %x to <8 x i8> @@ -1325,38 +1318,38 @@ ; LMULMAX1-LABEL: truncstore_v16i32_v16i8: ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v10, 0 +; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf2,tu,mu ; LMULMAX1-NEXT: vmv1r.v v27, v25 ; LMULMAX1-NEXT: vslideup.vi v27, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v11, 0 +; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v27, v28, 4 +; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu +; LMULMAX1-NEXT: vmv.v.i v26, 0 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu +; LMULMAX1-NEXT: vslideup.vi v26, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v8, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v10, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v11, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu +; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v28, 4 -; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v27, 8 +; LMULMAX1-NEXT: vslideup.vi v26, v25, 8 ; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vse8.v v26, (a0) ; LMULMAX1-NEXT: ret @@ -1522,7 +1515,6 @@ ; CHECK-NEXT: vnsrl.wi v26, v25, 0 ; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <2 x i64> %x to <2 x i8> @@ -1537,7 +1529,6 @@ ; CHECK-NEXT: vnsrl.wi v25, v8, 0 ; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu ; CHECK-NEXT: vse16.v v26, (a0) ; CHECK-NEXT: ret %y = trunc <2 x i64> %x to <2 x i16> @@ -1550,7 +1541,6 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v8, 0 -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu ; CHECK-NEXT: vse32.v v25, (a0) ; CHECK-NEXT: ret %y = trunc <2 x i64> %x to <2 x i32> @@ -1567,9 +1557,9 @@ ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vmv.v.i v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf4,tu,mu ; LMULMAX1-NEXT: vslideup.vi v26, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v9, 0 @@ -1577,9 +1567,9 @@ ; LMULMAX1-NEXT: vnsrl.wi v27, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v27, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,tu,mu ; LMULMAX1-NEXT: vslideup.vi v26, v25, 2 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vse8.v v26, (a0) ; LMULMAX1-NEXT: ret ; @@ -1591,7 +1581,6 @@ ; LMULMAX4-NEXT: vnsrl.wi v26, v25, 0 ; LMULMAX4-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX4-NEXT: vnsrl.wi v25, v26, 0 -; LMULMAX4-NEXT: vsetivli a1, 4, e8,m1,ta,mu ; LMULMAX4-NEXT: vse8.v v25, (a0) ; LMULMAX4-NEXT: ret %y = trunc <4 x i64> %x to <4 x i8> @@ -1606,17 +1595,17 @@ ; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e16,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v27, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v27, 2 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vse16.v v25, (a0) ; LMULMAX1-NEXT: ret ; @@ -1626,7 +1615,6 @@ ; LMULMAX4-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX4-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX4-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX4-NEXT: vsetivli a1, 4, e16,m1,ta,mu ; LMULMAX4-NEXT: vse16.v v26, (a0) ; LMULMAX4-NEXT: ret %y = trunc <4 x i64> %x to <4 x i16> @@ -1666,47 +1654,47 @@ ; LMULMAX1-LABEL: truncstore_v8i64_v8i8: ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v10, 0 +; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vmv.v.i v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf4,tu,mu ; LMULMAX1-NEXT: vmv1r.v v27, v26 ; LMULMAX1-NEXT: vslideup.vi v27, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v11, 0 +; LMULMAX1-NEXT: vnsrl.wi v25, v9, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v28, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,tu,mu ; LMULMAX1-NEXT: vslideup.vi v27, v25, 2 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu +; LMULMAX1-NEXT: vmv.v.i v25, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v25, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v10, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v25, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v25, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v28, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v26, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v9, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v11, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v25, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v25, 2 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v27, 4 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vnsrl.wi v27, v28, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v26, v27, 2 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v25, v26, 4 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vse8.v v25, (a0) ; LMULMAX1-NEXT: ret ; @@ -1718,7 +1706,6 @@ ; LMULMAX4-NEXT: vnsrl.wi v25, v26, 0 ; LMULMAX4-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; LMULMAX4-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX4-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; LMULMAX4-NEXT: vse8.v v26, (a0) ; LMULMAX4-NEXT: ret %y = trunc <8 x i64> %x to <8 x i8> @@ -1730,38 +1717,38 @@ ; LMULMAX1-LABEL: truncstore_v8i64_v8i16: ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v10, 0 +; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e16,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf2,tu,mu ; LMULMAX1-NEXT: vmv1r.v v27, v25 ; LMULMAX1-NEXT: vslideup.vi v27, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v11, 0 +; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v27, v28, 2 +; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,ta,mu +; LMULMAX1-NEXT: vmv.v.i v26, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu +; LMULMAX1-NEXT: vslideup.vi v26, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v8, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v10, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e16,m1,tu,mu +; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v11, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu +; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v28, 2 -; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v27, 4 +; LMULMAX1-NEXT: vslideup.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v26, (a0) ; LMULMAX1-NEXT: ret @@ -1822,92 +1809,93 @@ ; LMULMAX1-LABEL: truncstore_v16i64_v16i8: ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v14, 0 +; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v27, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e8,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v26, v25 -; LMULMAX1-NEXT: vslideup.vi v26, v27, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf4,tu,mu +; LMULMAX1-NEXT: vmv1r.v v28, v25 +; LMULMAX1-NEXT: vslideup.vi v28, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v15, 0 +; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v27, 2 +; LMULMAX1-NEXT: vnsrl.wi v26, v27, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v26, 2 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,ta,mu +; LMULMAX1-NEXT: vmv.v.i v26, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf2,tu,mu +; LMULMAX1-NEXT: vmv1r.v v27, v26 +; LMULMAX1-NEXT: vslideup.vi v27, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v12, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v10, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v27, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e8,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v28, v25 -; LMULMAX1-NEXT: vslideup.vi v28, v27, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v29, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf4,tu,mu +; LMULMAX1-NEXT: vmv1r.v v29, v25 +; LMULMAX1-NEXT: vslideup.vi v29, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v13, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v11, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v29, v27, 0 +; LMULMAX1-NEXT: vnsrl.wi v30, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v29, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v28, v27, 2 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v27, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v29, v27 -; LMULMAX1-NEXT: vslideup.vi v29, v28, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v30, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v29, v28, 2 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v27, v29, 4 +; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu +; LMULMAX1-NEXT: vmv.v.i v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v29, v26, 4 +; LMULMAX1-NEXT: vslideup.vi v28, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v10, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v12, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e8,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v28, v25 -; LMULMAX1-NEXT: vslideup.vi v28, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v29, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf4,tu,mu +; LMULMAX1-NEXT: vmv1r.v v29, v25 +; LMULMAX1-NEXT: vslideup.vi v29, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v11, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v13, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v30, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v30, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v30, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v28, v26, 2 +; LMULMAX1-NEXT: vnsrl.wi v27, v30, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v29, v27, 2 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v26, v29, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v8, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v14, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v30, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v30, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v29, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v25, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v15, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v30, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v27, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e8,mf8,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v30, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v26, 2 -; LMULMAX1-NEXT: vslideup.vi v27, v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v27, v28, 4 -; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 8, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v27, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v29, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v25, v27, 2 +; LMULMAX1-NEXT: vsetivli a1, 8, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v29, 8 +; LMULMAX1-NEXT: vslideup.vi v28, v26, 8 ; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu -; LMULMAX1-NEXT: vse8.v v25, (a0) +; LMULMAX1-NEXT: vse8.v v28, (a0) ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: truncstore_v16i64_v16i8: @@ -1942,72 +1930,73 @@ ; LMULMAX1-LABEL: truncstore_v16i64_v16i16: ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v25, v10, 0 +; LMULMAX1-NEXT: vnsrl.wi v25, v8, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e16,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v27, v25 -; LMULMAX1-NEXT: vslideup.vi v27, v26, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf2,tu,mu +; LMULMAX1-NEXT: vmv1r.v v28, v25 +; LMULMAX1-NEXT: vslideup.vi v28, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v11, 0 +; LMULMAX1-NEXT: vnsrl.wi v26, v9, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v27, v26, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v27, 2 +; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,ta,mu +; LMULMAX1-NEXT: vmv.v.i v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v27, v28, 2 +; LMULMAX1-NEXT: vmv1r.v v27, v26 +; LMULMAX1-NEXT: vslideup.vi v27, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v8, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v10, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e16,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v26, v25 -; LMULMAX1-NEXT: vslideup.vi v26, v28, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf2,tu,mu +; LMULMAX1-NEXT: vmv1r.v v28, v25 +; LMULMAX1-NEXT: vslideup.vi v28, v29, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v9, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v11, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v29, 2 -; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v28, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v29, v28 -; LMULMAX1-NEXT: vslideup.vi v29, v26, 0 +; LMULMAX1-NEXT: vnsrl.wi v30, v29, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v30, 2 ; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v29, v27, 4 +; LMULMAX1-NEXT: vslideup.vi v27, v28, 4 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v14, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v12, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v26, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e16,m1,tu,mu -; LMULMAX1-NEXT: vmv1r.v v26, v25 -; LMULMAX1-NEXT: vslideup.vi v26, v27, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf2,tu,mu +; LMULMAX1-NEXT: vmv1r.v v28, v25 +; LMULMAX1-NEXT: vslideup.vi v28, v29, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v15, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v13, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v30, v27, 0 +; LMULMAX1-NEXT: vnsrl.wi v30, v29, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v30, 2 ; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v26, v30, 2 +; LMULMAX1-NEXT: vslideup.vi v26, v28, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v12, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v14, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v30, v27, 0 -; LMULMAX1-NEXT: vsetivli a1, 2, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v30, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 +; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v25, v29, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v27, v13, 0 +; LMULMAX1-NEXT: vnsrl.wi v28, v15, 0 ; LMULMAX1-NEXT: vsetivli a1, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v30, v27, 0 -; LMULMAX1-NEXT: vsetivli a1, 4, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v30, 2 -; LMULMAX1-NEXT: vslideup.vi v28, v25, 0 +; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 +; LMULMAX1-NEXT: vsetivli a1, 4, e16,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v25, v29, 2 ; LMULMAX1-NEXT: vsetivli a1, 8, e16,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v28, v26, 4 +; LMULMAX1-NEXT: vslideup.vi v26, v25, 4 ; LMULMAX1-NEXT: addi a1, a0, 16 ; LMULMAX1-NEXT: vsetivli a2, 8, e16,m1,ta,mu -; LMULMAX1-NEXT: vse16.v v28, (a1) -; LMULMAX1-NEXT: vse16.v v29, (a0) +; LMULMAX1-NEXT: vse16.v v26, (a1) +; LMULMAX1-NEXT: vse16.v v27, (a0) ; LMULMAX1-NEXT: ret ; ; LMULMAX4-LABEL: truncstore_v16i64_v16i16: diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll @@ -5,7 +5,7 @@ define i1 @extractelt_v1i1(<1 x i8>* %x, i64 %idx) nounwind { ; CHECK-LABEL: extractelt_v1i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vmv.v.i v25, 0 @@ -22,12 +22,12 @@ define i1 @extractelt_v2i1(<2 x i8>* %x, i64 %idx) nounwind { ; CHECK-LABEL: extractelt_v2i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; CHECK-NEXT: vslidedown.vx v25, v25, a1 ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -40,12 +40,12 @@ define i1 @extractelt_v4i1(<4 x i8>* %x, i64 %idx) nounwind { ; CHECK-LABEL: extractelt_v4i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 1, e8,mf4,ta,mu ; CHECK-NEXT: vslidedown.vx v25, v25, a1 ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -58,12 +58,12 @@ define i1 @extractelt_v8i1(<8 x i8>* %x, i64 %idx) nounwind { ; CHECK-LABEL: extractelt_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 1, e8,mf2,ta,mu ; CHECK-NEXT: vslidedown.vx v25, v25, a1 ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-subvector.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-subvector.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-subvector.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-subvector.ll @@ -5,9 +5,9 @@ define void @extract_v2i8_v4i8_0(<4 x i8>* %x, <2 x i8>* %y) { ; CHECK-LABEL: extract_v2i8_v4i8_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vse8.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x i8>, <4 x i8>* %x @@ -19,10 +19,11 @@ define void @extract_v2i8_v4i8_2(<4 x i8>* %x, <2 x i8>* %y) { ; CHECK-LABEL: extract_v2i8_v4i8_2: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v25, 2 +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vse8.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x i8>, <4 x i8>* %x @@ -34,9 +35,9 @@ define void @extract_v2i8_v8i8_0(<8 x i8>* %x, <2 x i8>* %y) { ; CHECK-LABEL: extract_v2i8_v8i8_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vse8.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -48,10 +49,11 @@ define void @extract_v2i8_v8i8_6(<8 x i8>* %x, <2 x i8>* %y) { ; CHECK-LABEL: extract_v2i8_v8i8_6: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v25, 6 +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vse8.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -65,7 +67,7 @@ ; LMULMAX2: # %bb.0: ; LMULMAX2-NEXT: vsetivli a2, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vle32.v v26, (a0) -; LMULMAX2-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vse32.v v26, (a1) ; LMULMAX2-NEXT: ret ; @@ -73,7 +75,7 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vle32.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vse32.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <8 x i32>, <8 x i32>* %x @@ -89,7 +91,7 @@ ; LMULMAX2-NEXT: vle32.v v26, (a0) ; LMULMAX2-NEXT: vsetivli a0, 2, e32,m2,ta,mu ; LMULMAX2-NEXT: vslidedown.vi v26, v26, 2 -; LMULMAX2-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vse32.v v26, (a1) ; LMULMAX2-NEXT: ret ; @@ -99,6 +101,7 @@ ; LMULMAX1-NEXT: vle32.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,m1,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vse32.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <8 x i32>, <8 x i32>* %x @@ -114,7 +117,7 @@ ; LMULMAX2-NEXT: vle32.v v26, (a0) ; LMULMAX2-NEXT: vsetivli a0, 2, e32,m2,ta,mu ; LMULMAX2-NEXT: vslidedown.vi v26, v26, 6 -; LMULMAX2-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vse32.v v26, (a1) ; LMULMAX2-NEXT: ret ; @@ -125,6 +128,7 @@ ; LMULMAX1-NEXT: vle32.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,m1,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vse32.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <8 x i32>, <8 x i32>* %x @@ -136,7 +140,7 @@ define void @extract_v2i32_nxv16i32_0( %x, <2 x i32>* %y) { ; CHECK-LABEL: extract_v2i32_nxv16i32_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vse32.v v8, (a0) ; CHECK-NEXT: ret %c = call <2 x i32> @llvm.experimental.vector.extract.v2i32.nxv16i32( %x, i64 0) @@ -149,7 +153,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 2, e32,m8,ta,mu ; CHECK-NEXT: vslidedown.vi v8, v8, 6 -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vse32.v v8, (a0) ; CHECK-NEXT: ret %c = call <2 x i32> @llvm.experimental.vector.extract.v2i32.nxv16i32( %x, i64 6) @@ -160,7 +164,7 @@ define void @extract_v2i8_nxv2i8_0( %x, <2 x i8>* %y) { ; CHECK-LABEL: extract_v2i8_nxv2i8_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vse8.v v8, (a0) ; CHECK-NEXT: ret %c = call <2 x i8> @llvm.experimental.vector.extract.v2i8.nxv2i8( %x, i64 0) @@ -173,7 +177,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 2, e8,mf4,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v8, 2 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vse8.v v25, (a0) ; CHECK-NEXT: ret %c = call <2 x i8> @llvm.experimental.vector.extract.v2i8.nxv2i8( %x, i64 2) @@ -234,7 +238,7 @@ ; LMULMAX2-NEXT: addi a2, zero, 32 ; LMULMAX2-NEXT: vsetvli a2, a2, e8,m2,ta,mu ; LMULMAX2-NEXT: vle1.v v25, (a0) -; LMULMAX2-NEXT: vsetivli a0, 1, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 1, e8,mf4,ta,mu ; LMULMAX2-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) @@ -244,7 +248,7 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a0, 1, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a1) @@ -262,7 +266,7 @@ ; LMULMAX2-NEXT: addi a2, zero, 32 ; LMULMAX2-NEXT: vsetvli a2, a2, e8,m2,ta,mu ; LMULMAX2-NEXT: vle1.v v25, (a0) -; LMULMAX2-NEXT: vsetivli a0, 1, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 1, e8,mf4,ta,mu ; LMULMAX2-NEXT: vslidedown.vi v25, v25, 2 ; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) @@ -301,8 +305,9 @@ ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 ; CHECK-NEXT: vsetivli a1, 8, e8,mf4,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v25, 2 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v26, v25, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v26, (a0) ; CHECK-NEXT: ret %c = call <8 x i1> @llvm.experimental.vector.extract.v8i1.nxv2i1( %x, i64 2) @@ -354,15 +359,16 @@ ; LMULMAX2-NEXT: addi a2, zero, 32 ; LMULMAX2-NEXT: vsetvli a2, a2, e8,m2,ta,mu ; LMULMAX2-NEXT: vle1.v v0, (a0) -; LMULMAX2-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX2-NEXT: vmv.v.i v25, 0 ; LMULMAX2-NEXT: vmerge.vim v25, v25, 1, v0 -; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vmv.v.i v26, 0 -; LMULMAX2-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; LMULMAX2-NEXT: vslideup.vi v26, v25, 0 -; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vmsne.vi v25, v26, 0 +; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret ; @@ -370,15 +376,16 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v0, (a0) -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vmv.v.i v25, 0 ; LMULMAX1-NEXT: vmerge.vim v25, v25, 1, v0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v26, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmsne.vi v25, v26, 0 +; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <64 x i1>, <64 x i1>* %x @@ -397,16 +404,17 @@ ; LMULMAX2-NEXT: vmerge.vim v26, v26, 1, v0 ; LMULMAX2-NEXT: vsetivli a0, 2, e8,m2,ta,mu ; LMULMAX2-NEXT: vslidedown.vi v26, v26, 2 -; LMULMAX2-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX2-NEXT: vmsne.vi v0, v26, 0 ; LMULMAX2-NEXT: vmv.v.i v25, 0 ; LMULMAX2-NEXT: vmerge.vim v25, v25, 1, v0 -; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vmv.v.i v26, 0 -; LMULMAX2-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; LMULMAX2-NEXT: vslideup.vi v26, v25, 0 -; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vmsne.vi v25, v26, 0 +; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret ; @@ -418,15 +426,17 @@ ; LMULMAX1-NEXT: vmerge.vim v25, v25, 1, v0 ; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vmsne.vi v0, v25, 0 ; LMULMAX1-NEXT: vmv.v.i v25, 0 ; LMULMAX1-NEXT: vmerge.vim v25, v25, 1, v0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v26, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmsne.vi v25, v26, 0 +; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <64 x i1>, <64 x i1>* %x @@ -446,16 +456,17 @@ ; LMULMAX2-NEXT: vmerge.vim v26, v26, 1, v0 ; LMULMAX2-NEXT: vsetivli a0, 2, e8,m2,ta,mu ; LMULMAX2-NEXT: vslidedown.vi v26, v26, 10 -; LMULMAX2-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX2-NEXT: vmsne.vi v0, v26, 0 ; LMULMAX2-NEXT: vmv.v.i v25, 0 ; LMULMAX2-NEXT: vmerge.vim v25, v25, 1, v0 -; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vmv.v.i v26, 0 -; LMULMAX2-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX2-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; LMULMAX2-NEXT: vslideup.vi v26, v25, 0 -; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vmsne.vi v25, v26, 0 +; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret ; @@ -468,15 +479,17 @@ ; LMULMAX1-NEXT: vmerge.vim v25, v25, 1, v0 ; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 10 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vmsne.vi v0, v25, 0 ; LMULMAX1-NEXT: vmv.v.i v25, 0 ; LMULMAX1-NEXT: vmerge.vim v25, v25, 1, v0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v26, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmsne.vi v25, v26, 0 +; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <64 x i1>, <64 x i1>* %x @@ -488,15 +501,16 @@ define void @extract_v2i1_nxv2i1_0( %x, <2 x i1>* %y) { ; CHECK-LABEL: extract_v2i1_nxv2i1_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <2 x i1> @llvm.experimental.vector.extract.v2i1.nxv2i1( %x, i64 0) @@ -512,16 +526,17 @@ ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 ; CHECK-NEXT: vsetivli a1, 2, e8,mf4,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v25, 2 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmsne.vi v0, v25, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <2 x i1> @llvm.experimental.vector.extract.v2i1.nxv2i1( %x, i64 2) @@ -532,15 +547,16 @@ define void @extract_v2i1_nxv64i1_0( %x, <2 x i1>* %y) { ; CHECK-LABEL: extract_v2i1_nxv64i1_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <2 x i1> @llvm.experimental.vector.extract.v2i1.nxv64i1( %x, i64 0) @@ -556,16 +572,17 @@ ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0 ; CHECK-NEXT: vsetivli a1, 2, e8,m8,ta,mu ; CHECK-NEXT: vslidedown.vi v8, v8, 2 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmsne.vi v0, v8, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <2 x i1> @llvm.experimental.vector.extract.v2i1.nxv64i1( %x, i64 2) @@ -582,16 +599,17 @@ ; CHECK-NEXT: addi a1, zero, 42 ; CHECK-NEXT: vsetivli a2, 2, e8,m8,ta,mu ; CHECK-NEXT: vslidedown.vx v8, v8, a1 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmsne.vi v0, v8, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <2 x i1> @llvm.experimental.vector.extract.v2i1.nxv64i1( %x, i64 42) @@ -607,16 +625,17 @@ ; CHECK-NEXT: vmerge.vim v28, v28, 1, v0 ; CHECK-NEXT: vsetivli a1, 2, e8,m4,ta,mu ; CHECK-NEXT: vslidedown.vi v28, v28, 26 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmsne.vi v0, v28, 0 ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <2 x i1> @llvm.experimental.vector.extract.v2i1.nxv32i1( %x, i64 26) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-bitcast.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-bitcast.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-bitcast.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-bitcast.ll @@ -5,7 +5,7 @@ define i16 @bitcast_v1f16_i16(<1 x half> %a) { ; CHECK-LABEL: bitcast_v1f16_i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e16,mf4,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <1 x half> %a to i16 @@ -15,7 +15,7 @@ define half @bitcast_v1f16_f16(<1 x half> %a) { ; CHECK-LABEL: bitcast_v1f16_f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e16,mf4,ta,mu ; CHECK-NEXT: vfmv.f.s ft0, v8 ; CHECK-NEXT: fmv.x.h a0, ft0 ; CHECK-NEXT: ret @@ -26,7 +26,7 @@ define i32 @bitcast_v2f16_i32(<2 x half> %a) { ; CHECK-LABEL: bitcast_v2f16_i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <2 x half> %a to i32 @@ -36,7 +36,7 @@ define i32 @bitcast_v1f32_i32(<1 x float> %a) { ; CHECK-LABEL: bitcast_v1f32_i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; CHECK-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; CHECK-NEXT: vmv.x.s a0, v8 ; CHECK-NEXT: ret %b = bitcast <1 x float> %a to i32 @@ -46,13 +46,13 @@ define float @bitcast_v2f16_f32(<2 x half> %a) { ; RV32-FP-LABEL: bitcast_v2f16_f32: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; RV32-FP-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.x.s a0, v8 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_v2f16_f32: ; RV64-FP: # %bb.0: -; RV64-FP-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; RV64-FP-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; RV64-FP-NEXT: vfmv.f.s ft0, v8 ; RV64-FP-NEXT: fmv.x.w a0, ft0 ; RV64-FP-NEXT: ret @@ -63,13 +63,13 @@ define float @bitcast_v1f32_f32(<1 x float> %a) { ; RV32-FP-LABEL: bitcast_v1f32_f32: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; RV32-FP-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.x.s a0, v8 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_v1f32_f32: ; RV64-FP: # %bb.0: -; RV64-FP-NEXT: vsetvli zero, zero, e32,m1,ta,mu +; RV64-FP-NEXT: vsetvli zero, zero, e32,mf2,ta,mu ; RV64-FP-NEXT: vfmv.f.s ft0, v8 ; RV64-FP-NEXT: fmv.x.w a0, ft0 ; RV64-FP-NEXT: ret @@ -203,7 +203,7 @@ define <1 x half> @bitcast_i16_v1f16(i16 %a) { ; CHECK-LABEL: bitcast_i16_v1f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vmv.v.x v8, a0 ; CHECK-NEXT: ret %b = bitcast i16 %a to <1 x half> @@ -213,13 +213,13 @@ define <2 x half> @bitcast_i32_v2f16(i32 %a) { ; RV32-FP-LABEL: bitcast_i32_v2f16: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.s.x v8, a0 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_i32_v2f16: ; RV64-FP: # %bb.0: -; RV64-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-FP-NEXT: vmv.v.x v8, a0 ; RV64-FP-NEXT: ret %b = bitcast i32 %a to <2 x half> @@ -229,13 +229,13 @@ define <1 x float> @bitcast_i32_v1f32(i32 %a) { ; RV32-FP-LABEL: bitcast_i32_v1f32: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.s.x v8, a0 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_i32_v1f32: ; RV64-FP: # %bb.0: -; RV64-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-FP-NEXT: vmv.v.x v8, a0 ; RV64-FP-NEXT: ret %b = bitcast i32 %a to <1 x float> @@ -306,7 +306,7 @@ ; CHECK-LABEL: bitcast_f16_v1i16: ; CHECK: # %bb.0: ; CHECK-NEXT: fmv.h.x ft0, a0 -; CHECK-NEXT: vsetivli a0, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; CHECK-NEXT: vfmv.s.f v8, ft0 ; CHECK-NEXT: ret %b = bitcast half %a to <1 x i16> @@ -317,7 +317,7 @@ ; CHECK-LABEL: bitcast_f16_v1f16: ; CHECK: # %bb.0: ; CHECK-NEXT: fmv.h.x ft0, a0 -; CHECK-NEXT: vsetivli a0, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; CHECK-NEXT: vfmv.s.f v8, ft0 ; CHECK-NEXT: ret %b = bitcast half %a to <1 x half> @@ -327,14 +327,14 @@ define <2 x i16> @bitcast_f32_v2i16(float %a) { ; RV32-FP-LABEL: bitcast_f32_v2i16: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.s.x v8, a0 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_f32_v2i16: ; RV64-FP: # %bb.0: ; RV64-FP-NEXT: fmv.w.x ft0, a0 -; RV64-FP-NEXT: vsetivli a0, 1, e32,m1,ta,mu +; RV64-FP-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV64-FP-NEXT: vfmv.s.f v8, ft0 ; RV64-FP-NEXT: ret %b = bitcast float %a to <2 x i16> @@ -344,14 +344,14 @@ define <2 x half> @bitcast_f32_v2f16(float %a) { ; RV32-FP-LABEL: bitcast_f32_v2f16: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.s.x v8, a0 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_f32_v2f16: ; RV64-FP: # %bb.0: ; RV64-FP-NEXT: fmv.w.x ft0, a0 -; RV64-FP-NEXT: vsetivli a0, 1, e32,m1,ta,mu +; RV64-FP-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV64-FP-NEXT: vfmv.s.f v8, ft0 ; RV64-FP-NEXT: ret %b = bitcast float %a to <2 x half> @@ -361,14 +361,14 @@ define <1 x i32> @bitcast_f32_v1i32(float %a) { ; RV32-FP-LABEL: bitcast_f32_v1i32: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.s.x v8, a0 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_f32_v1i32: ; RV64-FP: # %bb.0: ; RV64-FP-NEXT: fmv.w.x ft0, a0 -; RV64-FP-NEXT: vsetivli a0, 1, e32,m1,ta,mu +; RV64-FP-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV64-FP-NEXT: vfmv.s.f v8, ft0 ; RV64-FP-NEXT: ret %b = bitcast float %a to <1 x i32> @@ -378,14 +378,14 @@ define <1 x float> @bitcast_f32_v1f32(float %a) { ; RV32-FP-LABEL: bitcast_f32_v1f32: ; RV32-FP: # %bb.0: -; RV32-FP-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-FP-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-FP-NEXT: vmv.s.x v8, a0 ; RV32-FP-NEXT: ret ; ; RV64-FP-LABEL: bitcast_f32_v1f32: ; RV64-FP: # %bb.0: ; RV64-FP-NEXT: fmv.w.x ft0, a0 -; RV64-FP-NEXT: vsetivli a0, 1, e32,m1,ta,mu +; RV64-FP-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV64-FP-NEXT: vfmv.s.f v8, ft0 ; RV64-FP-NEXT: ret %b = bitcast float %a to <1 x float> diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-buildvec.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-buildvec.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-buildvec.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-buildvec.ll @@ -83,7 +83,7 @@ ; CHECK-LABEL: buildvec_merge0_v4f32: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a1, zero, 6 -; CHECK-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; CHECK-NEXT: lui a2, %hi(.LCPI4_0) ; CHECK-NEXT: flw ft0, %lo(.LCPI4_0)(a2) ; CHECK-NEXT: vmv.s.x v0, a1 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-conv.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-conv.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-conv.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-conv.ll @@ -7,11 +7,10 @@ define void @fpext_v2f16_v2f32(<2 x half>* %x, <2 x float>* %y) { ; CHECK-LABEL: fpext_v2f16_v2f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; CHECK-NEXT: vfwcvt.f.f.v v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vse32.v v26, (a1) ; CHECK-NEXT: ret %a = load <2 x half>, <2 x half>* %x @@ -23,9 +22,8 @@ define void @fpext_v2f16_v2f64(<2 x half>* %x, <2 x double>* %y) { ; CHECK-LABEL: fpext_v2f16_v2f64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfwcvt.f.f.v v26, v25 ; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfwcvt.f.f.v v25, v26 @@ -85,34 +83,34 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfwcvt.f.f.v v27, v26 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfwcvt.f.f.v v26, v27 +; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v25, 4 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v28, v27, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v27, v25 +; LMULMAX1-NEXT: vfwcvt.f.f.v v29, v28 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v28, v27 -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 +; LMULMAX1-NEXT: vfwcvt.f.f.v v28, v29 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v27, v25 +; LMULMAX1-NEXT: vfwcvt.f.f.v v29, v25 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v29, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 +; LMULMAX1-NEXT: vfwcvt.f.f.v v25, v29 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v27, v25 +; LMULMAX1-NEXT: vfwcvt.f.f.v v29, v27 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v25, v27 -; LMULMAX1-NEXT: addi a0, a1, 48 -; LMULMAX1-NEXT: vsetivli a2, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vse64.v v25, (a0) +; LMULMAX1-NEXT: vfwcvt.f.f.v v27, v29 ; LMULMAX1-NEXT: addi a0, a1, 32 -; LMULMAX1-NEXT: vse64.v v29, (a0) -; LMULMAX1-NEXT: vse64.v v28, (a1) +; LMULMAX1-NEXT: vsetivli a2, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vse64.v v27, (a0) +; LMULMAX1-NEXT: vse64.v v25, (a1) +; LMULMAX1-NEXT: addi a0, a1, 48 +; LMULMAX1-NEXT: vse64.v v28, (a0) ; LMULMAX1-NEXT: addi a0, a1, 16 ; LMULMAX1-NEXT: vse64.v v26, (a0) ; LMULMAX1-NEXT: ret @@ -125,11 +123,10 @@ define void @fpround_v2f32_v2f16(<2 x float>* %x, <2 x half>* %y) { ; CHECK-LABEL: fpround_v2f32_v2f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfncvt.f.f.w v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; CHECK-NEXT: vse16.v v26, (a1) ; CHECK-NEXT: ret %a = load <2 x float>, <2 x float>* %x @@ -147,7 +144,6 @@ ; CHECK-NEXT: vfncvt.rod.f.f.w v26, v25 ; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfncvt.f.f.w v25, v26 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; CHECK-NEXT: vse16.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -177,11 +173,8 @@ ; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v27, v25 ; LMULMAX1-NEXT: addi a0, sp, 8 -; LMULMAX1-NEXT: vsetivli a2, 4, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v27, (a0) -; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v25, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v25, (sp) ; LMULMAX1-NEXT: vsetivli a0, 8, e16,m1,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (sp) @@ -223,23 +216,20 @@ ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v27, v29 ; LMULMAX1-NEXT: addi a0, sp, 12 -; LMULMAX1-NEXT: vsetivli a2, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v27, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rod.f.f.w v27, v28 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v28, v27 ; LMULMAX1-NEXT: addi a0, sp, 4 -; LMULMAX1-NEXT: vsetivli a2, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v28, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rod.f.f.w v27, v26 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v26, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: addi a0, sp, 8 ; LMULMAX1-NEXT: vse16.v v26, (a0) -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: addi a0, sp, 8 ; LMULMAX1-NEXT: vle16.v v26, (a0) ; LMULMAX1-NEXT: addi a0, sp, 24 @@ -248,9 +238,8 @@ ; LMULMAX1-NEXT: vfncvt.rod.f.f.w v26, v25 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v25, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v25, (sp) -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (sp) ; LMULMAX1-NEXT: addi a0, sp, 16 ; LMULMAX1-NEXT: vse16.v v25, (a0) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-setcc.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-setcc.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-setcc.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-setcc.ll @@ -43,15 +43,16 @@ ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vle32.v v26, (a1) ; CHECK-NEXT: vmfne.vv v0, v25, v26 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <4 x float>, <4 x float>* %x @@ -68,15 +69,16 @@ ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vle32.v v26, (a1) ; CHECK-NEXT: vmfne.vv v0, v25, v26 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <4 x float>, <4 x float>* %x @@ -93,15 +95,16 @@ ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vle64.v v26, (a1) ; CHECK-NEXT: vmflt.vv v0, v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -118,15 +121,16 @@ ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vle64.v v26, (a1) ; CHECK-NEXT: vmflt.vv v0, v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -211,15 +215,16 @@ ; CHECK-NEXT: vle64.v v26, (a0) ; CHECK-NEXT: vle64.v v28, (a1) ; CHECK-NEXT: vmfle.vv v0, v26, v28 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <4 x double>, <4 x double>* %x @@ -236,15 +241,16 @@ ; CHECK-NEXT: vle64.v v26, (a0) ; CHECK-NEXT: vle64.v v28, (a1) ; CHECK-NEXT: vmfle.vv v0, v26, v28 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <4 x double>, <4 x double>* %x @@ -475,21 +481,23 @@ define void @fcmp_ord_vv_v4f16(<4 x half>* %x, <4 x half>* %y, <4 x i1>* %z) { ; CHECK-LABEL: fcmp_ord_vv_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vmfeq.vv v27, v25, v25 ; CHECK-NEXT: vmfeq.vv v25, v26, v26 ; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu ; CHECK-NEXT: vmand.mm v0, v25, v27 +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <4 x half>, <4 x half>* %x @@ -502,21 +510,23 @@ define void @fcmp_uno_vv_v4f16(<2 x half>* %x, <2 x half>* %y, <2 x i1>* %z) { ; CHECK-LABEL: fcmp_uno_vv_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vmfne.vv v27, v25, v25 ; CHECK-NEXT: vmfne.vv v25, v26, v26 ; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu ; CHECK-NEXT: vmor.mm v0, v25, v27 +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <2 x half>, <2 x half>* %x @@ -566,15 +576,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmfne.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x float>, <4 x float>* %x @@ -591,15 +602,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmfne.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x float>, <4 x float>* %x @@ -616,15 +628,16 @@ ; CHECK-NEXT: vsetivli a2, 2, e64,m1,ta,mu ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vmfgt.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -641,15 +654,16 @@ ; CHECK-NEXT: vsetivli a2, 2, e64,m1,ta,mu ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vmfgt.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -734,15 +748,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e64,m2,ta,mu ; CHECK-NEXT: vle64.v v26, (a0) ; CHECK-NEXT: vmfle.vf v0, v26, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x double>, <4 x double>* %x @@ -759,15 +774,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e64,m2,ta,mu ; CHECK-NEXT: vle64.v v26, (a0) ; CHECK-NEXT: vmfle.vf v0, v26, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x double>, <4 x double>* %x @@ -999,21 +1015,23 @@ define void @fcmp_ord_vf_v4f16(<4 x half>* %x, half %y, <4 x i1>* %z) { ; CHECK-LABEL: fcmp_ord_vf_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vfmv.v.f v26, fa0 ; CHECK-NEXT: vmfeq.vf v27, v26, fa0 ; CHECK-NEXT: vmfeq.vv v26, v25, v25 ; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu ; CHECK-NEXT: vmand.mm v0, v26, v27 +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x half>, <4 x half>* %x @@ -1027,21 +1045,23 @@ define void @fcmp_uno_vf_v4f16(<2 x half>* %x, half %y, <2 x i1>* %z) { ; CHECK-LABEL: fcmp_uno_vf_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vfmv.v.f v26, fa0 ; CHECK-NEXT: vmfne.vf v27, v26, fa0 ; CHECK-NEXT: vmfne.vv v26, v25, v25 ; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu ; CHECK-NEXT: vmor.mm v0, v26, v27 +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x half>, <2 x half>* %x @@ -1092,15 +1112,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmfne.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x float>, <4 x float>* %x @@ -1117,15 +1138,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmfne.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x float>, <4 x float>* %x @@ -1142,15 +1164,16 @@ ; CHECK-NEXT: vsetivli a2, 2, e64,m1,ta,mu ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vmflt.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -1167,15 +1190,16 @@ ; CHECK-NEXT: vsetivli a2, 2, e64,m1,ta,mu ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vmflt.vf v0, v25, fa0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -1260,15 +1284,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e64,m2,ta,mu ; CHECK-NEXT: vle64.v v26, (a0) ; CHECK-NEXT: vmfge.vf v0, v26, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x double>, <4 x double>* %x @@ -1285,15 +1310,16 @@ ; CHECK-NEXT: vsetivli a2, 4, e64,m2,ta,mu ; CHECK-NEXT: vle64.v v26, (a0) ; CHECK-NEXT: vmfge.vf v0, v26, fa0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x double>, <4 x double>* %x @@ -1525,21 +1551,23 @@ define void @fcmp_ord_fv_v4f16(<4 x half>* %x, half %y, <4 x i1>* %z) { ; CHECK-LABEL: fcmp_ord_fv_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vfmv.v.f v26, fa0 ; CHECK-NEXT: vmfeq.vv v27, v25, v25 ; CHECK-NEXT: vmfeq.vf v25, v26, fa0 ; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu ; CHECK-NEXT: vmand.mm v0, v25, v27 +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x half>, <4 x half>* %x @@ -1553,21 +1581,23 @@ define void @fcmp_uno_fv_v4f16(<2 x half>* %x, half %y, <2 x i1>* %z) { ; CHECK-LABEL: fcmp_uno_fv_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vfmv.v.f v26, fa0 ; CHECK-NEXT: vmfne.vv v27, v25, v25 ; CHECK-NEXT: vmfne.vf v25, v26, fa0 ; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu ; CHECK-NEXT: vmor.mm v0, v25, v27 +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x half>, <2 x half>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-shuffles.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-shuffles.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-shuffles.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-shuffles.ll @@ -6,9 +6,9 @@ ; CHECK-LABEL: shuffle_v4f16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 11 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0 ; CHECK-NEXT: ret %s = shufflevector <4 x half> %x, <4 x half> %y, <4 x i32> @@ -19,7 +19,7 @@ ; CHECK-LABEL: shuffle_v8f32: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 236 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0 @@ -34,7 +34,7 @@ ; CHECK-NEXT: addi a0, zero, 9 ; CHECK-NEXT: lui a1, %hi(.LCPI2_0) ; CHECK-NEXT: fld ft0, %lo(.LCPI2_0)(a1) -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; CHECK-NEXT: vfmerge.vfm v8, v8, ft0, v0 @@ -49,7 +49,7 @@ ; CHECK-NEXT: addi a0, zero, 6 ; CHECK-NEXT: lui a1, %hi(.LCPI3_0) ; CHECK-NEXT: fld ft0, %lo(.LCPI3_0)(a1) -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; CHECK-NEXT: vfmerge.vfm v8, v8, ft0, v0 @@ -63,7 +63,7 @@ ; RV32: # %bb.0: ; RV32-NEXT: lui a0, %hi(.LCPI4_0) ; RV32-NEXT: addi a0, a0, %lo(.LCPI4_0) -; RV32-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; RV32-NEXT: vrgatherei16.vv v26, v8, v25 @@ -88,7 +88,7 @@ ; RV32: # %bb.0: ; RV32-NEXT: lui a0, %hi(.LCPI5_0) ; RV32-NEXT: addi a0, a0, %lo(.LCPI5_0) -; RV32-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; RV32-NEXT: vrgatherei16.vv v26, v8, v25 @@ -112,17 +112,17 @@ ; RV32-LABEL: vrgather_shuffle_vv_v4f64: ; RV32: # %bb.0: ; RV32-NEXT: addi a0, zero, 1 -; RV32-NEXT: addi a1, zero, 8 -; RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu -; RV32-NEXT: vmv.s.x v0, a1 -; RV32-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV32-NEXT: vmv.s.x v25, a0 ; RV32-NEXT: vmv.v.i v28, 0 -; RV32-NEXT: vsetivli a0, 4, e16,m1,tu,mu +; RV32-NEXT: vsetivli a0, 4, e16,mf2,tu,mu ; RV32-NEXT: vslideup.vi v28, v25, 3 +; RV32-NEXT: addi a0, zero, 8 +; RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu +; RV32-NEXT: vmv.s.x v0, a0 ; RV32-NEXT: lui a0, %hi(.LCPI6_0) ; RV32-NEXT: addi a0, a0, %lo(.LCPI6_0) -; RV32-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; RV32-NEXT: vrgatherei16.vv v26, v8, v25 @@ -140,7 +140,7 @@ ; RV64-NEXT: vsetivli a0, 4, e64,m2,tu,mu ; RV64-NEXT: vslideup.vi v28, v26, 3 ; RV64-NEXT: addi a0, zero, 8 -; RV64-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a0 ; RV64-NEXT: lui a0, %hi(.LCPI6_0) ; RV64-NEXT: addi a0, a0, %lo(.LCPI6_0) @@ -159,16 +159,16 @@ ; RV32-LABEL: vrgather_shuffle_xv_v4f64: ; RV32: # %bb.0: ; RV32-NEXT: addi a0, zero, 12 -; RV32-NEXT: lui a1, %hi(.LCPI7_0) -; RV32-NEXT: fld ft0, %lo(.LCPI7_0)(a1) -; RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a0 +; RV32-NEXT: lui a0, %hi(.LCPI7_0) +; RV32-NEXT: addi a0, a0, %lo(.LCPI7_0) +; RV32-NEXT: lui a1, %hi(.LCPI7_1) +; RV32-NEXT: fld ft0, %lo(.LCPI7_1)(a1) +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu +; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; RV32-NEXT: vfmv.v.f v26, ft0 -; RV32-NEXT: lui a0, %hi(.LCPI7_1) -; RV32-NEXT: addi a0, a0, %lo(.LCPI7_1) -; RV32-NEXT: vsetivli a1, 4, e16,m1,ta,mu -; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: vsetivli a0, 4, e64,m2,tu,mu ; RV32-NEXT: vrgatherei16.vv v26, v8, v25, v0.t ; RV32-NEXT: vmv2r.v v8, v26 @@ -177,7 +177,7 @@ ; RV64-LABEL: vrgather_shuffle_xv_v4f64: ; RV64: # %bb.0: ; RV64-NEXT: addi a0, zero, 12 -; RV64-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a0 ; RV64-NEXT: lui a0, %hi(.LCPI7_0) ; RV64-NEXT: addi a0, a0, %lo(.LCPI7_0) @@ -198,15 +198,15 @@ ; RV32-LABEL: vrgather_shuffle_vx_v4f64: ; RV32: # %bb.0: ; RV32-NEXT: addi a0, zero, 3 -; RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu -; RV32-NEXT: vmv.s.x v0, a0 -; RV32-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV32-NEXT: vmv.s.x v25, a0 ; RV32-NEXT: vmv.v.i v28, 0 -; RV32-NEXT: lui a0, %hi(.LCPI8_0) -; RV32-NEXT: fld ft0, %lo(.LCPI8_0)(a0) -; RV32-NEXT: vsetivli a0, 2, e16,m1,tu,mu +; RV32-NEXT: vsetivli a1, 2, e16,mf2,tu,mu ; RV32-NEXT: vslideup.vi v28, v25, 1 +; RV32-NEXT: lui a1, %hi(.LCPI8_0) +; RV32-NEXT: fld ft0, %lo(.LCPI8_0)(a1) +; RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu +; RV32-NEXT: vmv.s.x v0, a0 ; RV32-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; RV32-NEXT: vfmv.v.f v26, ft0 ; RV32-NEXT: vsetivli a0, 4, e64,m2,tu,mu @@ -224,7 +224,7 @@ ; RV64-NEXT: vslideup.vi v28, v26, 1 ; RV64-NEXT: lui a1, %hi(.LCPI8_0) ; RV64-NEXT: fld ft0, %lo(.LCPI8_0)(a1) -; RV64-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a0 ; RV64-NEXT: vsetivli a0, 4, e64,m2,ta,mu ; RV64-NEXT: vfmv.v.f v26, ft0 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp.ll @@ -436,13 +436,12 @@ define void @copysign_neg_trunc_v4f16_v4f32(<4 x half>* %x, <4 x float>* %y) { ; CHECK-LABEL: copysign_neg_trunc_v4f16_v4f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; CHECK-NEXT: vle32.v v26, (a1) ; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vfncvt.f.f.w v27, v26 -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu ; CHECK-NEXT: vfsgnjn.vv v25, v25, v27 ; CHECK-NEXT: vse16.v v25, (a0) ; CHECK-NEXT: ret @@ -461,9 +460,8 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a2, 2, e64,m1,ta,mu ; CHECK-NEXT: vle64.v v25, (a0) -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v26, (a1) -; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfwcvt.f.f.v v27, v26 ; CHECK-NEXT: vsetivli a1, 2, e64,m1,ta,mu ; CHECK-NEXT: vfsgnjn.vv v25, v25, v27 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp2i.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp2i.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp2i.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp2i.ll @@ -7,7 +7,7 @@ define void @fp2si_v2f32_v2i32(<2 x float>* %x, <2 x i32>* %y) { ; CHECK-LABEL: fp2si_v2f32_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vfcvt.rtz.x.f.v v25, v25 ; CHECK-NEXT: vse32.v v25, (a1) @@ -21,7 +21,7 @@ define void @fp2ui_v2f32_v2i32(<2 x float>* %x, <2 x i32>* %y) { ; CHECK-LABEL: fp2ui_v2f32_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vfcvt.rtz.xu.f.v v25, v25 ; CHECK-NEXT: vse32.v v25, (a1) @@ -89,9 +89,8 @@ define void @fp2si_v2f32_v2i64(<2 x float>* %x, <2 x i64>* %y) { ; CHECK-LABEL: fp2si_v2f32_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfwcvt.rtz.x.f.v v26, v25 ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vse64.v v26, (a1) @@ -105,9 +104,8 @@ define void @fp2ui_v2f32_v2i64(<2 x float>* %x, <2 x i64>* %y) { ; CHECK-LABEL: fp2ui_v2f32_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfwcvt.rtz.xu.f.v v26, v25 ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vse64.v v26, (a1) @@ -205,9 +203,8 @@ define void @fp2si_v2f16_v2i64(<2 x half>* %x, <2 x i64>* %y) { ; CHECK-LABEL: fp2si_v2f16_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; CHECK-NEXT: vfwcvt.f.f.v v26, v25 ; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfwcvt.rtz.x.f.v v25, v26 @@ -223,9 +220,8 @@ define void @fp2ui_v2f16_v2i64(<2 x half>* %x, <2 x i64>* %y) { ; CHECK-LABEL: fp2ui_v2f16_v2i64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; CHECK-NEXT: vfwcvt.f.f.v v26, v25 ; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfwcvt.rtz.xu.f.v v25, v26 @@ -245,11 +241,10 @@ ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfncvt.rtz.x.f.w v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vnsrl.wi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v26, (a1) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -265,11 +260,10 @@ ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfncvt.rtz.xu.f.w v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vnsrl.wi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v26, (a1) ; CHECK-NEXT: ret %a = load <2 x double>, <2 x double>* %x @@ -289,63 +283,62 @@ ; LMULMAX8-NEXT: vnsrl.wi v25, v26, 0 ; LMULMAX8-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX8-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX8-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX8-NEXT: vse8.v v26, (a1) ; LMULMAX8-NEXT: ret ; ; LMULMAX1-LABEL: fp2si_v8f64_v8i8: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: addi a2, a0, 16 +; LMULMAX1-NEXT: addi a2, a0, 48 ; LMULMAX1-NEXT: vsetivli a3, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vle64.v v25, (a2) -; LMULMAX1-NEXT: vle64.v v26, (a0) ; LMULMAX1-NEXT: addi a2, a0, 32 -; LMULMAX1-NEXT: vle64.v v27, (a2) -; LMULMAX1-NEXT: addi a0, a0, 48 +; LMULMAX1-NEXT: vle64.v v26, (a2) +; LMULMAX1-NEXT: vle64.v v27, (a0) +; LMULMAX1-NEXT: addi a0, a0, 16 ; LMULMAX1-NEXT: vle64.v v28, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rtz.x.f.w v29, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v27, v29, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v29, v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vmv.v.i v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,tu,mu ; LMULMAX1-NEXT: vmv1r.v v30, v27 ; LMULMAX1-NEXT: vslideup.vi v30, v29, 0 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rtz.x.f.w v29, v28 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v28, v29, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,tu,mu ; LMULMAX1-NEXT: vslideup.vi v30, v29, 2 +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu +; LMULMAX1-NEXT: vmv.v.i v28, 0 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v30, 0 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vfncvt.rtz.x.f.w v28, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v28, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v27, v28, 0 +; LMULMAX1-NEXT: vfncvt.rtz.x.f.w v29, v26 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu +; LMULMAX1-NEXT: vnsrl.wi v26, v29, 0 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu +; LMULMAX1-NEXT: vnsrl.wi v29, v26, 0 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v27, v29, 0 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rtz.x.f.w v26, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v26, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,tu,mu ; LMULMAX1-NEXT: vslideup.vi v27, v26, 2 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v30, 4 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vse8.v v25, (a1) +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v27, 4 +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu +; LMULMAX1-NEXT: vse8.v v28, (a1) ; LMULMAX1-NEXT: ret %a = load <8 x double>, <8 x double>* %x %d = fptosi <8 x double> %a to <8 x i8> @@ -364,63 +357,62 @@ ; LMULMAX8-NEXT: vnsrl.wi v25, v26, 0 ; LMULMAX8-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX8-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX8-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX8-NEXT: vse8.v v26, (a1) ; LMULMAX8-NEXT: ret ; ; LMULMAX1-LABEL: fp2ui_v8f64_v8i8: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: addi a2, a0, 16 +; LMULMAX1-NEXT: addi a2, a0, 48 ; LMULMAX1-NEXT: vsetivli a3, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vle64.v v25, (a2) -; LMULMAX1-NEXT: vle64.v v26, (a0) ; LMULMAX1-NEXT: addi a2, a0, 32 -; LMULMAX1-NEXT: vle64.v v27, (a2) -; LMULMAX1-NEXT: addi a0, a0, 48 +; LMULMAX1-NEXT: vle64.v v26, (a2) +; LMULMAX1-NEXT: vle64.v v27, (a0) +; LMULMAX1-NEXT: addi a0, a0, 16 ; LMULMAX1-NEXT: vle64.v v28, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rtz.xu.f.w v29, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v27, v29, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v29, v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vmv.v.i v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,tu,mu ; LMULMAX1-NEXT: vmv1r.v v30, v27 ; LMULMAX1-NEXT: vslideup.vi v30, v29, 0 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rtz.xu.f.w v29, v28 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v28, v29, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v29, v28, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,tu,mu ; LMULMAX1-NEXT: vslideup.vi v30, v29, 2 +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu +; LMULMAX1-NEXT: vmv.v.i v28, 0 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v30, 0 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vfncvt.rtz.xu.f.w v28, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v26, v28, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu -; LMULMAX1-NEXT: vnsrl.wi v28, v26, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v27, v28, 0 +; LMULMAX1-NEXT: vfncvt.rtz.xu.f.w v29, v26 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu +; LMULMAX1-NEXT: vnsrl.wi v26, v29, 0 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu +; LMULMAX1-NEXT: vnsrl.wi v29, v26, 0 +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; LMULMAX1-NEXT: vslideup.vi v27, v29, 0 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.rtz.xu.f.w v26, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v26, 0 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,tu,mu ; LMULMAX1-NEXT: vslideup.vi v27, v26, 2 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vmv.v.i v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,tu,mu -; LMULMAX1-NEXT: vslideup.vi v25, v30, 4 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vse8.v v25, (a1) +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,tu,mu +; LMULMAX1-NEXT: vslideup.vi v28, v27, 4 +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu +; LMULMAX1-NEXT: vse8.v v28, (a1) ; LMULMAX1-NEXT: ret %a = load <8 x double>, <8 x double>* %x %d = fptoui <8 x double> %a to <8 x i8> diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-i2fp.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-i2fp.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-i2fp.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-i2fp.ll @@ -7,7 +7,7 @@ define void @si2fp_v2i32_v2f32(<2 x i32>* %x, <2 x float>* %y) { ; CHECK-LABEL: si2fp_v2i32_v2f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vfcvt.f.x.v v25, v25 ; CHECK-NEXT: vse32.v v25, (a1) @@ -21,7 +21,7 @@ define void @ui2fp_v2i32_v2f32(<2 x i32>* %x, <2 x float>* %y) { ; CHECK-LABEL: ui2fp_v2i32_v2f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vfcvt.f.xu.v v25, v25 ; CHECK-NEXT: vse32.v v25, (a1) @@ -89,7 +89,7 @@ define void @si2fp_v2i16_v2f64(<2 x i16>* %x, <2 x double>* %y) { ; CHECK-LABEL: si2fp_v2i16_v2f64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vsext.vf4 v26, v25 @@ -105,7 +105,7 @@ define void @ui2fp_v2i16_v2f64(<2 x i16>* %x, <2 x double>* %y) { ; CHECK-LABEL: ui2fp_v2i16_v2f64: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; CHECK-NEXT: vzext.vf4 v26, v25 @@ -133,28 +133,27 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v27, v26 ; LMULMAX1-NEXT: vfcvt.f.x.v v26, v27 -; LMULMAX1-NEXT: vsext.vf4 v27, v25 -; LMULMAX1-NEXT: vfcvt.f.x.v v27, v27 ; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v28, v25 -; LMULMAX1-NEXT: vfcvt.f.x.v v28, v28 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 +; LMULMAX1-NEXT: vslidedown.vi v27, v25, 4 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v28, v27, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v29, v28 +; LMULMAX1-NEXT: vfcvt.f.x.v v28, v29 ; LMULMAX1-NEXT: vsext.vf4 v29, v25 ; LMULMAX1-NEXT: vfcvt.f.x.v v25, v29 -; LMULMAX1-NEXT: addi a0, a1, 48 -; LMULMAX1-NEXT: vse64.v v25, (a0) +; LMULMAX1-NEXT: vsext.vf4 v29, v27 +; LMULMAX1-NEXT: vfcvt.f.x.v v27, v29 ; LMULMAX1-NEXT: addi a0, a1, 32 +; LMULMAX1-NEXT: vse64.v v27, (a0) +; LMULMAX1-NEXT: vse64.v v25, (a1) +; LMULMAX1-NEXT: addi a0, a1, 48 ; LMULMAX1-NEXT: vse64.v v28, (a0) -; LMULMAX1-NEXT: vse64.v v27, (a1) ; LMULMAX1-NEXT: addi a0, a1, 16 ; LMULMAX1-NEXT: vse64.v v26, (a0) ; LMULMAX1-NEXT: ret @@ -179,28 +178,27 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v27, v26 ; LMULMAX1-NEXT: vfcvt.f.xu.v v26, v27 -; LMULMAX1-NEXT: vzext.vf4 v27, v25 -; LMULMAX1-NEXT: vfcvt.f.xu.v v27, v27 ; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v28, v25 -; LMULMAX1-NEXT: vfcvt.f.xu.v v28, v28 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 2 +; LMULMAX1-NEXT: vslidedown.vi v27, v25, 4 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v28, v27, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v29, v28 +; LMULMAX1-NEXT: vfcvt.f.xu.v v28, v29 ; LMULMAX1-NEXT: vzext.vf4 v29, v25 ; LMULMAX1-NEXT: vfcvt.f.xu.v v25, v29 -; LMULMAX1-NEXT: addi a0, a1, 48 -; LMULMAX1-NEXT: vse64.v v25, (a0) +; LMULMAX1-NEXT: vzext.vf4 v29, v27 +; LMULMAX1-NEXT: vfcvt.f.xu.v v27, v29 ; LMULMAX1-NEXT: addi a0, a1, 32 +; LMULMAX1-NEXT: vse64.v v27, (a0) +; LMULMAX1-NEXT: vse64.v v25, (a1) +; LMULMAX1-NEXT: addi a0, a1, 48 ; LMULMAX1-NEXT: vse64.v v28, (a0) -; LMULMAX1-NEXT: vse64.v v27, (a1) ; LMULMAX1-NEXT: addi a0, a1, 16 ; LMULMAX1-NEXT: vse64.v v26, (a0) ; LMULMAX1-NEXT: ret @@ -217,9 +215,8 @@ ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfncvt.f.x.w v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfncvt.f.f.w v25, v26 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; CHECK-NEXT: vse16.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x i64>, <2 x i64>* %x @@ -235,9 +232,8 @@ ; CHECK-NEXT: vle64.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfncvt.f.xu.w v26, v25 -; CHECK-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfncvt.f.f.w v25, v26 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; CHECK-NEXT: vse16.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x i64>, <2 x i64>* %x @@ -272,37 +268,33 @@ ; LMULMAX1-NEXT: vle64.v v28, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.x.w v29, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v27, v29 ; LMULMAX1-NEXT: addi a0, sp, 12 -; LMULMAX1-NEXT: vsetivli a2, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v27, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.x.w v27, v28 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v28, v27 ; LMULMAX1-NEXT: addi a0, sp, 4 -; LMULMAX1-NEXT: vsetivli a2, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v28, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.x.w v27, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v26, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: addi a0, sp, 8 ; LMULMAX1-NEXT: vse16.v v26, (a0) -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: addi a0, sp, 8 ; LMULMAX1-NEXT: vle16.v v26, (a0) ; LMULMAX1-NEXT: addi a0, sp, 24 ; LMULMAX1-NEXT: vse16.v v26, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.x.w v26, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v25, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v25, (sp) -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (sp) ; LMULMAX1-NEXT: addi a0, sp, 16 ; LMULMAX1-NEXT: vse16.v v25, (a0) @@ -344,37 +336,33 @@ ; LMULMAX1-NEXT: vle64.v v28, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.xu.w v29, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v27, v29 ; LMULMAX1-NEXT: addi a0, sp, 12 -; LMULMAX1-NEXT: vsetivli a2, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v27, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.xu.w v27, v28 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v28, v27 ; LMULMAX1-NEXT: addi a0, sp, 4 -; LMULMAX1-NEXT: vsetivli a2, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v28, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.xu.w v27, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v26, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: addi a0, sp, 8 ; LMULMAX1-NEXT: vse16.v v26, (a0) -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: addi a0, sp, 8 ; LMULMAX1-NEXT: vle16.v v26, (a0) ; LMULMAX1-NEXT: addi a0, sp, 24 ; LMULMAX1-NEXT: vse16.v v26, (a0) ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfncvt.f.xu.w v26, v25 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; LMULMAX1-NEXT: vfncvt.f.f.w v25, v26 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu ; LMULMAX1-NEXT: vse16.v v25, (sp) -; LMULMAX1-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vle16.v v25, (sp) ; LMULMAX1-NEXT: addi a0, sp, 16 ; LMULMAX1-NEXT: vse16.v v25, (a0) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert-subvector.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert-subvector.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert-subvector.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert-subvector.ll @@ -7,7 +7,7 @@ define @insert_nxv8i32_v2i32_0( %vec, <2 x i32>* %svp) { ; CHECK-LABEL: insert_nxv8i32_v2i32_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v28, (a0) ; CHECK-NEXT: vsetivli a0, 2, e32,m4,tu,mu ; CHECK-NEXT: vslideup.vi v8, v28, 0 @@ -20,7 +20,7 @@ define @insert_nxv8i32_v2i32_2( %vec, <2 x i32>* %svp) { ; CHECK-LABEL: insert_nxv8i32_v2i32_2: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v28, (a0) ; CHECK-NEXT: vsetivli a0, 4, e32,m4,tu,mu ; CHECK-NEXT: vslideup.vi v8, v28, 2 @@ -33,7 +33,7 @@ define @insert_nxv8i32_v2i32_6( %vec, <2 x i32>* %svp) { ; CHECK-LABEL: insert_nxv8i32_v2i32_6: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v28, (a0) ; CHECK-NEXT: vsetivli a0, 8, e32,m4,tu,mu ; CHECK-NEXT: vslideup.vi v8, v28, 6 @@ -121,7 +121,7 @@ define @insert_nxv8i32_undef_v2i32_0(<2 x i32>* %svp) { ; CHECK-LABEL: insert_nxv8i32_undef_v2i32_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v8, (a0) ; CHECK-NEXT: ret %sv = load <2 x i32>, <2 x i32>* %svp @@ -132,7 +132,7 @@ define void @insert_v4i32_v2i32_0(<4 x i32>* %vp, <2 x i32>* %svp) { ; CHECK-LABEL: insert_v4i32_v2i32_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a1) ; CHECK-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) @@ -151,7 +151,7 @@ define void @insert_v4i32_v2i32_2(<4 x i32>* %vp, <2 x i32>* %svp) { ; CHECK-LABEL: insert_v4i32_v2i32_2: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a1) ; CHECK-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) @@ -170,7 +170,7 @@ define void @insert_v4i32_undef_v2i32_0(<4 x i32>* %vp, <2 x i32>* %svp) { ; CHECK-LABEL: insert_v4i32_undef_v2i32_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a1) ; CHECK-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 @@ -188,7 +188,7 @@ define void @insert_v8i32_v2i32_0(<8 x i32>* %vp, <2 x i32>* %svp) { ; LMULMAX2-LABEL: insert_v8i32_v2i32_0: ; LMULMAX2: # %bb.0: -; LMULMAX2-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vle32.v v26, (a1) ; LMULMAX2-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vle32.v v28, (a0) @@ -200,7 +200,7 @@ ; ; LMULMAX1-LABEL: insert_v8i32_v2i32_0: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vle32.v v25, (a1) ; LMULMAX1-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vle32.v v26, (a0) @@ -219,7 +219,7 @@ define void @insert_v8i32_v2i32_2(<8 x i32>* %vp, <2 x i32>* %svp) { ; LMULMAX2-LABEL: insert_v8i32_v2i32_2: ; LMULMAX2: # %bb.0: -; LMULMAX2-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vle32.v v26, (a1) ; LMULMAX2-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vle32.v v28, (a0) @@ -231,7 +231,7 @@ ; ; LMULMAX1-LABEL: insert_v8i32_v2i32_2: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vle32.v v25, (a1) ; LMULMAX1-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vle32.v v26, (a0) @@ -250,7 +250,7 @@ define void @insert_v8i32_v2i32_6(<8 x i32>* %vp, <2 x i32>* %svp) { ; LMULMAX2-LABEL: insert_v8i32_v2i32_6: ; LMULMAX2: # %bb.0: -; LMULMAX2-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vle32.v v26, (a1) ; LMULMAX2-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vle32.v v28, (a0) @@ -262,7 +262,7 @@ ; ; LMULMAX1-LABEL: insert_v8i32_v2i32_6: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vle32.v v25, (a1) ; LMULMAX1-NEXT: addi a0, a0, 16 ; LMULMAX1-NEXT: vsetivli a1, 4, e32,m1,ta,mu @@ -282,7 +282,7 @@ define void @insert_v8i32_undef_v2i32_6(<8 x i32>* %vp, <2 x i32>* %svp) { ; LMULMAX2-LABEL: insert_v8i32_undef_v2i32_6: ; LMULMAX2: # %bb.0: -; LMULMAX2-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX2-NEXT: vle32.v v26, (a1) ; LMULMAX2-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vslideup.vi v28, v26, 6 @@ -291,7 +291,7 @@ ; ; LMULMAX1-LABEL: insert_v8i32_undef_v2i32_6: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vle32.v v25, (a1) ; LMULMAX1-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vslideup.vi v26, v25, 2 @@ -307,13 +307,13 @@ define void @insert_v4i16_v2i16_0(<4 x i16>* %vp, <2 x i16>* %svp) { ; CHECK-LABEL: insert_v4i16_v2i16_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v26, (a1) -; CHECK-NEXT: vsetivli a1, 2, e16,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v25, v26, 0 -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vse16.v v25, (a0) ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %vp @@ -326,13 +326,13 @@ define void @insert_v4i16_v2i16_2(<4 x i16>* %vp, <2 x i16>* %svp) { ; CHECK-LABEL: insert_v4i16_v2i16_2: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) -; CHECK-NEXT: vsetivli a2, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v26, (a1) -; CHECK-NEXT: vsetivli a1, 4, e16,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v25, v26, 2 -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vse16.v v25, (a0) ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %vp @@ -350,7 +350,7 @@ ; LMULMAX2-NEXT: vle1.v v25, (a0) ; LMULMAX2-NEXT: vsetivli a3, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vle1.v v26, (a1) -; LMULMAX2-NEXT: vsetivli a1, 1, e8,m1,tu,mu +; LMULMAX2-NEXT: vsetivli a1, 1, e8,mf4,tu,mu ; LMULMAX2-NEXT: vslideup.vi v25, v26, 0 ; LMULMAX2-NEXT: vsetvli a1, a2, e8,m2,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a0) @@ -362,7 +362,7 @@ ; LMULMAX1-NEXT: vle1.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a2, 8, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v26, (a1) -; LMULMAX1-NEXT: vsetivli a1, 1, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 1, e8,mf8,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a0) @@ -382,7 +382,7 @@ ; LMULMAX2-NEXT: vle1.v v25, (a0) ; LMULMAX2-NEXT: vsetivli a3, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vle1.v v26, (a1) -; LMULMAX2-NEXT: vsetivli a1, 3, e8,m1,tu,mu +; LMULMAX2-NEXT: vsetivli a1, 3, e8,mf4,tu,mu ; LMULMAX2-NEXT: vslideup.vi v25, v26, 2 ; LMULMAX2-NEXT: vsetvli a1, a2, e8,m2,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a0) @@ -395,7 +395,7 @@ ; LMULMAX1-NEXT: vle1.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a2, 8, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v26, (a1) -; LMULMAX1-NEXT: vsetivli a1, 1, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a1, 1, e8,mf8,tu,mu ; LMULMAX1-NEXT: vslideup.vi v25, v26, 0 ; LMULMAX1-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a0) @@ -411,20 +411,22 @@ ; CHECK-LABEL: insert_v8i1_v4i1_0: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v27, (a0) +; CHECK-NEXT: vle1.v v0, (a0) ; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v0, (a1) +; CHECK-NEXT: vle1.v v27, (a1) +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 ; CHECK-NEXT: vmv1r.v v0, v27 ; CHECK-NEXT: vmerge.vim v26, v26, 1, v0 -; CHECK-NEXT: vsetivli a1, 4, e8,m1,tu,mu -; CHECK-NEXT: vslideup.vi v26, v25, 0 +; CHECK-NEXT: vsetivli a1, 4, e8,mf2,tu,mu +; CHECK-NEXT: vslideup.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu +; CHECK-NEXT: vmsne.vi v26, v25, 0 ; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu -; CHECK-NEXT: vmsne.vi v25, v26, 0 -; CHECK-NEXT: vse1.v v25, (a0) +; CHECK-NEXT: vse1.v v26, (a0) ; CHECK-NEXT: ret %v = load <8 x i1>, <8 x i1>* %vp %sv = load <4 x i1>, <4 x i1>* %svp @@ -437,20 +439,22 @@ ; CHECK-LABEL: insert_v8i1_v4i1_4: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v27, (a0) +; CHECK-NEXT: vle1.v v0, (a0) ; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v0, (a1) +; CHECK-NEXT: vle1.v v27, (a1) +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 ; CHECK-NEXT: vmv1r.v v0, v27 ; CHECK-NEXT: vmerge.vim v26, v26, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,tu,mu -; CHECK-NEXT: vslideup.vi v26, v25, 4 +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,tu,mu +; CHECK-NEXT: vslideup.vi v25, v26, 4 +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu +; CHECK-NEXT: vmsne.vi v26, v25, 0 ; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu -; CHECK-NEXT: vmsne.vi v25, v26, 0 -; CHECK-NEXT: vse1.v v25, (a0) +; CHECK-NEXT: vse1.v v26, (a0) ; CHECK-NEXT: ret %v = load <8 x i1>, <8 x i1>* %vp %sv = load <4 x i1>, <4 x i1>* %svp @@ -462,7 +466,7 @@ define @insert_nxv2i16_v2i16_0( %v, <2 x i16>* %svp) { ; CHECK-LABEL: insert_nxv2i16_v2i16_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 2, e16,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v8, v25, 0 @@ -475,7 +479,7 @@ define @insert_nxv2i16_v2i16_2( %v, <2 x i16>* %svp) { ; CHECK-LABEL: insert_nxv2i16_v2i16_2: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 6, e16,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v8, v25, 4 @@ -489,18 +493,20 @@ ; CHECK-LABEL: insert_nxv2i1_v4i1_0: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v27, (a0) -; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu +; CHECK-NEXT: vle1.v v26, (a0) +; CHECK-NEXT: vmv1r.v v27, v0 +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 +; CHECK-NEXT: vmv1r.v v0, v26 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 ; CHECK-NEXT: vmv1r.v v0, v27 ; CHECK-NEXT: vmerge.vim v26, v26, 1, v0 ; CHECK-NEXT: vsetivli a0, 4, e8,mf4,tu,mu -; CHECK-NEXT: vslideup.vi v25, v26, 0 +; CHECK-NEXT: vslideup.vi v26, v25, 0 ; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu -; CHECK-NEXT: vmsne.vi v0, v25, 0 +; CHECK-NEXT: vmsne.vi v0, v26, 0 ; CHECK-NEXT: ret %sv = load <4 x i1>, <4 x i1>* %svp %c = call @llvm.experimental.vector.insert.v4i1.nxv2i1( %v, <4 x i1> %sv, i64 0) @@ -511,18 +517,20 @@ ; CHECK-LABEL: insert_nxv2i1_v4i1_6: ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v27, (a0) -; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu +; CHECK-NEXT: vle1.v v26, (a0) +; CHECK-NEXT: vmv1r.v v27, v0 +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 +; CHECK-NEXT: vmv1r.v v0, v26 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 ; CHECK-NEXT: vmv1r.v v0, v27 ; CHECK-NEXT: vmerge.vim v26, v26, 1, v0 ; CHECK-NEXT: vsetivli a0, 10, e8,mf4,tu,mu -; CHECK-NEXT: vslideup.vi v25, v26, 6 +; CHECK-NEXT: vslideup.vi v26, v25, 6 ; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu -; CHECK-NEXT: vmsne.vi v0, v25, 0 +; CHECK-NEXT: vmsne.vi v0, v26, 0 ; CHECK-NEXT: ret %sv = load <4 x i1>, <4 x i1>* %svp %c = call @llvm.experimental.vector.insert.v4i1.nxv2i1( %v, <4 x i1> %sv, i64 6) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll @@ -103,7 +103,7 @@ define void @buildvec_dominant1_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: buildvec_dominant1_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, -1 ; CHECK-NEXT: vse8.v v25, (a0) ; CHECK-NEXT: ret @@ -114,7 +114,7 @@ define void @buildvec_dominant2_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: buildvec_dominant2_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, -1 ; CHECK-NEXT: vmv.s.x v25, zero ; CHECK-NEXT: vse8.v v25, (a0) @@ -178,9 +178,9 @@ ; CHECK-LABEL: buildvec_seq_v8i8_v4i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a1, zero, 513 -; CHECK-NEXT: vsetivli a2, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmv.v.x v25, a1 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse8.v v25, (a0) ; CHECK-NEXT: ret store <8 x i8> , <8 x i8>* %x @@ -192,9 +192,9 @@ ; RV32: # %bb.0: ; RV32-NEXT: lui a1, 48 ; RV32-NEXT: addi a1, a1, 513 -; RV32-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; RV32-NEXT: vmv.v.x v25, a1 -; RV32-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; RV32-NEXT: vse8.v v25, (a0) ; RV32-NEXT: ret ; @@ -202,9 +202,9 @@ ; RV64: # %bb.0: ; RV64-NEXT: lui a1, 48 ; RV64-NEXT: addiw a1, a1, 513 -; RV64-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; RV64-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; RV64-NEXT: vmv.v.x v25, a1 -; RV64-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; RV64-NEXT: vse8.v v25, (a0) ; RV64-NEXT: ret store <8 x i8> , <8 x i8>* %x @@ -266,15 +266,15 @@ ; RV32-LABEL: buildvec_seq_v9i8: ; RV32: # %bb.0: ; RV32-NEXT: addi a1, zero, 73 -; RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 -; RV32-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; RV32-NEXT: vmv.v.i v25, 2 ; RV32-NEXT: vmerge.vim v25, v25, 1, v0 ; RV32-NEXT: addi a1, zero, 36 -; RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 -; RV32-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; RV32-NEXT: vmerge.vim v25, v25, 3, v0 ; RV32-NEXT: vse8.v v25, (a0) ; RV32-NEXT: addi a1, zero, 3 @@ -301,9 +301,9 @@ ; CHECK-LABEL: buildvec_seq_v4i16_v2i32: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a1, zero, -127 -; CHECK-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; CHECK-NEXT: vmv.v.x v25, a1 -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vse16.v v25, (a0) ; CHECK-NEXT: ret store <4 x i16> , <4 x i16>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-exttrunc.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-exttrunc.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-exttrunc.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-exttrunc.ll @@ -9,7 +9,7 @@ define void @sext_v4i8_v4i32(<4 x i8>* %x, <4 x i32>* %z) { ; CHECK-LABEL: sext_v4i8_v4i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; CHECK-NEXT: vsext.vf4 v26, v25 @@ -24,7 +24,7 @@ define void @zext_v4i8_v4i32(<4 x i8>* %x, <4 x i32>* %z) { ; CHECK-LABEL: zext_v4i8_v4i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; CHECK-NEXT: vzext.vf4 v26, v25 @@ -39,7 +39,7 @@ define void @sext_v8i8_v8i32(<8 x i8>* %x, <8 x i32>* %z) { ; LMULMAX8-LABEL: sext_v8i8_v8i32: ; LMULMAX8: # %bb.0: -; LMULMAX8-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; LMULMAX8-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; LMULMAX8-NEXT: vle8.v v25, (a0) ; LMULMAX8-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; LMULMAX8-NEXT: vsext.vf4 v26, v25 @@ -48,7 +48,7 @@ ; ; LMULMAX2-LABEL: sext_v8i8_v8i32: ; LMULMAX2: # %bb.0: -; LMULMAX2-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vle8.v v25, (a0) ; LMULMAX2-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vsext.vf4 v26, v25 @@ -57,11 +57,11 @@ ; ; LMULMAX1-LABEL: sext_v8i8_v8i32: ; LMULMAX1: # %bb.0: -; LMULMAX1-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vle8.v v25, (a0) ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v26, v25 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v27, v25 @@ -118,45 +118,43 @@ ; LMULMAX1-NEXT: addi a2, a0, 16 ; LMULMAX1-NEXT: vle8.v v25, (a2) ; LMULMAX1-NEXT: vle8.v v26, (a0) -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v27, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v28, v27 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v29, v27 -; LMULMAX1-NEXT: vsext.vf4 v27, v25 ; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 8 +; LMULMAX1-NEXT: vslidedown.vi v27, v25, 8 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v29, v27, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v30, v25 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v25, v25, 4 +; LMULMAX1-NEXT: vsext.vf4 v30, v29 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v29, v26, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v31, v25 -; LMULMAX1-NEXT: vsext.vf4 v25, v26 +; LMULMAX1-NEXT: vsext.vf4 v31, v29 ; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 8 +; LMULMAX1-NEXT: vslidedown.vi v29, v26, 8 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v8, v29, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v8, v26 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v26, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v9, v26 -; LMULMAX1-NEXT: addi a0, a1, 48 -; LMULMAX1-NEXT: vse32.v v9, (a0) +; LMULMAX1-NEXT: vsext.vf4 v9, v8 +; LMULMAX1-NEXT: vsext.vf4 v8, v25 +; LMULMAX1-NEXT: vsext.vf4 v25, v27 +; LMULMAX1-NEXT: vsext.vf4 v27, v26 +; LMULMAX1-NEXT: vsext.vf4 v26, v29 ; LMULMAX1-NEXT: addi a0, a1, 32 -; LMULMAX1-NEXT: vse32.v v8, (a0) -; LMULMAX1-NEXT: vse32.v v25, (a1) -; LMULMAX1-NEXT: addi a0, a1, 112 -; LMULMAX1-NEXT: vse32.v v31, (a0) +; LMULMAX1-NEXT: vse32.v v26, (a0) +; LMULMAX1-NEXT: vse32.v v27, (a1) ; LMULMAX1-NEXT: addi a0, a1, 96 -; LMULMAX1-NEXT: vse32.v v30, (a0) +; LMULMAX1-NEXT: vse32.v v25, (a0) ; LMULMAX1-NEXT: addi a0, a1, 64 -; LMULMAX1-NEXT: vse32.v v27, (a0) +; LMULMAX1-NEXT: vse32.v v8, (a0) +; LMULMAX1-NEXT: addi a0, a1, 48 +; LMULMAX1-NEXT: vse32.v v9, (a0) ; LMULMAX1-NEXT: addi a0, a1, 16 -; LMULMAX1-NEXT: vse32.v v29, (a0) +; LMULMAX1-NEXT: vse32.v v31, (a0) +; LMULMAX1-NEXT: addi a0, a1, 112 +; LMULMAX1-NEXT: vse32.v v30, (a0) ; LMULMAX1-NEXT: addi a0, a1, 80 ; LMULMAX1-NEXT: vse32.v v28, (a0) ; LMULMAX1-NEXT: ret @@ -175,7 +173,6 @@ ; CHECK-NEXT: vnsrl.wi v26, v25, 0 ; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vnsrl.wi v25, v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu ; CHECK-NEXT: vse8.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x i32>, <4 x i32>* %x @@ -193,7 +190,6 @@ ; LMULMAX8-NEXT: vnsrl.wi v25, v26, 0 ; LMULMAX8-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX8-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX8-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX8-NEXT: vse8.v v26, (a1) ; LMULMAX8-NEXT: ret ; @@ -205,7 +201,6 @@ ; LMULMAX2-NEXT: vnsrl.wi v25, v26, 0 ; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX2-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; LMULMAX2-NEXT: vse8.v v26, (a1) ; LMULMAX2-NEXT: ret ; @@ -219,17 +214,17 @@ ; LMULMAX1-NEXT: vnsrl.wi v27, v25, 0 ; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vmv.v.i v27, 0 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v27, v25, 0 ; LMULMAX1-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v25, v26, 0 ; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; LMULMAX1-NEXT: vnsrl.wi v26, v25, 0 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,tu,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,tu,mu ; LMULMAX1-NEXT: vslideup.vi v27, v26, 4 -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vse8.v v27, (a1) ; LMULMAX1-NEXT: ret %a = load <8 x i32>, <8 x i32>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-setcc.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-setcc.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-setcc.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-setcc.ll @@ -82,10 +82,11 @@ define void @setge_vv_v8i8(<8 x i8>* %x, <8 x i8>* %y, <8 x i1>* %z) { ; CHECK-LABEL: setge_vv_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vle8.v v26, (a1) ; CHECK-NEXT: vmsle.vv v27, v26, v25 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v27, (a2) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -165,10 +166,11 @@ define void @setule_vv_v8i8(<8 x i8>* %x, <8 x i8>* %y, <8 x i1>* %z) { ; CHECK-LABEL: setule_vv_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vle8.v v26, (a1) ; CHECK-NEXT: vmsleu.vv v27, v25, v26 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v27, (a2) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -248,10 +250,11 @@ define void @setge_vx_v8i8(<8 x i8>* %x, i8 %y, <8 x i1>* %z) { ; CHECK-LABEL: setge_vx_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.v.x v26, a1 ; CHECK-NEXT: vmsle.vv v27, v26, v25 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v27, (a2) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -333,9 +336,10 @@ define void @setule_vx_v8i8(<8 x i8>* %x, i8 %y, <8 x i1>* %z) { ; CHECK-LABEL: setule_vx_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmsleu.vx v26, v25, a1 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v26, (a2) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -416,9 +420,10 @@ define void @setge_xv_v8i8(<8 x i8>* %x, i8 %y, <8 x i1>* %z) { ; CHECK-LABEL: setge_xv_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmsle.vx v26, v25, a1 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v26, (a2) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -500,10 +505,11 @@ define void @setule_xv_v8i8(<8 x i8>* %x, i8 %y, <8 x i1>* %z) { ; CHECK-LABEL: setule_xv_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.v.x v26, a1 ; CHECK-NEXT: vmsleu.vv v27, v26, v25 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v27, (a2) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -584,9 +590,10 @@ define void @setge_vi_v8i8(<8 x i8>* %x, <8 x i1>* %z) { ; CHECK-LABEL: setge_vi_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmsgt.vi v26, v25, -1 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v26, (a1) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x @@ -668,9 +675,10 @@ define void @setule_vi_v8i8(<8 x i8>* %x, <8 x i1>* %z) { ; CHECK-LABEL: setule_vi_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmsleu.vi v26, v25, 5 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v26, (a1) ; CHECK-NEXT: ret %a = load <8 x i8>, <8 x i8>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll @@ -6,9 +6,9 @@ ; CHECK-LABEL: shuffle_v4i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 11 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0 ; CHECK-NEXT: ret %s = shufflevector <4 x i16> %x, <4 x i16> %y, <4 x i32> @@ -19,7 +19,7 @@ ; CHECK-LABEL: shuffle_v8i32: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 203 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; CHECK-NEXT: vmerge.vvm v8, v10, v8, v0 @@ -32,9 +32,9 @@ ; CHECK-LABEL: shuffle_xv_v4i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 9 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmerge.vim v8, v8, 5, v0 ; CHECK-NEXT: ret %s = shufflevector <4 x i16> , <4 x i16> %x, <4 x i32> @@ -45,9 +45,9 @@ ; CHECK-LABEL: shuffle_vx_v4i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 6 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmerge.vim v8, v8, 5, v0 ; CHECK-NEXT: ret %s = shufflevector <4 x i16> %x, <4 x i16> , <4 x i32> @@ -59,7 +59,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: lui a0, %hi(.LCPI4_0) ; CHECK-NEXT: addi a0, a0, %lo(.LCPI4_0) -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vrgather.vv v25, v8, v26 ; CHECK-NEXT: vmv1r.v v8, v25 @@ -73,7 +73,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: lui a0, %hi(.LCPI5_0) ; CHECK-NEXT: addi a0, a0, %lo(.LCPI5_0) -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vrgather.vv v25, v8, v26 ; CHECK-NEXT: vmv1r.v v8, v25 @@ -86,20 +86,20 @@ ; CHECK-LABEL: vrgather_shuffle_vv_v4i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 1 -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmv.s.x v25, a0 ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 3 ; CHECK-NEXT: addi a0, zero, 8 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: lui a0, %hi(.LCPI6_0) ; CHECK-NEXT: addi a0, a0, %lo(.LCPI6_0) -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v27, (a0) ; CHECK-NEXT: vrgather.vv v25, v8, v27 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,tu,mu ; CHECK-NEXT: vrgather.vv v25, v9, v26, v0.t ; CHECK-NEXT: vmv1r.v v8, v25 ; CHECK-NEXT: ret @@ -111,14 +111,14 @@ ; CHECK-LABEL: vrgather_shuffle_xv_v4i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 12 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: lui a0, %hi(.LCPI7_0) ; CHECK-NEXT: addi a0, a0, %lo(.LCPI7_0) -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vmv.v.i v25, 5 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,tu,mu ; CHECK-NEXT: vrgather.vv v25, v8, v26, v0.t ; CHECK-NEXT: vmv1r.v v8, v25 ; CHECK-NEXT: ret @@ -130,16 +130,16 @@ ; CHECK-LABEL: vrgather_shuffle_vx_v4i16: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 3 -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmv.s.x v25, a0 ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e16,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 1 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v25, 5 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,tu,mu ; CHECK-NEXT: vrgather.vv v25, v8, v26, v0.t ; CHECK-NEXT: vmv1r.v v8, v25 ; CHECK-NEXT: ret @@ -204,7 +204,7 @@ ; RV32-NEXT: vsetivli a1, 8, e16,m1,ta,mu ; RV32-NEXT: vmv.s.x v25, a0 ; RV32-NEXT: addi a0, zero, 36 -; RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a0 ; RV32-NEXT: vsetivli a0, 8, e16,m1,ta,mu ; RV32-NEXT: vmv.v.i v26, 0 @@ -212,7 +212,7 @@ ; RV32-NEXT: vsetivli a0, 8, e16,m1,tu,mu ; RV32-NEXT: vslideup.vi v26, v25, 7 ; RV32-NEXT: addi a0, zero, 164 -; RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a0 ; RV32-NEXT: lui a0, %hi(.LCPI11_0) ; RV32-NEXT: addi a0, a0, %lo(.LCPI11_0) @@ -231,7 +231,7 @@ ; RV64-NEXT: vsetivli a1, 8, e64,m4,ta,mu ; RV64-NEXT: vmv.s.x v28, a0 ; RV64-NEXT: addi a0, zero, 36 -; RV64-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a0 ; RV64-NEXT: vsetivli a0, 8, e64,m4,ta,mu ; RV64-NEXT: vmv.v.i v16, 0 @@ -239,7 +239,7 @@ ; RV64-NEXT: vsetivli a0, 8, e64,m4,tu,mu ; RV64-NEXT: vslideup.vi v16, v28, 7 ; RV64-NEXT: addi a0, zero, 164 -; RV64-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a0 ; RV64-NEXT: lui a0, %hi(.LCPI11_0) ; RV64-NEXT: addi a0, a0, %lo(.LCPI11_0) @@ -268,7 +268,7 @@ ; RV32-NEXT: vsetivli a0, 7, e16,m1,tu,mu ; RV32-NEXT: vslideup.vi v27, v25, 6 ; RV32-NEXT: addi a0, zero, 113 -; RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a0 ; RV32-NEXT: lui a0, %hi(.LCPI12_0) ; RV32-NEXT: addi a0, a0, %lo(.LCPI12_0) @@ -296,7 +296,7 @@ ; RV64-NEXT: vsetivli a0, 7, e64,m4,tu,mu ; RV64-NEXT: vslideup.vi v16, v28, 6 ; RV64-NEXT: addi a0, zero, 113 -; RV64-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a0 ; RV64-NEXT: vsetivli a0, 8, e64,m4,ta,mu ; RV64-NEXT: vmv.v.i v28, -1 @@ -312,7 +312,7 @@ ; RV32-LABEL: vrgather_shuffle_vx_v8i64: ; RV32: # %bb.0: ; RV32-NEXT: addi a0, zero, 140 -; RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a0 ; RV32-NEXT: lui a0, %hi(.LCPI13_0) ; RV32-NEXT: addi a0, a0, %lo(.LCPI13_0) @@ -334,7 +334,7 @@ ; RV64-LABEL: vrgather_shuffle_vx_v8i64: ; RV64: # %bb.0: ; RV64-NEXT: addi a0, zero, 115 -; RV64-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a0 ; RV64-NEXT: lui a0, %hi(.LCPI13_0) ; RV64-NEXT: addi a0, a0, %lo(.LCPI13_0) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-splat.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-splat.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-splat.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-splat.ll @@ -49,7 +49,7 @@ ; LMULMAX8-RV32-LABEL: splat_v2i64: ; LMULMAX8-RV32: # %bb.0: ; LMULMAX8-RV32-NEXT: addi a3, zero, 5 -; LMULMAX8-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX8-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX8-RV32-NEXT: vmv.s.x v0, a3 ; LMULMAX8-RV32-NEXT: vsetivli a3, 4, e32,m1,ta,mu ; LMULMAX8-RV32-NEXT: vmv.v.x v25, a2 @@ -60,7 +60,7 @@ ; LMULMAX2-RV32-LABEL: splat_v2i64: ; LMULMAX2-RV32: # %bb.0: ; LMULMAX2-RV32-NEXT: addi a3, zero, 5 -; LMULMAX2-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a3 ; LMULMAX2-RV32-NEXT: vsetivli a3, 4, e32,m1,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.x v25, a2 @@ -71,7 +71,7 @@ ; LMULMAX1-RV32-LABEL: splat_v2i64: ; LMULMAX1-RV32: # %bb.0: ; LMULMAX1-RV32-NEXT: addi a3, zero, 5 -; LMULMAX1-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a3 ; LMULMAX1-RV32-NEXT: vsetivli a3, 4, e32,m1,ta,mu ; LMULMAX1-RV32-NEXT: vmv.v.x v25, a2 @@ -198,7 +198,7 @@ ; LMULMAX8-RV32-LABEL: splat_v4i64: ; LMULMAX8-RV32: # %bb.0: ; LMULMAX8-RV32-NEXT: addi a3, zero, 85 -; LMULMAX8-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX8-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX8-RV32-NEXT: vmv.s.x v0, a3 ; LMULMAX8-RV32-NEXT: vsetivli a3, 8, e32,m2,ta,mu ; LMULMAX8-RV32-NEXT: vmv.v.x v26, a2 @@ -209,7 +209,7 @@ ; LMULMAX2-RV32-LABEL: splat_v4i64: ; LMULMAX2-RV32: # %bb.0: ; LMULMAX2-RV32-NEXT: addi a3, zero, 85 -; LMULMAX2-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a3 ; LMULMAX2-RV32-NEXT: vsetivli a3, 8, e32,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.x v26, a2 @@ -220,7 +220,7 @@ ; LMULMAX1-RV32-LABEL: splat_v4i64: ; LMULMAX1-RV32: # %bb.0: ; LMULMAX1-RV32-NEXT: addi a3, zero, 5 -; LMULMAX1-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a3 ; LMULMAX1-RV32-NEXT: vsetivli a3, 4, e32,m1,ta,mu ; LMULMAX1-RV32-NEXT: vmv.v.x v25, a2 @@ -800,7 +800,7 @@ ; LMULMAX8-RV32-NEXT: vle64.v v8, (a0) ; LMULMAX8-RV32-NEXT: lui a0, 349525 ; LMULMAX8-RV32-NEXT: addi a0, a0, 1365 -; LMULMAX8-RV32-NEXT: vsetivli a4, 1, e32,m1,ta,mu +; LMULMAX8-RV32-NEXT: vsetivli a4, 1, e32,mf2,ta,mu ; LMULMAX8-RV32-NEXT: vmv.s.x v0, a0 ; LMULMAX8-RV32-NEXT: addi a0, zero, 32 ; LMULMAX8-RV32-NEXT: vsetvli a0, a0, e32,m8,ta,mu @@ -822,7 +822,7 @@ ; LMULMAX2-RV32-NEXT: addi a0, a0, 32 ; LMULMAX2-RV32-NEXT: vle64.v v8, (a0) ; LMULMAX2-RV32-NEXT: addi a0, zero, 85 -; LMULMAX2-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a0 ; LMULMAX2-RV32-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.x v10, a2 @@ -860,7 +860,7 @@ ; LMULMAX1-RV32-NEXT: addi a0, a0, 16 ; LMULMAX1-RV32-NEXT: vle64.v v8, (a0) ; LMULMAX1-RV32-NEXT: addi a0, zero, 5 -; LMULMAX1-RV32-NEXT: vsetivli a4, 1, e8,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a4, 1, e8,mf8,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a0 ; LMULMAX1-RV32-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-RV32-NEXT: vmv.v.x v9, a2 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int.ll @@ -842,33 +842,33 @@ ; RV32-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV32-NEXT: vle8.v v25, (a0) ; RV32-NEXT: addi a1, zero, 513 -; RV32-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 ; RV32-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV32-NEXT: vmv.v.i v26, 4 ; RV32-NEXT: vmerge.vim v26, v26, 1, v0 ; RV32-NEXT: lui a1, 1 ; RV32-NEXT: addi a2, a1, 78 -; RV32-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; RV32-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; RV32-NEXT: vmv.s.x v0, a2 ; RV32-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; RV32-NEXT: vmerge.vim v26, v26, 3, v0 ; RV32-NEXT: lui a2, 8 ; RV32-NEXT: addi a2, a2, 304 -; RV32-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; RV32-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; RV32-NEXT: vmv.s.x v0, a2 ; RV32-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; RV32-NEXT: vmerge.vim v26, v26, 2, v0 ; RV32-NEXT: lui a2, 3 ; RV32-NEXT: addi a2, a2, -2044 -; RV32-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; RV32-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; RV32-NEXT: vmv.s.x v0, a2 ; RV32-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; RV32-NEXT: vmv.v.i v27, 0 ; RV32-NEXT: addi a2, zero, -128 ; RV32-NEXT: vmerge.vxm v28, v27, a2, v0 ; RV32-NEXT: addi a1, a1, 32 -; RV32-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 ; RV32-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV32-NEXT: lui a1, %hi(.LCPI52_0) @@ -889,33 +889,33 @@ ; RV64-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV64-NEXT: vle8.v v25, (a0) ; RV64-NEXT: addi a1, zero, 513 -; RV64-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; RV64-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; RV64-NEXT: vmv.s.x v0, a1 ; RV64-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV64-NEXT: vmv.v.i v26, 4 ; RV64-NEXT: vmerge.vim v26, v26, 1, v0 ; RV64-NEXT: lui a1, 1 ; RV64-NEXT: addiw a2, a1, 78 -; RV64-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; RV64-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; RV64-NEXT: vmv.s.x v0, a2 ; RV64-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; RV64-NEXT: vmerge.vim v26, v26, 3, v0 ; RV64-NEXT: lui a2, 8 ; RV64-NEXT: addiw a2, a2, 304 -; RV64-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; RV64-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; RV64-NEXT: vmv.s.x v0, a2 ; RV64-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; RV64-NEXT: vmerge.vim v26, v26, 2, v0 ; RV64-NEXT: lui a2, 3 ; RV64-NEXT: addiw a2, a2, -2044 -; RV64-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; RV64-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; RV64-NEXT: vmv.s.x v0, a2 ; RV64-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; RV64-NEXT: vmv.v.i v27, 0 ; RV64-NEXT: addi a2, zero, -128 ; RV64-NEXT: vmerge.vxm v28, v27, a2, v0 ; RV64-NEXT: addiw a1, a1, 32 -; RV64-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; RV64-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; RV64-NEXT: vmv.s.x v0, a1 ; RV64-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV64-NEXT: lui a1, %hi(.LCPI52_0) @@ -944,7 +944,7 @@ ; CHECK-NEXT: addi a1, zero, 1 ; CHECK-NEXT: vmv.s.x v26, a1 ; CHECK-NEXT: addi a1, zero, 33 -; CHECK-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a1 ; CHECK-NEXT: vsetivli a1, 8, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v27, 3 @@ -1071,7 +1071,7 @@ ; RV32-NEXT: vle8.v v25, (a0) ; RV32-NEXT: lui a1, 5 ; RV32-NEXT: addi a1, a1, -1452 -; RV32-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 ; RV32-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV32-NEXT: vmv.v.i v26, 7 @@ -1091,7 +1091,7 @@ ; RV64-NEXT: vle8.v v25, (a0) ; RV64-NEXT: lui a1, 5 ; RV64-NEXT: addiw a1, a1, -1452 -; RV64-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; RV64-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; RV64-NEXT: vmv.s.x v0, a1 ; RV64-NEXT: vsetivli a1, 16, e8,m1,ta,mu ; RV64-NEXT: vmv.v.i v26, 7 @@ -1116,7 +1116,7 @@ ; RV32-NEXT: vsetivli a1, 8, e16,m1,ta,mu ; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: addi a1, zero, 105 -; RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 ; RV32-NEXT: lui a1, 5 ; RV32-NEXT: addi a1, a1, -1755 @@ -1137,7 +1137,7 @@ ; RV64-NEXT: vsetivli a1, 8, e16,m1,ta,mu ; RV64-NEXT: vle16.v v25, (a0) ; RV64-NEXT: addi a1, zero, 105 -; RV64-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; RV64-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; RV64-NEXT: vmv.s.x v0, a1 ; RV64-NEXT: lui a1, 5 ; RV64-NEXT: addiw a1, a1, -1755 @@ -1164,7 +1164,7 @@ ; RV32-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; RV32-NEXT: vle32.v v25, (a0) ; RV32-NEXT: addi a1, zero, 5 -; RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 ; RV32-NEXT: lui a1, 419430 ; RV32-NEXT: addi a1, a1, 1639 @@ -1222,7 +1222,7 @@ ; RV32-NEXT: vmulh.vv v26, v25, v26 ; RV32-NEXT: addi a1, zero, 1 ; RV32-NEXT: addi a2, zero, 3 -; RV32-NEXT: vsetivli a3, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a3, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a2 ; RV32-NEXT: vsetivli a2, 4, e32,m1,ta,mu ; RV32-NEXT: vmv.v.i v27, -1 @@ -3996,26 +3996,26 @@ ; LMULMAX2-RV32-NEXT: vle8.v v26, (a0) ; LMULMAX2-RV32-NEXT: lui a2, 8208 ; LMULMAX2-RV32-NEXT: addi a2, a2, 513 -; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV32-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v28, 4 ; LMULMAX2-RV32-NEXT: vmerge.vim v28, v28, 1, v0 ; LMULMAX2-RV32-NEXT: lui a2, 66785 ; LMULMAX2-RV32-NEXT: addi a2, a2, 78 -; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV32-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmerge.vim v28, v28, 3, v0 ; LMULMAX2-RV32-NEXT: lui a2, 529160 ; LMULMAX2-RV32-NEXT: addi a2, a2, 304 -; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV32-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmerge.vim v28, v28, 2, v0 ; LMULMAX2-RV32-NEXT: lui a2, 163907 ; LMULMAX2-RV32-NEXT: addi a2, a2, -2044 -; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV32-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v30, 0 @@ -4023,7 +4023,7 @@ ; LMULMAX2-RV32-NEXT: vmerge.vxm v8, v30, a2, v0 ; LMULMAX2-RV32-NEXT: lui a2, 66049 ; LMULMAX2-RV32-NEXT: addi a2, a2, 32 -; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV32-NEXT: vsetvli a1, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: lui a1, %hi(.LCPI129_0) @@ -4046,26 +4046,26 @@ ; LMULMAX2-RV64-NEXT: vle8.v v26, (a0) ; LMULMAX2-RV64-NEXT: lui a2, 8208 ; LMULMAX2-RV64-NEXT: addiw a2, a2, 513 -; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV64-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.v.i v28, 4 ; LMULMAX2-RV64-NEXT: vmerge.vim v28, v28, 1, v0 ; LMULMAX2-RV64-NEXT: lui a2, 66785 ; LMULMAX2-RV64-NEXT: addiw a2, a2, 78 -; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV64-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmerge.vim v28, v28, 3, v0 ; LMULMAX2-RV64-NEXT: lui a2, 529160 ; LMULMAX2-RV64-NEXT: addiw a2, a2, 304 -; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV64-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmerge.vim v28, v28, 2, v0 ; LMULMAX2-RV64-NEXT: lui a2, 163907 ; LMULMAX2-RV64-NEXT: addiw a2, a2, -2044 -; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV64-NEXT: vsetvli a2, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.v.i v30, 0 @@ -4073,7 +4073,7 @@ ; LMULMAX2-RV64-NEXT: vmerge.vxm v8, v30, a2, v0 ; LMULMAX2-RV64-NEXT: lui a2, 66049 ; LMULMAX2-RV64-NEXT: addiw a2, a2, 32 -; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV64-NEXT: vsetvli a1, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: lui a1, %hi(.LCPI129_0) @@ -4116,20 +4116,20 @@ ; LMULMAX2-RV32-NEXT: vle16.v v26, (a0) ; LMULMAX2-RV32-NEXT: lui a1, 2 ; LMULMAX2-RV32-NEXT: addi a1, a1, 289 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: vsetivli a1, 16, e16,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v28, 3 ; LMULMAX2-RV32-NEXT: vmerge.vim v28, v28, 2, v0 ; LMULMAX2-RV32-NEXT: lui a1, 4 ; LMULMAX2-RV32-NEXT: addi a1, a1, 64 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: vsetivli a1, 16, e16,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmerge.vim v28, v28, 1, v0 ; LMULMAX2-RV32-NEXT: vmv1r.v v12, v0 ; LMULMAX2-RV32-NEXT: addi a1, zero, 257 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: vsetivli a1, 16, e16,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v30, 0 @@ -4155,20 +4155,20 @@ ; LMULMAX2-RV64-NEXT: vle16.v v26, (a0) ; LMULMAX2-RV64-NEXT: lui a1, 2 ; LMULMAX2-RV64-NEXT: addiw a1, a1, 289 -; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV64-NEXT: vsetivli a1, 16, e16,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.v.i v28, 3 ; LMULMAX2-RV64-NEXT: vmerge.vim v28, v28, 2, v0 ; LMULMAX2-RV64-NEXT: lui a1, 4 ; LMULMAX2-RV64-NEXT: addiw a1, a1, 64 -; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV64-NEXT: vsetivli a1, 16, e16,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmerge.vim v28, v28, 1, v0 ; LMULMAX2-RV64-NEXT: vmv1r.v v12, v0 ; LMULMAX2-RV64-NEXT: addi a1, zero, 257 -; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV64-NEXT: vsetivli a1, 16, e16,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.v.i v30, 0 @@ -4214,7 +4214,7 @@ ; LMULMAX2-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vle32.v v26, (a0) ; LMULMAX2-NEXT: addi a1, zero, 68 -; LMULMAX2-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX2-NEXT: vmv.s.x v0, a1 ; LMULMAX2-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: lui a1, %hi(.LCPI131_0) @@ -4228,7 +4228,7 @@ ; LMULMAX2-NEXT: vmulhu.vv v26, v26, v30 ; LMULMAX2-NEXT: vadd.vv v26, v26, v28 ; LMULMAX2-NEXT: addi a1, zero, 136 -; LMULMAX2-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX2-NEXT: vmv.s.x v0, a1 ; LMULMAX2-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-NEXT: vmv.v.i v28, 2 @@ -4445,7 +4445,7 @@ ; LMULMAX2-RV32-NEXT: vle8.v v26, (a0) ; LMULMAX2-RV32-NEXT: lui a2, 304453 ; LMULMAX2-RV32-NEXT: addi a2, a2, -1452 -; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV32-NEXT: vsetvli a1, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v28, 7 @@ -4466,7 +4466,7 @@ ; LMULMAX2-RV64-NEXT: vle8.v v26, (a0) ; LMULMAX2-RV64-NEXT: lui a2, 304453 ; LMULMAX2-RV64-NEXT: addiw a2, a2, -1452 -; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a2 ; LMULMAX2-RV64-NEXT: vsetvli a1, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.v.i v28, 7 @@ -4488,7 +4488,7 @@ ; LMULMAX1-RV32-NEXT: vle8.v v26, (a1) ; LMULMAX1-RV32-NEXT: lui a2, 5 ; LMULMAX1-RV32-NEXT: addi a2, a2, -1452 -; LMULMAX1-RV32-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX1-RV32-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-RV32-NEXT: vmv.v.i v27, -9 @@ -4507,7 +4507,7 @@ ; LMULMAX1-RV64-NEXT: vle8.v v26, (a1) ; LMULMAX1-RV64-NEXT: lui a2, 5 ; LMULMAX1-RV64-NEXT: addiw a2, a2, -1452 -; LMULMAX1-RV64-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; LMULMAX1-RV64-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; LMULMAX1-RV64-NEXT: vmv.s.x v0, a2 ; LMULMAX1-RV64-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-RV64-NEXT: vmv.v.i v27, -9 @@ -4530,7 +4530,7 @@ ; LMULMAX2-RV32-NEXT: vle16.v v26, (a0) ; LMULMAX2-RV32-NEXT: lui a1, 7 ; LMULMAX2-RV32-NEXT: addi a1, a1, -1687 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: lui a1, 5 ; LMULMAX2-RV32-NEXT: addi a1, a1, -1755 @@ -4552,7 +4552,7 @@ ; LMULMAX2-RV64-NEXT: vle16.v v26, (a0) ; LMULMAX2-RV64-NEXT: lui a1, 7 ; LMULMAX2-RV64-NEXT: addiw a1, a1, -1687 -; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e16,mf4,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV64-NEXT: lui a1, 5 ; LMULMAX2-RV64-NEXT: addiw a1, a1, -1755 @@ -4575,7 +4575,7 @@ ; LMULMAX1-NEXT: addi a1, a0, 16 ; LMULMAX1-NEXT: vle16.v v26, (a1) ; LMULMAX1-NEXT: addi a2, zero, 105 -; LMULMAX1-NEXT: vsetivli a3, 1, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a3, 1, e8,mf8,ta,mu ; LMULMAX1-NEXT: vmv.s.x v0, a2 ; LMULMAX1-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; LMULMAX1-NEXT: vmv.v.i v27, 7 @@ -4597,7 +4597,7 @@ ; LMULMAX2-RV32-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-RV32-NEXT: vle32.v v26, (a0) ; LMULMAX2-RV32-NEXT: addi a1, zero, 85 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: lui a1, 419430 ; LMULMAX2-RV32-NEXT: addi a1, a1, 1639 @@ -4642,7 +4642,7 @@ ; LMULMAX1-RV32-NEXT: addi a1, a0, 16 ; LMULMAX1-RV32-NEXT: vle32.v v26, (a1) ; LMULMAX1-RV32-NEXT: addi a2, zero, 5 -; LMULMAX1-RV32-NEXT: vsetivli a3, 1, e8,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a3, 1, e8,mf8,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a2 ; LMULMAX1-RV32-NEXT: lui a2, 419430 ; LMULMAX1-RV32-NEXT: addi a2, a2, 1639 @@ -4692,7 +4692,7 @@ ; LMULMAX2-RV32-NEXT: vsetivli a1, 4, e64,m2,ta,mu ; LMULMAX2-RV32-NEXT: vle64.v v26, (a0) ; LMULMAX2-RV32-NEXT: addi a1, zero, 51 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v28, -1 @@ -4700,7 +4700,7 @@ ; LMULMAX2-RV32-NEXT: vsetivli a1, 4, e64,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmul.vv v28, v26, v28 ; LMULMAX2-RV32-NEXT: addi a1, zero, 17 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: lui a1, 349525 ; LMULMAX2-RV32-NEXT: addi a2, a1, 1365 @@ -4714,7 +4714,7 @@ ; LMULMAX2-RV32-NEXT: addi a1, zero, 63 ; LMULMAX2-RV32-NEXT: vsrl.vx v28, v26, a1 ; LMULMAX2-RV32-NEXT: addi a1, zero, 68 -; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV32-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v30, 0 @@ -4730,7 +4730,7 @@ ; LMULMAX2-RV64-NEXT: vsetivli a1, 4, e64,m2,ta,mu ; LMULMAX2-RV64-NEXT: vle64.v v26, (a0) ; LMULMAX2-RV64-NEXT: addi a1, zero, 5 -; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; LMULMAX2-RV64-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; LMULMAX2-RV64-NEXT: vmv.s.x v0, a1 ; LMULMAX2-RV64-NEXT: vsetivli a1, 4, e64,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmv.v.i v28, -1 @@ -7438,7 +7438,7 @@ ; RV32-NEXT: vsetivli a1, 2, e64,m1,ta,mu ; RV32-NEXT: vle64.v v25, (a0) ; RV32-NEXT: addi a1, zero, 5 -; RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 ; RV32-NEXT: lui a1, 699051 ; RV32-NEXT: addi a2, a1, -1366 @@ -7560,7 +7560,7 @@ ; RV32-NEXT: vsetivli a1, 2, e64,m1,ta,mu ; RV32-NEXT: vle64.v v25, (a0) ; RV32-NEXT: addi a1, zero, 5 -; RV32-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; RV32-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; RV32-NEXT: vmv.s.x v0, a1 ; RV32-NEXT: lui a1, 349525 ; RV32-NEXT: addi a2, a1, 1365 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-buildvec.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-buildvec.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-buildvec.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-buildvec.ll @@ -12,7 +12,7 @@ ; CHECK-LABEL: buildvec_mask_v1i1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 2 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: ret ret <3 x i1> @@ -22,7 +22,7 @@ ; CHECK-LABEL: buildvec_mask_optsize_v1i1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 2 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: ret ret <3 x i1> @@ -32,7 +32,7 @@ ; CHECK-LABEL: buildvec_mask_v4i1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 6 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: ret ret <4 x i1> @@ -42,7 +42,7 @@ ; CHECK-LABEL: buildvec_mask_v8i1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 182 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: ret ret <8 x i1> @@ -52,7 +52,7 @@ ; CHECK-LABEL: buildvec_mask_v10i1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 949 -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: ret ret <10 x i1> @@ -63,7 +63,7 @@ ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: lui a0, 11 ; CHECK-RV32-NEXT: addi a0, a0, 1718 -; CHECK-RV32-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-RV32-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-RV32-NEXT: vmv.s.x v0, a0 ; CHECK-RV32-NEXT: ret ; @@ -71,7 +71,7 @@ ; CHECK-RV64: # %bb.0: ; CHECK-RV64-NEXT: lui a0, 11 ; CHECK-RV64-NEXT: addiw a0, a0, 1718 -; CHECK-RV64-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-RV64-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-RV64-NEXT: vmv.s.x v0, a0 ; CHECK-RV64-NEXT: ret ret <16 x i1> @@ -81,7 +81,7 @@ ; CHECK-LABEL: buildvec_mask_v16i1_undefs: ; CHECK: # %bb.0: ; CHECK-NEXT: addi a0, zero, 1722 -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vmv.s.x v0, a0 ; CHECK-NEXT: ret ret <16 x i1> @@ -91,7 +91,7 @@ ; RV32-LMULMAX1-LABEL: buildvec_mask_v32i1: ; RV32-LMULMAX1: # %bb.0: ; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX1-NEXT: lui a0, 11 ; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 @@ -101,7 +101,7 @@ ; RV64-LMULMAX1-LABEL: buildvec_mask_v32i1: ; RV64-LMULMAX1: # %bb.0: ; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX1-NEXT: lui a0, 11 ; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 @@ -112,7 +112,7 @@ ; RV32-LMULMAX2: # %bb.0: ; RV32-LMULMAX2-NEXT: lui a0, 748384 ; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 -; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX2-NEXT: ret ; @@ -120,7 +120,7 @@ ; RV64-LMULMAX2: # %bb.0: ; RV64-LMULMAX2-NEXT: lui a0, 748384 ; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 -; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX2-NEXT: ret ; @@ -128,7 +128,7 @@ ; RV32-LMULMAX4: # %bb.0: ; RV32-LMULMAX4-NEXT: lui a0, 748384 ; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 -; RV32-LMULMAX4-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-LMULMAX4-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-LMULMAX4-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX4-NEXT: ret ; @@ -136,7 +136,7 @@ ; RV64-LMULMAX4: # %bb.0: ; RV64-LMULMAX4-NEXT: lui a0, 748384 ; RV64-LMULMAX4-NEXT: addiw a0, a0, 1776 -; RV64-LMULMAX4-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-LMULMAX4-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-LMULMAX4-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX4-NEXT: ret ; @@ -144,7 +144,7 @@ ; RV32-LMULMAX8: # %bb.0: ; RV32-LMULMAX8-NEXT: lui a0, 748384 ; RV32-LMULMAX8-NEXT: addi a0, a0, 1776 -; RV32-LMULMAX8-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-LMULMAX8-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-LMULMAX8-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX8-NEXT: ret ; @@ -152,7 +152,7 @@ ; RV64-LMULMAX8: # %bb.0: ; RV64-LMULMAX8-NEXT: lui a0, 748384 ; RV64-LMULMAX8-NEXT: addiw a0, a0, 1776 -; RV64-LMULMAX8-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-LMULMAX8-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-LMULMAX8-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX8-NEXT: ret ret <32 x i1> @@ -162,7 +162,7 @@ ; RV32-LMULMAX1-LABEL: buildvec_mask_v64i1: ; RV32-LMULMAX1: # %bb.0: ; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX1-NEXT: lui a0, 4 ; RV32-LMULMAX1-NEXT: addi a0, a0, -1793 @@ -176,7 +176,7 @@ ; RV64-LMULMAX1-LABEL: buildvec_mask_v64i1: ; RV64-LMULMAX1: # %bb.0: ; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX1-NEXT: lui a0, 4 ; RV64-LMULMAX1-NEXT: addiw a0, a0, -1793 @@ -191,7 +191,7 @@ ; RV32-LMULMAX2: # %bb.0: ; RV32-LMULMAX2-NEXT: lui a0, 748384 ; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 -; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX2-NEXT: lui a0, 748388 ; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 @@ -202,7 +202,7 @@ ; RV64-LMULMAX2: # %bb.0: ; RV64-LMULMAX2-NEXT: lui a0, 748384 ; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 -; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX2-NEXT: lui a0, 748388 ; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 @@ -213,12 +213,12 @@ ; RV32-LMULMAX4: # %bb.0: ; RV32-LMULMAX4-NEXT: lui a0, 748388 ; RV32-LMULMAX4-NEXT: addi a0, a0, -1793 -; RV32-LMULMAX4-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; RV32-LMULMAX4-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; RV32-LMULMAX4-NEXT: vmv.s.x v25, a0 ; RV32-LMULMAX4-NEXT: lui a0, 748384 ; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 ; RV32-LMULMAX4-NEXT: vmv.s.x v0, a0 -; RV32-LMULMAX4-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-LMULMAX4-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-LMULMAX4-NEXT: vslideup.vi v0, v25, 1 ; RV32-LMULMAX4-NEXT: ret ; @@ -240,12 +240,12 @@ ; RV32-LMULMAX8: # %bb.0: ; RV32-LMULMAX8-NEXT: lui a0, 748388 ; RV32-LMULMAX8-NEXT: addi a0, a0, -1793 -; RV32-LMULMAX8-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; RV32-LMULMAX8-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; RV32-LMULMAX8-NEXT: vmv.s.x v25, a0 ; RV32-LMULMAX8-NEXT: lui a0, 748384 ; RV32-LMULMAX8-NEXT: addi a0, a0, 1776 ; RV32-LMULMAX8-NEXT: vmv.s.x v0, a0 -; RV32-LMULMAX8-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-LMULMAX8-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-LMULMAX8-NEXT: vslideup.vi v0, v25, 1 ; RV32-LMULMAX8-NEXT: ret ; @@ -269,7 +269,7 @@ ; RV32-LMULMAX1-LABEL: buildvec_mask_v128i1: ; RV32-LMULMAX1: # %bb.0: ; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX1-NEXT: lui a0, 11 ; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 @@ -291,7 +291,7 @@ ; RV64-LMULMAX1-LABEL: buildvec_mask_v128i1: ; RV64-LMULMAX1: # %bb.0: ; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX1-NEXT: lui a0, 11 ; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 @@ -314,7 +314,7 @@ ; RV32-LMULMAX2: # %bb.0: ; RV32-LMULMAX2-NEXT: lui a0, 748384 ; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 -; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX2-NEXT: lui a0, 748388 ; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 @@ -331,7 +331,7 @@ ; RV64-LMULMAX2: # %bb.0: ; RV64-LMULMAX2-NEXT: lui a0, 748384 ; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 -; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX2-NEXT: lui a0, 748388 ; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 @@ -348,21 +348,21 @@ ; RV32-LMULMAX4: # %bb.0: ; RV32-LMULMAX4-NEXT: lui a0, 748388 ; RV32-LMULMAX4-NEXT: addi a0, a0, -1793 -; RV32-LMULMAX4-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; RV32-LMULMAX4-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; RV32-LMULMAX4-NEXT: vmv.s.x v25, a0 ; RV32-LMULMAX4-NEXT: lui a0, 748384 ; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 ; RV32-LMULMAX4-NEXT: vmv.s.x v0, a0 -; RV32-LMULMAX4-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-LMULMAX4-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-LMULMAX4-NEXT: vslideup.vi v0, v25, 1 ; RV32-LMULMAX4-NEXT: lui a0, 945060 ; RV32-LMULMAX4-NEXT: addi a0, a0, -1793 -; RV32-LMULMAX4-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; RV32-LMULMAX4-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; RV32-LMULMAX4-NEXT: vmv.s.x v25, a0 ; RV32-LMULMAX4-NEXT: lui a0, 551776 ; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 ; RV32-LMULMAX4-NEXT: vmv.s.x v8, a0 -; RV32-LMULMAX4-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-LMULMAX4-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-LMULMAX4-NEXT: vslideup.vi v8, v25, 1 ; RV32-LMULMAX4-NEXT: ret ; @@ -441,7 +441,7 @@ ; RV32-LMULMAX1-LABEL: buildvec_mask_optsize_v128i1: ; RV32-LMULMAX1: # %bb.0: ; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV32-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX1-NEXT: lui a0, 11 ; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 @@ -463,7 +463,7 @@ ; RV64-LMULMAX1-LABEL: buildvec_mask_optsize_v128i1: ; RV64-LMULMAX1: # %bb.0: ; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 -; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV64-LMULMAX1-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX1-NEXT: lui a0, 11 ; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 @@ -486,7 +486,7 @@ ; RV32-LMULMAX2: # %bb.0: ; RV32-LMULMAX2-NEXT: lui a0, 748384 ; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 -; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV32-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV32-LMULMAX2-NEXT: lui a0, 748388 ; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 @@ -503,7 +503,7 @@ ; RV64-LMULMAX2: # %bb.0: ; RV64-LMULMAX2-NEXT: lui a0, 748384 ; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 -; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; RV64-LMULMAX2-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 ; RV64-LMULMAX2-NEXT: lui a0, 748388 ; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-load-store.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-load-store.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-load-store.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-load-store.ll @@ -9,14 +9,16 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a2, 1, e8,m1,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) +; CHECK-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 1, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 1, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <1 x i1>, <1 x i1>* %x @@ -29,14 +31,16 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a2, 2, e8,m1,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <2 x i1>, <2 x i1>* %x @@ -49,14 +53,16 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <4 x i1>, <4 x i1>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-splat.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-splat.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-splat.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-splat.ll @@ -7,16 +7,19 @@ define void @splat_ones_v1i1(<1 x i1>* %x) { ; CHECK-LABEL: splat_ones_v1i1: ; CHECK: # %bb.0: +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu +; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu ; CHECK-NEXT: vmset.m v0 -; CHECK-NEXT: vmv.v.i v25, 0 +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 1, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret store <1 x i1> , <1 x i1>* %x @@ -26,16 +29,19 @@ define void @splat_zeros_v2i1(<2 x i1>* %x) { ; CHECK-LABEL: splat_zeros_v2i1: ; CHECK: # %bb.0: +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu +; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu ; CHECK-NEXT: vmclr.m v0 -; CHECK-NEXT: vmv.v.i v25, 0 +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 2, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret store <2 x i1> zeroinitializer, <2 x i1>* %x @@ -45,16 +51,19 @@ define void @splat_ones_v4i1(<4 x i1>* %x) { ; CHECK-LABEL: splat_ones_v4i1: ; CHECK: # %bb.0: +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu +; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu ; CHECK-NEXT: vmset.m v0 -; CHECK-NEXT: vmv.v.i v25, 0 +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a1, 4, e8,m1,tu,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf2,tu,mu ; CHECK-NEXT: vslideup.vi v26, v25, 0 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmsne.vi v25, v26, 0 +; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret store <4 x i1> , <4 x i1>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll @@ -9,7 +9,7 @@ define <1 x i8> @mgather_v1i8(<1 x i8*> %ptrs, <1 x i1> %m, <1 x i8> %passthru) { ; RV32-LABEL: mgather_v1i8: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 1, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 1, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -29,7 +29,7 @@ define <2 x i8> @mgather_v2i8(<2 x i8*> %ptrs, <2 x i1> %m, <2 x i8> %passthru) { ; RV32-LABEL: mgather_v2i8: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -47,9 +47,9 @@ define <2 x i16> @mgather_v2i8_sextload_v2i16(<2 x i8*> %ptrs, <2 x i1> %m, <2 x i8> %passthru) { ; RV32-LABEL: mgather_v2i8_sextload_v2i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t -; RV32-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV32-NEXT: vsext.vf2 v8, v9 ; RV32-NEXT: ret ; @@ -57,7 +57,7 @@ ; RV64: # %bb.0: ; RV64-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV64-NEXT: vloxei64.v v9, (zero), v8, v0.t -; RV64-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV64-NEXT: vsext.vf2 v8, v9 ; RV64-NEXT: ret %v = call <2 x i8> @llvm.masked.gather.v2i8.v2p0i8(<2 x i8*> %ptrs, i32 1, <2 x i1> %m, <2 x i8> %passthru) @@ -68,9 +68,9 @@ define <2 x i16> @mgather_v2i8_zextload_v2i16(<2 x i8*> %ptrs, <2 x i1> %m, <2 x i8> %passthru) { ; RV32-LABEL: mgather_v2i8_zextload_v2i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t -; RV32-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV32-NEXT: vzext.vf2 v8, v9 ; RV32-NEXT: ret ; @@ -78,7 +78,7 @@ ; RV64: # %bb.0: ; RV64-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV64-NEXT: vloxei64.v v9, (zero), v8, v0.t -; RV64-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV64-NEXT: vzext.vf2 v8, v9 ; RV64-NEXT: ret %v = call <2 x i8> @llvm.masked.gather.v2i8.v2p0i8(<2 x i8*> %ptrs, i32 1, <2 x i1> %m, <2 x i8> %passthru) @@ -89,9 +89,9 @@ define <2 x i32> @mgather_v2i8_sextload_v2i32(<2 x i8*> %ptrs, <2 x i1> %m, <2 x i8> %passthru) { ; RV32-LABEL: mgather_v2i8_sextload_v2i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV32-NEXT: vsext.vf4 v8, v9 ; RV32-NEXT: ret ; @@ -99,7 +99,7 @@ ; RV64: # %bb.0: ; RV64-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV64-NEXT: vloxei64.v v9, (zero), v8, v0.t -; RV64-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV64-NEXT: vsext.vf4 v8, v9 ; RV64-NEXT: ret %v = call <2 x i8> @llvm.masked.gather.v2i8.v2p0i8(<2 x i8*> %ptrs, i32 1, <2 x i1> %m, <2 x i8> %passthru) @@ -110,9 +110,9 @@ define <2 x i32> @mgather_v2i8_zextload_v2i32(<2 x i8*> %ptrs, <2 x i1> %m, <2 x i8> %passthru) { ; RV32-LABEL: mgather_v2i8_zextload_v2i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV32-NEXT: vzext.vf4 v8, v9 ; RV32-NEXT: ret ; @@ -120,7 +120,7 @@ ; RV64: # %bb.0: ; RV64-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV64-NEXT: vloxei64.v v9, (zero), v8, v0.t -; RV64-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV64-NEXT: vzext.vf4 v8, v9 ; RV64-NEXT: ret %v = call <2 x i8> @llvm.masked.gather.v2i8.v2p0i8(<2 x i8*> %ptrs, i32 1, <2 x i1> %m, <2 x i8> %passthru) @@ -131,7 +131,7 @@ define <2 x i64> @mgather_v2i8_sextload_v2i64(<2 x i8*> %ptrs, <2 x i1> %m, <2 x i8> %passthru) { ; RV32-LABEL: mgather_v2i8_sextload_v2i64: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; RV32-NEXT: vsext.vf8 v8, v9 @@ -152,7 +152,7 @@ define <2 x i64> @mgather_v2i8_zextload_v2i64(<2 x i8*> %ptrs, <2 x i1> %m, <2 x i8> %passthru) { ; RV32-LABEL: mgather_v2i8_zextload_v2i64: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,tu,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; RV32-NEXT: vzext.vf8 v8, v9 @@ -272,7 +272,7 @@ define <1 x i16> @mgather_v1i16(<1 x i16*> %ptrs, <1 x i1> %m, <1 x i16> %passthru) { ; RV32-LABEL: mgather_v1i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 1, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 1, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -292,7 +292,7 @@ define <2 x i16> @mgather_v2i16(<2 x i16*> %ptrs, <2 x i1> %m, <2 x i16> %passthru) { ; RV32-LABEL: mgather_v2i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -310,9 +310,9 @@ define <2 x i32> @mgather_v2i16_sextload_v2i32(<2 x i16*> %ptrs, <2 x i1> %m, <2 x i16> %passthru) { ; RV32-LABEL: mgather_v2i16_sextload_v2i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV32-NEXT: vsext.vf2 v8, v9 ; RV32-NEXT: ret ; @@ -320,7 +320,7 @@ ; RV64: # %bb.0: ; RV64-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV64-NEXT: vloxei64.v v9, (zero), v8, v0.t -; RV64-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV64-NEXT: vsext.vf2 v8, v9 ; RV64-NEXT: ret %v = call <2 x i16> @llvm.masked.gather.v2i16.v2p0i16(<2 x i16*> %ptrs, i32 2, <2 x i1> %m, <2 x i16> %passthru) @@ -331,9 +331,9 @@ define <2 x i32> @mgather_v2i16_zextload_v2i32(<2 x i16*> %ptrs, <2 x i1> %m, <2 x i16> %passthru) { ; RV32-LABEL: mgather_v2i16_zextload_v2i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV32-NEXT: vzext.vf2 v8, v9 ; RV32-NEXT: ret ; @@ -341,7 +341,7 @@ ; RV64: # %bb.0: ; RV64-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV64-NEXT: vloxei64.v v9, (zero), v8, v0.t -; RV64-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV64-NEXT: vzext.vf2 v8, v9 ; RV64-NEXT: ret %v = call <2 x i16> @llvm.masked.gather.v2i16.v2p0i16(<2 x i16*> %ptrs, i32 2, <2 x i1> %m, <2 x i16> %passthru) @@ -352,7 +352,7 @@ define <2 x i64> @mgather_v2i16_sextload_v2i64(<2 x i16*> %ptrs, <2 x i1> %m, <2 x i16> %passthru) { ; RV32-LABEL: mgather_v2i16_sextload_v2i64: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; RV32-NEXT: vsext.vf4 v8, v9 @@ -373,7 +373,7 @@ define <2 x i64> @mgather_v2i16_zextload_v2i64(<2 x i16*> %ptrs, <2 x i1> %m, <2 x i16> %passthru) { ; RV32-LABEL: mgather_v2i16_zextload_v2i64: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; RV32-NEXT: vzext.vf4 v8, v9 @@ -572,7 +572,7 @@ define <1 x i32> @mgather_v1i32(<1 x i32*> %ptrs, <1 x i1> %m, <1 x i32> %passthru) { ; RV32-LABEL: mgather_v1i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 1, e32,m1,tu,mu +; RV32-NEXT: vsetivli a0, 1, e32,mf2,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -592,7 +592,7 @@ define <2 x i32> @mgather_v2i32(<2 x i32*> %ptrs, <2 x i1> %m, <2 x i32> %passthru) { ; RV32-LABEL: mgather_v2i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -610,7 +610,7 @@ define <2 x i64> @mgather_v2i32_sextload_v2i64(<2 x i32*> %ptrs, <2 x i1> %m, <2 x i32> %passthru) { ; RV32-LABEL: mgather_v2i32_sextload_v2i64: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; RV32-NEXT: vsext.vf2 v8, v9 @@ -631,7 +631,7 @@ define <2 x i64> @mgather_v2i32_zextload_v2i64(<2 x i32*> %ptrs, <2 x i1> %m, <2 x i32> %passthru) { ; RV32-LABEL: mgather_v2i32_zextload_v2i64: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; RV32-NEXT: vzext.vf2 v8, v9 @@ -1271,7 +1271,7 @@ define <1 x half> @mgather_v1f16(<1 x half*> %ptrs, <1 x i1> %m, <1 x half> %passthru) { ; RV32-LABEL: mgather_v1f16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 1, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 1, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -1291,7 +1291,7 @@ define <2 x half> @mgather_v2f16(<2 x half*> %ptrs, <2 x i1> %m, <2 x half> %passthru) { ; RV32-LABEL: mgather_v2f16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,tu,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -1487,7 +1487,7 @@ define <1 x float> @mgather_v1f32(<1 x float*> %ptrs, <1 x i1> %m, <1 x float> %passthru) { ; RV32-LABEL: mgather_v1f32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 1, e32,m1,tu,mu +; RV32-NEXT: vsetivli a0, 1, e32,mf2,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -1507,7 +1507,7 @@ define <2 x float> @mgather_v2f32(<2 x float*> %ptrs, <2 x i1> %m, <2 x float> %passthru) { ; RV32-LABEL: mgather_v2f32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,tu,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,tu,mu ; RV32-NEXT: vloxei32.v v9, (zero), v8, v0.t ; RV32-NEXT: vmv1r.v v8, v9 ; RV32-NEXT: ret @@ -2186,7 +2186,7 @@ ; RV64-NEXT: vsext.vf8 v16, v26 ; RV64-NEXT: vsetivli a1, 16, e8,m2,ta,mu ; RV64-NEXT: vslidedown.vi v26, v10, 16 -; RV64-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 2, e8,mf4,ta,mu ; RV64-NEXT: vslidedown.vi v0, v0, 2 ; RV64-NEXT: vsetivli a1, 16, e8,m1,tu,mu ; RV64-NEXT: vloxei64.v v26, (a0), v16, v0.t diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-fp.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-fp.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-fp.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-fp.ll @@ -5,7 +5,7 @@ define void @masked_load_v1f16(<1 x half>* %a, <1 x half>* %m_ptr, <1 x half>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v1f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: fmv.h.x ft0, zero ; CHECK-NEXT: vmfeq.vf v0, v25, ft0 @@ -23,7 +23,7 @@ define void @masked_load_v1f32(<1 x float>* %a, <1 x float>* %m_ptr, <1 x float>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v1f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a1) ; CHECK-NEXT: fmv.w.x ft0, zero ; CHECK-NEXT: vmfeq.vf v0, v25, ft0 @@ -69,7 +69,7 @@ define void @masked_load_v2f16(<2 x half>* %a, <2 x half>* %m_ptr, <2 x half>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v2f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: fmv.h.x ft0, zero ; CHECK-NEXT: vmfeq.vf v0, v25, ft0 @@ -87,7 +87,7 @@ define void @masked_load_v2f32(<2 x float>* %a, <2 x float>* %m_ptr, <2 x float>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v2f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a1) ; CHECK-NEXT: fmv.w.x ft0, zero ; CHECK-NEXT: vmfeq.vf v0, v25, ft0 @@ -133,7 +133,7 @@ define void @masked_load_v4f16(<4 x half>* %a, <4 x half>* %m_ptr, <4 x half>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: fmv.h.x ft0, zero ; CHECK-NEXT: vmfeq.vf v0, v25, ft0 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-int.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-int.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-int.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-int.ll @@ -5,7 +5,7 @@ define void @masked_load_v1i8(<1 x i8>* %a, <1 x i8>* %m_ptr, <1 x i8>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle8.v v25, (a0), v0.t @@ -22,7 +22,7 @@ define void @masked_load_v1i16(<1 x i16>* %a, <1 x i16>* %m_ptr, <1 x i16>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle16.v v25, (a0), v0.t @@ -39,7 +39,7 @@ define void @masked_load_v1i32(<1 x i32>* %a, <1 x i32>* %m_ptr, <1 x i32>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle32.v v25, (a0), v0.t @@ -58,7 +58,7 @@ ; RV32: # %bb.0: ; RV32-NEXT: vsetivli a3, 1, e64,m1,ta,mu ; RV32-NEXT: vle64.v v25, (a1) -; RV32-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; RV32-NEXT: vmv.v.i v26, 0 ; RV32-NEXT: vsetivli a1, 1, e64,m1,ta,mu ; RV32-NEXT: vmseq.vv v0, v25, v26 @@ -85,7 +85,7 @@ define void @masked_load_v2i8(<2 x i8>* %a, <2 x i8>* %m_ptr, <2 x i8>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle8.v v25, (a0), v0.t @@ -102,7 +102,7 @@ define void @masked_load_v2i16(<2 x i16>* %a, <2 x i16>* %m_ptr, <2 x i16>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle16.v v25, (a0), v0.t @@ -119,7 +119,7 @@ define void @masked_load_v2i32(<2 x i32>* %a, <2 x i32>* %m_ptr, <2 x i32>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle32.v v25, (a0), v0.t @@ -165,7 +165,7 @@ define void @masked_load_v4i8(<4 x i8>* %a, <4 x i8>* %m_ptr, <4 x i8>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle8.v v25, (a0), v0.t @@ -182,7 +182,7 @@ define void @masked_load_v4i16(<4 x i16>* %a, <4 x i16>* %m_ptr, <4 x i16>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle16.v v25, (a0), v0.t @@ -245,7 +245,7 @@ define void @masked_load_v8i8(<8 x i8>* %a, <8 x i8>* %m_ptr, <8 x i8>* %res_ptr) nounwind { ; CHECK-LABEL: masked_load_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a1) ; CHECK-NEXT: vmseq.vi v0, v25, 0 ; CHECK-NEXT: vle8.v v25, (a0), v0.t diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-scatter.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-scatter.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-scatter.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-scatter.ll @@ -9,7 +9,7 @@ define void @mscatter_v1i8(<1 x i8> %val, <1 x i8*> %ptrs, <1 x i1> %m) { ; RV32-LABEL: mscatter_v1i8: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; RV32-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -27,7 +27,7 @@ define void @mscatter_v2i8(<2 x i8> %val, <2 x i8*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2i8: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; RV32-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -43,15 +43,15 @@ define void @mscatter_v2i16_truncstore_v2i8(<2 x i16> %val, <2 x i8*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2i16_truncstore_v2i8: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e8,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; RV32-NEXT: vnsrl.wi v25, v8, 0 -; RV32-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; RV32-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; RV32-NEXT: vsoxei32.v v25, (zero), v9, v0.t ; RV32-NEXT: ret ; ; RV64-LABEL: mscatter_v2i16_truncstore_v2i8: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a0, 2, e8,mf2,ta,mu +; RV64-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; RV64-NEXT: vnsrl.wi v25, v8, 0 ; RV64-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; RV64-NEXT: vsoxei64.v v25, (zero), v9, v0.t @@ -64,18 +64,19 @@ define void @mscatter_v2i32_truncstore_v2i8(<2 x i32> %val, <2 x i8*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2i32_truncstore_v2i8: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV32-NEXT: vnsrl.wi v25, v8, 0 -; RV32-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; RV32-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; RV32-NEXT: vnsrl.wi v26, v25, 0 +; RV32-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; RV32-NEXT: vsoxei32.v v26, (zero), v9, v0.t ; RV32-NEXT: ret ; ; RV64-LABEL: mscatter_v2i32_truncstore_v2i8: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV64-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV64-NEXT: vnsrl.wi v25, v8, 0 -; RV64-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; RV64-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; RV64-NEXT: vnsrl.wi v26, v25, 0 ; RV64-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; RV64-NEXT: vsoxei64.v v26, (zero), v9, v0.t @@ -94,7 +95,7 @@ ; RV32-NEXT: vnsrl.wi v26, v25, 0 ; RV32-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; RV32-NEXT: vnsrl.wi v25, v26, 0 -; RV32-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; RV32-NEXT: vsetivli a0, 1, e8,mf8,ta,mu ; RV32-NEXT: vsoxei32.v v25, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -206,7 +207,7 @@ define void @mscatter_v1i16(<1 x i16> %val, <1 x i16*> %ptrs, <1 x i1> %m) { ; RV32-LABEL: mscatter_v1i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -224,7 +225,7 @@ define void @mscatter_v2i16(<2 x i16> %val, <2 x i16*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -240,14 +241,15 @@ define void @mscatter_v2i32_truncstore_v2i16(<2 x i32> %val, <2 x i16*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2i32_truncstore_v2i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV32-NEXT: vnsrl.wi v25, v8, 0 +; RV32-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v25, (zero), v9, v0.t ; RV32-NEXT: ret ; ; RV64-LABEL: mscatter_v2i32_truncstore_v2i16: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV64-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV64-NEXT: vnsrl.wi v25, v8, 0 ; RV64-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; RV64-NEXT: vsoxei64.v v25, (zero), v9, v0.t @@ -264,7 +266,7 @@ ; RV32-NEXT: vnsrl.wi v25, v8, 0 ; RV32-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV32-NEXT: vnsrl.wi v26, v25, 0 -; RV32-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v26, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -447,7 +449,7 @@ define void @mscatter_v1i32(<1 x i32> %val, <1 x i32*> %ptrs, <1 x i1> %m) { ; RV32-LABEL: mscatter_v1i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -465,7 +467,7 @@ define void @mscatter_v2i32(<2 x i32> %val, <2 x i32*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -483,7 +485,7 @@ ; RV32: # %bb.0: ; RV32-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV32-NEXT: vnsrl.wi v25, v8, 0 -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV32-NEXT: vsoxei32.v v25, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1069,7 +1071,7 @@ define void @mscatter_v1f16(<1 x half> %val, <1 x half*> %ptrs, <1 x i1> %m) { ; RV32-LABEL: mscatter_v1f16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1087,7 +1089,7 @@ define void @mscatter_v2f16(<2 x half> %val, <2 x half*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2f16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; RV32-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1265,7 +1267,7 @@ define void @mscatter_v1f32(<1 x float> %val, <1 x float*> %ptrs, <1 x i1> %m) { ; RV32-LABEL: mscatter_v1f32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1283,7 +1285,7 @@ define void @mscatter_v2f32(<2 x float> %val, <2 x float*> %ptrs, <2 x i1> %m) { ; RV32-LABEL: mscatter_v2f32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1908,7 +1910,7 @@ ; RV64-NEXT: vsext.vf8 v16, v26 ; RV64-NEXT: vsetivli a1, 16, e8,m2,ta,mu ; RV64-NEXT: vslidedown.vi v26, v8, 16 -; RV64-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; RV64-NEXT: vsetivli a1, 2, e8,mf4,ta,mu ; RV64-NEXT: vslidedown.vi v0, v0, 2 ; RV64-NEXT: vsetivli a1, 8, e8,m1,ta,mu ; RV64-NEXT: vsoxei64.v v26, (a0), v16, v0.t diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-fp.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-fp.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-fp.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-fp.ll @@ -5,7 +5,7 @@ define void @masked_store_v1f16(<1 x half>* %val_ptr, <1 x half>* %a, <1 x half>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v1f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a2) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: fmv.h.x ft0, zero @@ -23,7 +23,7 @@ define void @masked_store_v1f32(<1 x float>* %val_ptr, <1 x float>* %a, <1 x float>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v1f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a2) ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: fmv.w.x ft0, zero @@ -69,7 +69,7 @@ define void @masked_store_v2f16(<2 x half>* %val_ptr, <2 x half>* %a, <2 x half>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v2f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a2) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: fmv.h.x ft0, zero @@ -87,7 +87,7 @@ define void @masked_store_v2f32(<2 x float>* %val_ptr, <2 x float>* %a, <2 x float>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v2f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a2) ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: fmv.w.x ft0, zero @@ -133,7 +133,7 @@ define void @masked_store_v4f16(<4 x half>* %val_ptr, <4 x half>* %a, <4 x half>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a2) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: fmv.h.x ft0, zero diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-int.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-int.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-int.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-int.ll @@ -5,7 +5,7 @@ define void @masked_store_v1i8(<1 x i8>* %val_ptr, <1 x i8>* %a, <1 x i8>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a2) ; CHECK-NEXT: vle8.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -22,7 +22,7 @@ define void @masked_store_v1i16(<1 x i16>* %val_ptr, <1 x i16>* %a, <1 x i16>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a2) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -39,7 +39,7 @@ define void @masked_store_v1i32(<1 x i32>* %val_ptr, <1 x i32>* %a, <1 x i32>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a2) ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -58,7 +58,7 @@ ; RV32: # %bb.0: ; RV32-NEXT: vsetivli a3, 1, e64,m1,ta,mu ; RV32-NEXT: vle64.v v25, (a2) -; RV32-NEXT: vsetivli a2, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a2, 2, e32,mf2,ta,mu ; RV32-NEXT: vmv.v.i v26, 0 ; RV32-NEXT: vsetivli a2, 1, e64,m1,ta,mu ; RV32-NEXT: vle64.v v27, (a0) @@ -85,7 +85,7 @@ define void @masked_store_v2i8(<2 x i8>* %val_ptr, <2 x i8>* %a, <2 x i8>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a2) ; CHECK-NEXT: vle8.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -102,7 +102,7 @@ define void @masked_store_v2i16(<2 x i16>* %val_ptr, <2 x i16>* %a, <2 x i16>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a2) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -119,7 +119,7 @@ define void @masked_store_v2i32(<2 x i32>* %val_ptr, <2 x i32>* %a, <2 x i32>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a2) ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -165,7 +165,7 @@ define void @masked_store_v4i8(<4 x i8>* %val_ptr, <4 x i8>* %a, <4 x i8>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a2) ; CHECK-NEXT: vle8.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -182,7 +182,7 @@ define void @masked_store_v4i16(<4 x i16>* %val_ptr, <4 x i16>* %a, <4 x i16>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a2) ; CHECK-NEXT: vle16.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 @@ -245,7 +245,7 @@ define void @masked_store_v8i8(<8 x i8>* %val_ptr, <8 x i8>* %a, <8 x i8>* %m_ptr) nounwind { ; CHECK-LABEL: masked_store_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a3, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a2) ; CHECK-NEXT: vle8.v v26, (a0) ; CHECK-NEXT: vmseq.vi v0, v25, 0 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-fp.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-fp.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-fp.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-fp.ll @@ -7,7 +7,7 @@ define half @vreduce_fadd_v1f16(<1 x half>* %x, half %s) { ; CHECK-LABEL: vreduce_fadd_v1f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vfmv.f.s ft0, v25 ; CHECK-NEXT: fadd.h fa0, fa0, ft0 @@ -20,12 +20,13 @@ define half @vreduce_ord_fadd_v1f16(<1 x half>* %x, half %s) { ; CHECK-LABEL: vreduce_ord_fadd_v1f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.v.f v26, fa0 -; CHECK-NEXT: vsetivli a0, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 1, e16,mf4,ta,mu ; CHECK-NEXT: vfredosum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.f.s fa0, v25 ; CHECK-NEXT: ret %v = load <1 x half>, <1 x half>* %x @@ -38,12 +39,13 @@ define half @vreduce_fadd_v2f16(<2 x half>* %x, half %s) { ; CHECK-LABEL: vreduce_fadd_v2f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.f.s ft0, v25 ; CHECK-NEXT: fadd.h fa0, fa0, ft0 ; CHECK-NEXT: ret @@ -55,12 +57,13 @@ define half @vreduce_ord_fadd_v2f16(<2 x half>* %x, half %s) { ; CHECK-LABEL: vreduce_ord_fadd_v2f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.v.f v26, fa0 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfredosum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.f.s fa0, v25 ; CHECK-NEXT: ret %v = load <2 x half>, <2 x half>* %x @@ -73,12 +76,13 @@ define half @vreduce_fadd_v4f16(<4 x half>* %x, half %s) { ; CHECK-LABEL: vreduce_fadd_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vfredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.f.s ft0, v25 ; CHECK-NEXT: fadd.h fa0, fa0, ft0 ; CHECK-NEXT: ret @@ -90,12 +94,13 @@ define half @vreduce_ord_fadd_v4f16(<4 x half>* %x, half %s) { ; CHECK-LABEL: vreduce_ord_fadd_v4f16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.v.f v26, fa0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vfredosum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vfmv.f.s fa0, v25 ; CHECK-NEXT: ret %v = load <4 x half>, <4 x half>* %x @@ -308,7 +313,7 @@ define float @vreduce_fadd_v1f32(<1 x float>* %x, float %s) { ; CHECK-LABEL: vreduce_fadd_v1f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vfmv.f.s ft0, v25 ; CHECK-NEXT: fadd.s fa0, fa0, ft0 @@ -321,12 +326,13 @@ define float @vreduce_ord_fadd_v1f32(<1 x float>* %x, float %s) { ; CHECK-LABEL: vreduce_ord_fadd_v1f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vfmv.v.f v26, fa0 -; CHECK-NEXT: vsetivli a0, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 1, e32,mf2,ta,mu ; CHECK-NEXT: vfredosum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vfmv.f.s fa0, v25 ; CHECK-NEXT: ret %v = load <1 x float>, <1 x float>* %x @@ -339,12 +345,13 @@ define float @vreduce_fadd_v2f32(<2 x float>* %x, float %s) { ; CHECK-LABEL: vreduce_fadd_v2f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vfmv.f.s ft0, v25 ; CHECK-NEXT: fadd.s fa0, fa0, ft0 ; CHECK-NEXT: ret @@ -356,12 +363,13 @@ define float @vreduce_ord_fadd_v2f32(<2 x float>* %x, float %s) { ; CHECK-LABEL: vreduce_ord_fadd_v2f32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vfmv.v.f v26, fa0 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfredosum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vfmv.f.s fa0, v25 ; CHECK-NEXT: ret %v = load <2 x float>, <2 x float>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-int.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-int.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-int.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-int.ll @@ -7,7 +7,7 @@ define i8 @vreduce_add_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_add_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -21,12 +21,13 @@ define i8 @vreduce_add_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_add_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -39,12 +40,13 @@ define i8 @vreduce_add_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_add_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -57,12 +59,13 @@ define i8 @vreduce_add_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_add_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -176,7 +179,7 @@ define i16 @vreduce_add_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_add_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -190,12 +193,13 @@ define i16 @vreduce_add_v2i16(<2 x i16>* %x) { ; CHECK-LABEL: vreduce_add_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -208,12 +212,13 @@ define i16 @vreduce_add_v4i16(<4 x i16>* %x) { ; CHECK-LABEL: vreduce_add_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -326,7 +331,7 @@ define i32 @vreduce_add_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_add_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -340,12 +345,13 @@ define i32 @vreduce_add_v2i32(<2 x i32>* %x) { ; CHECK-LABEL: vreduce_add_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vredsum.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x @@ -713,7 +719,7 @@ define i8 @vreduce_and_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_and_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -727,12 +733,13 @@ define i8 @vreduce_and_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_and_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredand.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -745,12 +752,13 @@ define i8 @vreduce_and_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_and_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredand.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -763,12 +771,13 @@ define i8 @vreduce_and_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_and_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredand.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -882,7 +891,7 @@ define i16 @vreduce_and_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_and_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -896,12 +905,13 @@ define i16 @vreduce_and_v2i16(<2 x i16>* %x) { ; CHECK-LABEL: vreduce_and_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vredand.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -914,12 +924,13 @@ define i16 @vreduce_and_v4i16(<4 x i16>* %x) { ; CHECK-LABEL: vreduce_and_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vredand.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -1032,7 +1043,7 @@ define i32 @vreduce_and_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_and_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -1046,12 +1057,13 @@ define i32 @vreduce_and_v2i32(<2 x i32>* %x) { ; CHECK-LABEL: vreduce_and_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vredand.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x @@ -1419,7 +1431,7 @@ define i8 @vreduce_or_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_or_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -1433,12 +1445,13 @@ define i8 @vreduce_or_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_or_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -1451,12 +1464,13 @@ define i8 @vreduce_or_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_or_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -1469,12 +1483,13 @@ define i8 @vreduce_or_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_or_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -1588,7 +1603,7 @@ define i16 @vreduce_or_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_or_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -1602,12 +1617,13 @@ define i16 @vreduce_or_v2i16(<2 x i16>* %x) { ; CHECK-LABEL: vreduce_or_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vredor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -1620,12 +1636,13 @@ define i16 @vreduce_or_v4i16(<4 x i16>* %x) { ; CHECK-LABEL: vreduce_or_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vredor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -1738,7 +1755,7 @@ define i32 @vreduce_or_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_or_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -1752,12 +1769,13 @@ define i32 @vreduce_or_v2i32(<2 x i32>* %x) { ; CHECK-LABEL: vreduce_or_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vredor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x @@ -2125,7 +2143,7 @@ define i8 @vreduce_xor_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_xor_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -2139,12 +2157,13 @@ define i8 @vreduce_xor_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_xor_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredxor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -2157,12 +2176,13 @@ define i8 @vreduce_xor_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_xor_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredxor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -2175,12 +2195,13 @@ define i8 @vreduce_xor_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_xor_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredxor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -2294,7 +2315,7 @@ define i16 @vreduce_xor_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_xor_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -2308,12 +2329,13 @@ define i16 @vreduce_xor_v2i16(<2 x i16>* %x) { ; CHECK-LABEL: vreduce_xor_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vredxor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -2326,12 +2348,13 @@ define i16 @vreduce_xor_v4i16(<4 x i16>* %x) { ; CHECK-LABEL: vreduce_xor_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vredxor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -2444,7 +2467,7 @@ define i32 @vreduce_xor_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_xor_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -2458,12 +2481,13 @@ define i32 @vreduce_xor_v2i32(<2 x i32>* %x) { ; CHECK-LABEL: vreduce_xor_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vredxor.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x @@ -2831,7 +2855,7 @@ define i8 @vreduce_smin_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_smin_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -2845,13 +2869,14 @@ define i8 @vreduce_smin_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_smin_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: addi a0, zero, 127 ; CHECK-NEXT: vsetvli a1, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredmin.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -2864,13 +2889,14 @@ define i8 @vreduce_smin_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_smin_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: addi a0, zero, 127 ; CHECK-NEXT: vsetvli a1, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredmin.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -2883,13 +2909,14 @@ define i8 @vreduce_smin_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_smin_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: addi a0, zero, 127 ; CHECK-NEXT: vsetvli a1, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredmin.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -3008,7 +3035,7 @@ define i16 @vreduce_smin_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_smin_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -3022,27 +3049,29 @@ define i16 @vreduce_smin_v2i16(<2 x i16>* %x) { ; RV32-LABEL: vreduce_smin_v2i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; RV32-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: lui a0, 8 ; RV32-NEXT: addi a0, a0, -1 ; RV32-NEXT: vsetvli a1, zero, e16,m1,ta,mu ; RV32-NEXT: vmv.v.x v26, a0 -; RV32-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV32-NEXT: vredmin.vs v25, v25, v26 +; RV32-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; RV32-NEXT: vmv.x.s a0, v25 ; RV32-NEXT: ret ; ; RV64-LABEL: vreduce_smin_v2i16: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; RV64-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; RV64-NEXT: vle16.v v25, (a0) ; RV64-NEXT: lui a0, 8 ; RV64-NEXT: addiw a0, a0, -1 ; RV64-NEXT: vsetvli a1, zero, e16,m1,ta,mu ; RV64-NEXT: vmv.v.x v26, a0 -; RV64-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; RV64-NEXT: vredmin.vs v25, v25, v26 +; RV64-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; RV64-NEXT: vmv.x.s a0, v25 ; RV64-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -3055,27 +3084,29 @@ define i16 @vreduce_smin_v4i16(<4 x i16>* %x) { ; RV32-LABEL: vreduce_smin_v4i16: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV32-NEXT: vle16.v v25, (a0) ; RV32-NEXT: lui a0, 8 ; RV32-NEXT: addi a0, a0, -1 ; RV32-NEXT: vsetvli a1, zero, e16,m1,ta,mu ; RV32-NEXT: vmv.v.x v26, a0 -; RV32-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; RV32-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; RV32-NEXT: vredmin.vs v25, v25, v26 +; RV32-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; RV32-NEXT: vmv.x.s a0, v25 ; RV32-NEXT: ret ; ; RV64-LABEL: vreduce_smin_v4i16: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV64-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV64-NEXT: vle16.v v25, (a0) ; RV64-NEXT: lui a0, 8 ; RV64-NEXT: addiw a0, a0, -1 ; RV64-NEXT: vsetvli a1, zero, e16,m1,ta,mu ; RV64-NEXT: vmv.v.x v26, a0 -; RV64-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; RV64-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; RV64-NEXT: vredmin.vs v25, v25, v26 +; RV64-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; RV64-NEXT: vmv.x.s a0, v25 ; RV64-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -3273,7 +3304,7 @@ define i32 @vreduce_smin_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_smin_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -3287,27 +3318,29 @@ define i32 @vreduce_smin_v2i32(<2 x i32>* %x) { ; RV32-LABEL: vreduce_smin_v2i32: ; RV32: # %bb.0: -; RV32-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; RV32-NEXT: vle32.v v25, (a0) ; RV32-NEXT: lui a0, 524288 ; RV32-NEXT: addi a0, a0, -1 ; RV32-NEXT: vsetvli a1, zero, e32,m1,ta,mu ; RV32-NEXT: vmv.v.x v26, a0 -; RV32-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV32-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV32-NEXT: vredmin.vs v25, v25, v26 +; RV32-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; RV32-NEXT: vmv.x.s a0, v25 ; RV32-NEXT: ret ; ; RV64-LABEL: vreduce_smin_v2i32: ; RV64: # %bb.0: -; RV64-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; RV64-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; RV64-NEXT: vle32.v v25, (a0) ; RV64-NEXT: lui a0, 524288 ; RV64-NEXT: addiw a0, a0, -1 ; RV64-NEXT: vsetvli a1, zero, e32,m1,ta,mu ; RV64-NEXT: vmv.v.x v26, a0 -; RV64-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; RV64-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; RV64-NEXT: vredmin.vs v25, v25, v26 +; RV64-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; RV64-NEXT: vmv.x.s a0, v25 ; RV64-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x @@ -3813,7 +3846,7 @@ define i8 @vreduce_smax_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_smax_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -3827,13 +3860,14 @@ define i8 @vreduce_smax_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_smax_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: addi a0, zero, -128 ; CHECK-NEXT: vsetvli a1, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredmax.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -3846,13 +3880,14 @@ define i8 @vreduce_smax_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_smax_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: addi a0, zero, -128 ; CHECK-NEXT: vsetvli a1, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredmax.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -3865,13 +3900,14 @@ define i8 @vreduce_smax_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_smax_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: addi a0, zero, -128 ; CHECK-NEXT: vsetvli a1, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredmax.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -3990,7 +4026,7 @@ define i16 @vreduce_smax_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_smax_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -4004,13 +4040,14 @@ define i16 @vreduce_smax_v2i16(<2 x i16>* %x) { ; CHECK-LABEL: vreduce_smax_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: lui a0, 1048568 ; CHECK-NEXT: vsetvli a1, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vredmax.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -4023,13 +4060,14 @@ define i16 @vreduce_smax_v4i16(<4 x i16>* %x) { ; CHECK-LABEL: vreduce_smax_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: lui a0, 1048568 ; CHECK-NEXT: vsetvli a1, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vredmax.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -4147,7 +4185,7 @@ define i32 @vreduce_smax_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_smax_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -4161,13 +4199,14 @@ define i32 @vreduce_smax_v2i32(<2 x i32>* %x) { ; CHECK-LABEL: vreduce_smax_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: lui a0, 524288 ; CHECK-NEXT: vsetvli a1, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.x v26, a0 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vredmax.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x @@ -4588,7 +4627,7 @@ define i8 @vreduce_umin_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_umin_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -4602,12 +4641,13 @@ define i8 @vreduce_umin_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_umin_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredminu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -4620,12 +4660,13 @@ define i8 @vreduce_umin_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_umin_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredminu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -4638,12 +4679,13 @@ define i8 @vreduce_umin_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_umin_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredminu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -4757,7 +4799,7 @@ define i16 @vreduce_umin_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_umin_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -4771,12 +4813,13 @@ define i16 @vreduce_umin_v2i16(<2 x i16>* %x) { ; CHECK-LABEL: vreduce_umin_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vredminu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -4789,12 +4832,13 @@ define i16 @vreduce_umin_v4i16(<4 x i16>* %x) { ; CHECK-LABEL: vreduce_umin_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vredminu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -4907,7 +4951,7 @@ define i32 @vreduce_umin_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_umin_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -4921,12 +4965,13 @@ define i32 @vreduce_umin_v2i32(<2 x i32>* %x) { ; CHECK-LABEL: vreduce_umin_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, -1 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vredminu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x @@ -5294,7 +5339,7 @@ define i8 @vreduce_umax_v1i8(<1 x i8>* %x) { ; CHECK-LABEL: vreduce_umax_v1i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -5308,12 +5353,13 @@ define i8 @vreduce_umax_v2i8(<2 x i8>* %x) { ; CHECK-LABEL: vreduce_umax_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vredmaxu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i8>, <2 x i8>* %x @@ -5326,12 +5372,13 @@ define i8 @vreduce_umax_v4i8(<4 x i8>* %x) { ; CHECK-LABEL: vreduce_umax_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vredmaxu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i8>, <4 x i8>* %x @@ -5344,12 +5391,13 @@ define i8 @vreduce_umax_v8i8(<8 x i8>* %x) { ; CHECK-LABEL: vreduce_umax_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle8.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vredmaxu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e8,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <8 x i8>, <8 x i8>* %x @@ -5463,7 +5511,7 @@ define i16 @vreduce_umax_v1i16(<1 x i16>* %x) { ; CHECK-LABEL: vreduce_umax_v1i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -5477,12 +5525,13 @@ define i16 @vreduce_umax_v2i16(<2 x i16>* %x) { ; CHECK-LABEL: vreduce_umax_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e16,mf4,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vredmaxu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i16>, <2 x i16>* %x @@ -5495,12 +5544,13 @@ define i16 @vreduce_umax_v4i16(<4 x i16>* %x) { ; CHECK-LABEL: vreduce_umax_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vredmaxu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e16,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <4 x i16>, <4 x i16>* %x @@ -5613,7 +5663,7 @@ define i32 @vreduce_umax_v1i32(<1 x i32>* %x) { ; CHECK-LABEL: vreduce_umax_v1i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret @@ -5627,12 +5677,13 @@ define i32 @vreduce_umax_v2i32(<2 x i32>* %x) { ; CHECK-LABEL: vreduce_umax_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e32,mf2,ta,mu ; CHECK-NEXT: vle32.v v25, (a0) ; CHECK-NEXT: vsetvli a0, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.v.i v26, 0 -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vredmaxu.vs v25, v25, v26 +; CHECK-NEXT: vsetvli zero, zero, e32,m1,ta,mu ; CHECK-NEXT: vmv.x.s a0, v25 ; CHECK-NEXT: ret %v = load <2 x i32>, <2 x i32>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv32.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv32.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv32.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv32.ll @@ -7,7 +7,7 @@ define <2 x i8> @stepvector_v2i8() { ; CHECK-LABEL: stepvector_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <2 x i8> @llvm.experimental.stepvector.v2i8() @@ -19,7 +19,7 @@ define <4 x i8> @stepvector_v4i8() { ; CHECK-LABEL: stepvector_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <4 x i8> @llvm.experimental.stepvector.v4i8() @@ -31,7 +31,7 @@ define <8 x i8> @stepvector_v8i8() { ; CHECK-LABEL: stepvector_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <8 x i8> @llvm.experimental.stepvector.v8i8() @@ -55,7 +55,7 @@ define <2 x i16> @stepvector_v2i16() { ; CHECK-LABEL: stepvector_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <2 x i16> @llvm.experimental.stepvector.v2i16() @@ -67,7 +67,7 @@ define <4 x i16> @stepvector_v4i16() { ; CHECK-LABEL: stepvector_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <4 x i16> @llvm.experimental.stepvector.v4i16() @@ -112,7 +112,7 @@ define <2 x i32> @stepvector_v2i32() { ; CHECK-LABEL: stepvector_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <2 x i32> @llvm.experimental.stepvector.v2i32() diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv64.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv64.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv64.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-stepvector-rv64.ll @@ -7,7 +7,7 @@ define <2 x i8> @stepvector_v2i8() { ; CHECK-LABEL: stepvector_v2i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <2 x i8> @llvm.experimental.stepvector.v2i8() @@ -19,7 +19,7 @@ define <4 x i8> @stepvector_v4i8() { ; CHECK-LABEL: stepvector_v4i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <4 x i8> @llvm.experimental.stepvector.v4i8() @@ -31,7 +31,7 @@ define <8 x i8> @stepvector_v8i8() { ; CHECK-LABEL: stepvector_v8i8: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <8 x i8> @llvm.experimental.stepvector.v8i8() @@ -55,7 +55,7 @@ define <2 x i16> @stepvector_v2i16() { ; CHECK-LABEL: stepvector_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <2 x i16> @llvm.experimental.stepvector.v2i16() @@ -67,7 +67,7 @@ define <4 x i16> @stepvector_v4i16() { ; CHECK-LABEL: stepvector_v4i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <4 x i16> @llvm.experimental.stepvector.v4i16() @@ -112,7 +112,7 @@ define <2 x i32> @stepvector_v2i32() { ; CHECK-LABEL: stepvector_v2i32: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vid.v v8 ; CHECK-NEXT: ret %v = call <2 x i32> @llvm.experimental.stepvector.v2i32() diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmax.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmax.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmax.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmax.ll @@ -9,7 +9,7 @@ define <2 x half> @vfmax_v2f16_vv(<2 x half> %a, <2 x half> %b) { ; CHECK-LABEL: vfmax_v2f16_vv: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfmax.vv v8, v8, v9 ; CHECK-NEXT: ret %v = call <2 x half> @llvm.maxnum.v2f16(<2 x half> %a, <2 x half> %b) @@ -19,7 +19,7 @@ define <2 x half> @vfmax_v2f16_vf(<2 x half> %a, half %b) { ; CHECK-LABEL: vfmax_v2f16_vf: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfmax.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement <2 x half> undef, half %b, i32 0 @@ -33,7 +33,7 @@ define <4 x half> @vfmax_v4f16_vv(<4 x half> %a, <4 x half> %b) { ; CHECK-LABEL: vfmax_v4f16_vv: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vfmax.vv v8, v8, v9 ; CHECK-NEXT: ret %v = call <4 x half> @llvm.maxnum.v4f16(<4 x half> %a, <4 x half> %b) @@ -43,7 +43,7 @@ define <4 x half> @vfmax_v4f16_vf(<4 x half> %a, half %b) { ; CHECK-LABEL: vfmax_v4f16_vf: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vfmax.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement <4 x half> undef, half %b, i32 0 @@ -105,7 +105,7 @@ define <2 x float> @vfmax_v2f32_vv(<2 x float> %a, <2 x float> %b) { ; CHECK-LABEL: vfmax_v2f32_vv: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfmax.vv v8, v8, v9 ; CHECK-NEXT: ret %v = call <2 x float> @llvm.maxnum.v2f32(<2 x float> %a, <2 x float> %b) @@ -115,7 +115,7 @@ define <2 x float> @vfmax_v2f32_vf(<2 x float> %a, float %b) { ; CHECK-LABEL: vfmax_v2f32_vf: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfmax.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement <2 x float> undef, float %b, i32 0 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmin.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmin.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmin.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmin.ll @@ -9,7 +9,7 @@ define <2 x half> @vfmin_v2f16_vv(<2 x half> %a, <2 x half> %b) { ; CHECK-LABEL: vfmin_v2f16_vv: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfmin.vv v8, v8, v9 ; CHECK-NEXT: ret %v = call <2 x half> @llvm.minnum.v2f16(<2 x half> %a, <2 x half> %b) @@ -19,7 +19,7 @@ define <2 x half> @vfmin_v2f16_vf(<2 x half> %a, half %b) { ; CHECK-LABEL: vfmin_v2f16_vf: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e16,mf4,ta,mu ; CHECK-NEXT: vfmin.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement <2 x half> undef, half %b, i32 0 @@ -33,7 +33,7 @@ define <4 x half> @vfmin_v4f16_vv(<4 x half> %a, <4 x half> %b) { ; CHECK-LABEL: vfmin_v4f16_vv: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vfmin.vv v8, v8, v9 ; CHECK-NEXT: ret %v = call <4 x half> @llvm.minnum.v4f16(<4 x half> %a, <4 x half> %b) @@ -43,7 +43,7 @@ define <4 x half> @vfmin_v4f16_vf(<4 x half> %a, half %b) { ; CHECK-LABEL: vfmin_v4f16_vf: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e16,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e16,mf2,ta,mu ; CHECK-NEXT: vfmin.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement <4 x half> undef, half %b, i32 0 @@ -105,7 +105,7 @@ define <2 x float> @vfmin_v2f32_vv(<2 x float> %a, <2 x float> %b) { ; CHECK-LABEL: vfmin_v2f32_vv: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfmin.vv v8, v8, v9 ; CHECK-NEXT: ret %v = call <2 x float> @llvm.minnum.v2f32(<2 x float> %a, <2 x float> %b) @@ -115,7 +115,7 @@ define <2 x float> @vfmin_v2f32_vf(<2 x float> %a, float %b) { ; CHECK-LABEL: vfmin_v2f32_vf: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e32,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; CHECK-NEXT: vfmin.vf v8, v8, fa0 ; CHECK-NEXT: ret %head = insertelement <2 x float> undef, float %b, i32 0 diff --git a/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll b/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll --- a/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll +++ b/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll @@ -712,7 +712,7 @@ ; RV32MV-NEXT: sw a1, 12(sp) ; RV32MV-NEXT: sw a0, 8(sp) ; RV32MV-NEXT: addi a0, zero, 85 -; RV32MV-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; RV32MV-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; RV32MV-NEXT: vmv.s.x v0, a0 ; RV32MV-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; RV32MV-NEXT: vmv.v.i v26, 1 diff --git a/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll b/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll --- a/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll +++ b/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll @@ -566,7 +566,7 @@ ; RV32MV-NEXT: or a1, a1, a2 ; RV32MV-NEXT: andi a1, a1, 2047 ; RV32MV-NEXT: sh a1, 12(sp) -; RV32MV-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV32MV-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV32MV-NEXT: addi a1, sp, 8 ; RV32MV-NEXT: vle16.v v25, (a1) ; RV32MV-NEXT: lui a1, %hi(.LCPI4_0) @@ -594,7 +594,7 @@ ; RV32MV-NEXT: vand.vx v25, v25, a1 ; RV32MV-NEXT: vmsltu.vv v0, v29, v25 ; RV32MV-NEXT: vmerge.vim v25, v27, -1, v0 -; RV32MV-NEXT: vsetivli a1, 1, e16,m1,ta,mu +; RV32MV-NEXT: vsetivli a1, 1, e16,mf2,ta,mu ; RV32MV-NEXT: vslidedown.vi v26, v25, 2 ; RV32MV-NEXT: vmv.x.s a1, v26 ; RV32MV-NEXT: srli a2, a1, 10 @@ -627,7 +627,7 @@ ; RV64MV-NEXT: srli a1, a1, 11 ; RV64MV-NEXT: andi a1, a1, 2047 ; RV64MV-NEXT: sh a1, 10(sp) -; RV64MV-NEXT: vsetivli a1, 4, e16,m1,ta,mu +; RV64MV-NEXT: vsetivli a1, 4, e16,mf2,ta,mu ; RV64MV-NEXT: addi a1, sp, 8 ; RV64MV-NEXT: vle16.v v25, (a1) ; RV64MV-NEXT: lui a1, %hi(.LCPI4_0) @@ -657,7 +657,7 @@ ; RV64MV-NEXT: vmerge.vim v25, v27, -1, v0 ; RV64MV-NEXT: vmv.x.s a1, v25 ; RV64MV-NEXT: andi a1, a1, 2047 -; RV64MV-NEXT: vsetivli a2, 1, e16,m1,ta,mu +; RV64MV-NEXT: vsetivli a2, 1, e16,mf2,ta,mu ; RV64MV-NEXT: vslidedown.vi v26, v25, 1 ; RV64MV-NEXT: vmv.x.s a2, v26 ; RV64MV-NEXT: andi a2, a2, 2047