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 @@ -1216,14 +1216,7 @@ switch (EltVT.SimpleTy) { default: llvm_unreachable("unexpected element type for RVV container"); - case MVT::i1: { - // Masks are calculated assuming 8-bit elements since that's when we need - // the most elements. - MinVLen /= 8; - unsigned LMul = divideCeil(VT.getSizeInBits(), MinVLen); - unsigned EltsPerBlock = RISCV::RVVBitsPerBlock / 8; - return MVT::getScalableVectorVT(MVT::i1, LMul * EltsPerBlock); - } + case MVT::i1: case MVT::i8: case MVT::i16: case MVT::i32: @@ -1231,9 +1224,12 @@ case MVT::f16: case MVT::f32: case MVT::f64: { - unsigned LMul = divideCeil(VT.getSizeInBits(), MinVLen); - unsigned EltsPerBlock = RISCV::RVVBitsPerBlock / EltVT.getSizeInBits(); - return MVT::getScalableVectorVT(EltVT, LMul * EltsPerBlock); + // We prefer to use LMUL=1 for VLEN sized types. Use fractional lmuls for + // narrower types, but we can't have a fractional LMUL with demoninator less + // than 64/SEW. + unsigned NumElts = + divideCeil(VT.getVectorNumElements(), MinVLen / RISCV::RVVBitsPerBlock); + 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 @@ -381,7 +381,7 @@ ; LMULMAX2-RV32-NEXT: lui a4, 4080 ; LMULMAX2-RV32-NEXT: vand.vx v27, v27, a4 ; LMULMAX2-RV32-NEXT: addi a5, zero, 5 -; LMULMAX2-RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a5 ; LMULMAX2-RV32-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v28, 0 @@ -581,7 +581,7 @@ ; LMULMAX1-RV32-NEXT: lui a4, 4080 ; LMULMAX1-RV32-NEXT: vand.vx v27, v27, a4 ; LMULMAX1-RV32-NEXT: addi a5, zero, 5 -; LMULMAX1-RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; LMULMAX1-RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; LMULMAX1-RV32-NEXT: vmv.s.x v0, a5 ; LMULMAX1-RV32-NEXT: vsetivli a1, 4, e32,m1,ta,mu ; LMULMAX1-RV32-NEXT: vmv.v.i v28, 0 @@ -1245,7 +1245,7 @@ ; LMULMAX2-RV32-NEXT: lui a4, 4080 ; LMULMAX2-RV32-NEXT: vand.vx v30, v30, a4 ; LMULMAX2-RV32-NEXT: addi a5, zero, 85 -; LMULMAX2-RV32-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; LMULMAX2-RV32-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; LMULMAX2-RV32-NEXT: vmv.s.x v0, a5 ; LMULMAX2-RV32-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmv.v.i v8, 0 @@ -1447,7 +1447,7 @@ ; LMULMAX1-RV32-NEXT: lui a6, 4080 ; LMULMAX1-RV32-NEXT: vand.vx v28, v26, a6 ; 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 @@ -107,7 +107,7 @@ define <8 x i1> @ret_mask_v8i1(<8 x i1>* %p) { ; CHECK-LABEL: ret_mask_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) ; CHECK-NEXT: ret %v = load <8 x i1>, <8 x i1>* %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 @@ -539,7 +539,7 @@ define <8 x i1> @ret_v8i1_param_v8i1_v8i1(<8 x i1> %v, <8 x i1> %w) { ; CHECK-LABEL: ret_v8i1_param_v8i1_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmxor.mm v0, v0, v8 ; CHECK-NEXT: ret %r = xor <8 x i1> %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, 128 ; 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, 128 ; 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 @@ -7,9 +7,9 @@ define <2 x i16> @sextload_v2i1_v2i16(<2 x i1>* %x) { ; CHECK-LABEL: sextload_v2i1_v2i16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,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,9 +151,9 @@ 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, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v9, v26 @@ -162,7 +162,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 @@ -175,9 +175,9 @@ 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, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v9, v26 @@ -186,7 +186,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 @@ -199,7 +199,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 @@ -212,7 +212,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 @@ -225,9 +225,9 @@ 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, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v9, v26 @@ -236,7 +236,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 @@ -249,9 +249,9 @@ 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, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v9, v26 @@ -260,7 +260,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 @@ -273,26 +273,26 @@ 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, 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: 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, 2, e8,mf4,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: vslidedown.vi v26, v25, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf8 v9, v26 ; LMULMAX1-NEXT: vsext.vf8 v8, 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 @@ -305,26 +305,26 @@ 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, 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: 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, 2, e8,mf4,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: vslidedown.vi v26, v25, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf8 v9, v26 ; LMULMAX1-NEXT: vzext.vf8 v8, 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 @@ -391,14 +391,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: 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 v9, v27 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,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: vslidedown.vi v26, v25, 4 -; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v9, v26 ; LMULMAX1-NEXT: vsext.vf4 v8, v25 ; LMULMAX1-NEXT: ret ; @@ -423,14 +423,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: 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: vzext.vf4 v9, v27 +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,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: vslidedown.vi v26, v25, 4 -; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v9, v26 ; LMULMAX1-NEXT: vzext.vf4 v8, v25 ; LMULMAX1-NEXT: ret ; @@ -455,30 +455,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 v27, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v10, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v28, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf8 v13, v28 +; 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 v27, v27, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf8 v11, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf8 v13, v26 +; LMULMAX1-NEXT: vsext.vf8 v15, v26 ; LMULMAX1-NEXT: vsext.vf8 v8, v25 ; LMULMAX1-NEXT: ret ; @@ -506,30 +506,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 v27, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v10, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v28, v26, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf8 v13, v28 +; 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 v27, v27, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf8 v11, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 2, e8,mf4,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf8 v13, v26 +; LMULMAX1-NEXT: vzext.vf8 v15, v26 ; LMULMAX1-NEXT: vzext.vf8 v8, v25 ; LMULMAX1-NEXT: ret ; @@ -551,16 +551,16 @@ 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -572,9 +572,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> @@ -585,9 +584,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 @@ -598,9 +597,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 @@ -611,7 +610,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 @@ -624,7 +623,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 @@ -637,9 +636,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> @@ -650,7 +648,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 @@ -663,7 +661,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 @@ -676,9 +674,9 @@ 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, 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 v9, v26 @@ -687,7 +685,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 @@ -700,9 +698,9 @@ 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, 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 v9, v26 @@ -711,7 +709,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 @@ -726,7 +724,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> @@ -791,14 +788,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: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v25, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v9, v27 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,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: vslidedown.vi v26, v25, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v9, v26 ; LMULMAX1-NEXT: vsext.vf4 v8, v25 ; LMULMAX1-NEXT: ret ; @@ -823,14 +820,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: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v25, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v9, v27 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,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: vslidedown.vi v26, v25, 2 -; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v9, v26 ; LMULMAX1-NEXT: vzext.vf4 v8, v25 ; LMULMAX1-NEXT: ret ; @@ -947,26 +944,26 @@ ; 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: 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: vsext.vf4 v14, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 +; LMULMAX1-NEXT: vsext.vf4 v14, v28 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v29, v25, 2 ; 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: vslidedown.vi v27, v25, 2 +; LMULMAX1-NEXT: vsext.vf4 v9, v29 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v9, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v11, v27 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v27, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v13, v27 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v28, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vsext.vf4 v15, v27 ; LMULMAX1-NEXT: vsext.vf4 v8, v25 ; LMULMAX1-NEXT: vsext.vf4 v12, v26 ; LMULMAX1-NEXT: ret @@ -997,26 +994,26 @@ ; 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: 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: vzext.vf4 v14, v28 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v29, v25, 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: vslidedown.vi v27, v25, 2 +; LMULMAX1-NEXT: vzext.vf4 v9, v29 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v9, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v11, v27 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v27, v26, 2 ; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vzext.vf4 v13, v27 +; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf2,ta,mu +; LMULMAX1-NEXT: vslidedown.vi v27, v28, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e64,m1,ta,mu +; LMULMAX1-NEXT: vzext.vf4 v15, v27 ; LMULMAX1-NEXT: vzext.vf4 v8, v25 ; LMULMAX1-NEXT: vzext.vf4 v12, v26 ; LMULMAX1-NEXT: ret @@ -1039,11 +1036,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> @@ -1054,9 +1050,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> @@ -1067,7 +1062,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 @@ -1080,7 +1075,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 @@ -1097,7 +1092,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> @@ -1110,7 +1104,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> @@ -1173,17 +1166,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 ; @@ -1193,7 +1186,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> @@ -1295,38 +1287,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 @@ -1488,7 +1480,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> @@ -1503,7 +1494,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> @@ -1516,7 +1506,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> @@ -1533,9 +1522,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 @@ -1543,9 +1532,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 ; @@ -1557,7 +1546,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> @@ -1572,17 +1560,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 ; @@ -1592,7 +1580,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> @@ -1632,47 +1619,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 ; @@ -1684,7 +1671,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> @@ -1696,38 +1682,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 @@ -1788,92 +1774,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: @@ -1908,72 +1895,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) @@ -211,7 +215,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, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret ; @@ -219,7 +223,7 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <64 x i1>, <64 x i1>* %x @@ -234,9 +238,9 @@ ; 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: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret ; @@ -244,9 +248,9 @@ ; 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: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <64 x i1>, <64 x i1>* %x @@ -262,9 +266,9 @@ ; 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: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX2-NEXT: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret ; @@ -273,7 +277,7 @@ ; LMULMAX1-NEXT: addi a0, a0, 6 ; LMULMAX1-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; LMULMAX1-NEXT: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret %a = load <64 x i1>, <64 x i1>* %x @@ -285,7 +289,7 @@ define void @extract_v8i1_nxv2i1_0( %x, <8 x i1>* %y) { ; CHECK-LABEL: extract_v8i1_nxv2i1_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v0, (a0) ; CHECK-NEXT: ret %c = call <8 x i1> @llvm.experimental.vector.extract.v8i1.nxv2i1( %x, i64 0) @@ -301,7 +305,7 @@ ; 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: vse1.v v26, (a0) ; CHECK-NEXT: ret @@ -313,7 +317,7 @@ define void @extract_v8i1_nxv64i1_0( %x, <8 x i1>* %y) { ; CHECK-LABEL: extract_v8i1_nxv64i1_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v0, (a0) ; CHECK-NEXT: ret %c = call <8 x i1> @llvm.experimental.vector.extract.v8i1.nxv64i1( %x, i64 0) @@ -326,7 +330,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v0, 1 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <8 x i1> @llvm.experimental.vector.extract.v8i1.nxv64i1( %x, i64 8) @@ -339,7 +343,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v0, 6 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <8 x i1> @llvm.experimental.vector.extract.v8i1.nxv64i1( %x, i64 48) @@ -354,14 +358,14 @@ ; 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: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret @@ -370,14 +374,14 @@ ; 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: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret @@ -397,15 +401,15 @@ ; 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: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret @@ -418,14 +422,15 @@ ; 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: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret @@ -446,15 +451,15 @@ ; 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: vse1.v v25, (a1) ; LMULMAX2-NEXT: ret @@ -468,14 +473,15 @@ ; 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: vse1.v v25, (a1) ; LMULMAX1-NEXT: ret @@ -488,14 +494,14 @@ 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -512,15 +518,15 @@ ; 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -532,14 +538,14 @@ 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -556,15 +562,15 @@ ; 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -582,15 +588,15 @@ ; 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -607,15 +613,15 @@ ; 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -629,7 +635,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a1, 1, e8,mf2,ta,mu ; CHECK-NEXT: vslidedown.vi v25, v0, 2 -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret %c = call <8 x i1> @llvm.experimental.vector.extract.v8i1.nxv32i1( %x, i64 16) 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 @@ -84,7 +82,7 @@ ; 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 @@ -92,26 +90,26 @@ ; 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 v28, v27 -; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu ; LMULMAX1-NEXT: vfwcvt.f.f.v v29, v28 -; LMULMAX1-NEXT: vsetivli a0, 2, e16,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 2 +; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu +; LMULMAX1-NEXT: vfwcvt.f.f.v v28, v29 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v28, v27 +; LMULMAX1-NEXT: vfwcvt.f.f.v v29, v27 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v27, v28 +; LMULMAX1-NEXT: vfwcvt.f.f.v v27, v29 ; LMULMAX1-NEXT: vsetivli a0, 2, e16,mf4,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v28, v25 +; LMULMAX1-NEXT: vfwcvt.f.f.v v29, v25 ; LMULMAX1-NEXT: vsetivli a0, 2, e32,mf2,ta,mu -; LMULMAX1-NEXT: vfwcvt.f.f.v v25, v28 -; LMULMAX1-NEXT: addi a0, a1, 48 +; LMULMAX1-NEXT: vfwcvt.f.f.v v25, v29 +; LMULMAX1-NEXT: addi a0, a1, 32 ; LMULMAX1-NEXT: vsetivli a2, 2, e64,m1,ta,mu ; LMULMAX1-NEXT: vse64.v v27, (a0) -; LMULMAX1-NEXT: addi a0, a1, 32 -; LMULMAX1-NEXT: vse64.v v29, (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 @@ -124,11 +122,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 @@ -146,7 +143,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 @@ -176,11 +172,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) @@ -222,23 +215,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 @@ -247,9 +237,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 @@ -9,7 +9,7 @@ ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vle16.v v26, (a1) ; CHECK-NEXT: vmfeq.vv v27, v25, v26 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v27, (a2) ; CHECK-NEXT: ret %a = load <8 x half>, <8 x half>* %x @@ -26,7 +26,7 @@ ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vle16.v v26, (a1) ; CHECK-NEXT: vmfeq.vv v27, v25, v26 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v27, (a2) ; CHECK-NEXT: ret %a = load <8 x half>, <8 x half>* %x @@ -43,14 +43,14 @@ ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -68,14 +68,14 @@ ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -93,14 +93,14 @@ ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -118,14 +118,14 @@ ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -177,7 +177,7 @@ ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vle32.v v28, (a1) ; CHECK-NEXT: vmfle.vv v25, v28, v26 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <8 x float>, <8 x float>* %x @@ -194,7 +194,7 @@ ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vle32.v v28, (a1) ; CHECK-NEXT: vmfle.vv v25, v28, v26 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <8 x float>, <8 x float>* %x @@ -211,14 +211,14 @@ ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -236,14 +236,14 @@ ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -333,7 +333,7 @@ ; CHECK-NEXT: vle64.v v28, (a0) ; CHECK-NEXT: vle64.v v8, (a1) ; CHECK-NEXT: vmfle.vv v25, v8, v28 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmnand.mm v25, v25, v25 ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -351,7 +351,7 @@ ; CHECK-NEXT: vle64.v v28, (a0) ; CHECK-NEXT: vle64.v v8, (a1) ; CHECK-NEXT: vmflt.vv v25, v28, v8 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a2) ; CHECK-NEXT: ret %a = load <8 x double>, <8 x double>* %x @@ -475,20 +475,20 @@ 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: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmand.mm v0, v25, v27 ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -502,20 +502,20 @@ 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: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmor.mm v0, v25, v27 ; 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: vse1.v v25, (a2) ; CHECK-NEXT: ret @@ -532,7 +532,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmfeq.vf v26, v25, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v26, (a1) ; CHECK-NEXT: ret %a = load <8 x half>, <8 x half>* %x @@ -549,7 +549,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmfeq.vf v26, v25, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v26, (a1) ; CHECK-NEXT: ret %a = load <8 x half>, <8 x half>* %x @@ -566,14 +566,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -591,14 +591,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -616,14 +616,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -641,14 +641,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -700,7 +700,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vmfge.vf v25, v26, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x float>, <8 x float>* %x @@ -717,7 +717,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vmfge.vf v25, v26, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x float>, <8 x float>* %x @@ -734,14 +734,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -759,14 +759,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -856,7 +856,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e64,m4,ta,mu ; CHECK-NEXT: vle64.v v28, (a0) ; CHECK-NEXT: vmfge.vf v25, v28, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmnand.mm v25, v25, v25 ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -874,7 +874,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e64,m4,ta,mu ; CHECK-NEXT: vle64.v v28, (a0) ; CHECK-NEXT: vmflt.vf v25, v28, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x double>, <8 x double>* %x @@ -999,20 +999,20 @@ 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: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmand.mm v0, v26, v27 ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1027,20 +1027,20 @@ 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: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmor.mm v0, v26, v27 ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1058,7 +1058,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmfeq.vf v26, v25, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v26, (a1) ; CHECK-NEXT: ret %a = load <8 x half>, <8 x half>* %x @@ -1075,7 +1075,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e16,m1,ta,mu ; CHECK-NEXT: vle16.v v25, (a0) ; CHECK-NEXT: vmfeq.vf v26, v25, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v26, (a1) ; CHECK-NEXT: ret %a = load <8 x half>, <8 x half>* %x @@ -1092,14 +1092,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1117,14 +1117,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1142,14 +1142,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1167,14 +1167,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1226,7 +1226,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vmfle.vf v25, v26, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x float>, <8 x float>* %x @@ -1243,7 +1243,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vmfle.vf v25, v26, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x float>, <8 x float>* %x @@ -1260,14 +1260,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1285,14 +1285,14 @@ ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1382,7 +1382,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e64,m4,ta,mu ; CHECK-NEXT: vle64.v v28, (a0) ; CHECK-NEXT: vmfle.vf v25, v28, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmnand.mm v25, v25, v25 ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1400,7 +1400,7 @@ ; CHECK-NEXT: vsetivli a2, 8, e64,m4,ta,mu ; CHECK-NEXT: vle64.v v28, (a0) ; CHECK-NEXT: vmfgt.vf v25, v28, fa0 -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret %a = load <8 x double>, <8 x double>* %x @@ -1525,20 +1525,20 @@ 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.vf v27, v26, fa0 ; CHECK-NEXT: vmfeq.vv v26, v25, v25 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmand.mm v0, v27, v26 ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -1553,20 +1553,20 @@ 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.vf v27, v26, fa0 ; CHECK-NEXT: vmfne.vv v26, v25, v25 -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmor.mm v0, v27, v26 ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret 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 @@ -111,21 +111,21 @@ define <4 x double> @vrgather_shuffle_vv_v4f64(<4 x double> %x, <4 x double> %y) { ; RV32-LABEL: vrgather_shuffle_vv_v4f64: ; RV32: # %bb.0: +; RV32-NEXT: addi a0, zero, 1 +; 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,mf2,tu,mu +; RV32-NEXT: vslideup.vi v28, v25, 3 ; 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 ; RV32-NEXT: addi a0, zero, 8 -; 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: addi a0, zero, 1 -; RV32-NEXT: vsetivli a1, 4, e16,m1,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: vslideup.vi v28, v25, 3 ; RV32-NEXT: vsetivli a0, 4, e64,m2,tu,mu ; RV32-NEXT: vrgatherei16.vv v26, v10, v28, v0.t ; RV32-NEXT: vmv2r.v v8, v26 @@ -145,7 +145,7 @@ ; RV64-NEXT: vle64.v v30, (a0) ; RV64-NEXT: vrgather.vv v26, v8, v30 ; 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: vsetivli a0, 4, e64,m2,tu,mu ; RV64-NEXT: vrgather.vv v26, v10, v28, v0.t @@ -159,16 +159,16 @@ ; RV32-LABEL: vrgather_shuffle_xv_v4f64: ; RV32: # %bb.0: ; RV32-NEXT: addi a0, zero, 12 -; 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: vsetivli a1, 4, e64,m2,ta,mu -; RV32-NEXT: vlse64.v v26, (a0), zero +; RV32-NEXT: vsetivli a1, 4, e16,mf2,ta,mu +; RV32-NEXT: vle16.v v25, (a0) ; 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 a1, 4, e64,m2,ta,mu +; RV32-NEXT: vlse64.v v26, (a0), zero ; 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,13 +198,13 @@ ; 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: 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: vsetivli a1, 1, e8,mf8,ta,mu +; RV32-NEXT: vmv.s.x v0, a0 ; RV32-NEXT: lui a0, %hi(.LCPI8_0) ; RV32-NEXT: addi a0, a0, %lo(.LCPI8_0) ; RV32-NEXT: vsetivli a1, 4, e64,m2,ta,mu @@ -222,7 +222,7 @@ ; RV64-NEXT: vmv.v.i v28, 0 ; RV64-NEXT: vsetivli a1, 2, e64,m2,tu,mu ; RV64-NEXT: vslideup.vi v28, v26, 1 -; 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(.LCPI8_0) ; RV64-NEXT: addi a0, a0, %lo(.LCPI8_0) 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) @@ -203,9 +201,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 @@ -221,9 +218,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 @@ -243,11 +239,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 @@ -263,11 +258,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 @@ -287,63 +281,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> @@ -362,63 +355,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: 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, e64,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v28, v27 -; LMULMAX1-NEXT: vfcvt.f.x.v v28, v28 -; 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 v29, v28 +; LMULMAX1-NEXT: vfcvt.f.x.v v28, v29 ; LMULMAX1-NEXT: vsext.vf4 v29, v27 ; LMULMAX1-NEXT: vfcvt.f.x.v v27, 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 v27, (a0) ; LMULMAX1-NEXT: addi a0, a1, 32 -; LMULMAX1-NEXT: vse64.v v28, (a0) +; 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 @@ -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: 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, e64,m1,ta,mu -; LMULMAX1-NEXT: vzext.vf4 v28, v27 -; LMULMAX1-NEXT: vfcvt.f.xu.v v28, v28 -; 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 v29, v28 +; LMULMAX1-NEXT: vfcvt.f.xu.v v28, v29 ; LMULMAX1-NEXT: vzext.vf4 v29, v27 ; LMULMAX1-NEXT: vfcvt.f.xu.v v27, 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 v27, (a0) ; LMULMAX1-NEXT: addi a0, a1, 32 -; LMULMAX1-NEXT: vse64.v v28, (a0) +; 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 @@ -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 @@ -348,9 +348,9 @@ ; LMULMAX2-NEXT: addi a2, zero, 32 ; LMULMAX2-NEXT: vsetvli a3, a2, e8,m2,ta,mu ; LMULMAX2-NEXT: vle1.v v25, (a0) -; LMULMAX2-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a3, 8, e8,mf2,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) @@ -360,9 +360,9 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 8, e8,mf2,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) @@ -380,9 +380,9 @@ ; LMULMAX2-NEXT: addi a2, zero, 32 ; LMULMAX2-NEXT: vsetvli a3, a2, e8,m2,ta,mu ; LMULMAX2-NEXT: vle1.v v25, (a0) -; LMULMAX2-NEXT: vsetivli a3, 8, e8,m1,ta,mu +; LMULMAX2-NEXT: vsetivli a3, 8, e8,mf2,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) @@ -393,9 +393,9 @@ ; LMULMAX1-NEXT: addi a0, a0, 2 ; LMULMAX1-NEXT: vsetivli a2, 16, e8,m1,ta,mu ; LMULMAX1-NEXT: vle1.v v25, (a0) -; LMULMAX1-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a2, 8, e8,mf2,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) @@ -410,21 +410,22 @@ define void @insert_v8i1_v4i1_0(<8 x i1>* %vp, <4 x i1>* %svp) { ; 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: vsetivli a2, 4, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v0, (a1) +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu +; CHECK-NEXT: vle1.v v0, (a0) +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu +; 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, 8, e8,m1,ta,mu -; CHECK-NEXT: vmsne.vi v25, v26, 0 -; CHECK-NEXT: vse1.v v25, (a0) +; 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: 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 @@ -436,21 +437,22 @@ define void @insert_v8i1_v4i1_4(<8 x i1>* %vp, <4 x i1>* %svp) { ; 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: vsetivli a2, 4, e8,m1,ta,mu -; CHECK-NEXT: vle1.v v0, (a1) +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu +; CHECK-NEXT: vle1.v v0, (a0) +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu +; 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,m1,ta,mu -; CHECK-NEXT: vmsne.vi v25, v26, 0 -; CHECK-NEXT: vse1.v v25, (a0) +; 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: 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 +464,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 +477,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 @@ -488,12 +490,12 @@ define @insert_nxv2i1_v4i1_0( %v, <4 x i1>* %svp) { ; CHECK-LABEL: insert_nxv2i1_v4i1_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle1.v v27, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 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 @@ -510,12 +512,12 @@ define @insert_nxv2i1_v4i1_6( %v, <4 x i1>* %svp) { ; CHECK-LABEL: insert_nxv2i1_v4i1_6: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle1.v v27, (a0) ; CHECK-NEXT: vsetvli a0, zero, e8,mf4,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 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 @@ -532,7 +534,7 @@ define @insert_nxv8i1_v4i1_0( %v, <8 x i1>* %svp) { ; CHECK-LABEL: insert_nxv8i1_v4i1_0: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 1, e8,mf8,tu,mu ; CHECK-NEXT: vslideup.vi v0, v25, 0 @@ -545,7 +547,7 @@ define @insert_nxv8i1_v8i1_16( %v, <8 x i1>* %svp) { ; CHECK-LABEL: insert_nxv8i1_v8i1_16: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v25, (a0) ; CHECK-NEXT: vsetivli a0, 3, e8,mf8,tu,mu ; CHECK-NEXT: vslideup.vi v0, v25, 2 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 @@ -268,15 +268,15 @@ ; RV32-NEXT: addi a1, zero, 3 ; RV32-NEXT: sb a1, 8(a0) ; 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: ret @@ -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,9 +57,9 @@ ; ; 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, e8,m1,ta,mu +; LMULMAX1-NEXT: vsetivli a0, 4, e8,mf2,ta,mu ; LMULMAX1-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu ; LMULMAX1-NEXT: vsext.vf4 v27, v26 @@ -117,45 +117,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: vsetivli a0, 8, e8,m1,ta,mu ; 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, v27 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 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, v27 +; LMULMAX1-NEXT: vsext.vf4 v31, v29 ; LMULMAX1-NEXT: vsetivli a0, 8, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, 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 v9, v8 ; LMULMAX1-NEXT: vsext.vf4 v8, v27 -; LMULMAX1-NEXT: vsetivli a0, 4, e8,m1,ta,mu -; LMULMAX1-NEXT: vslidedown.vi v27, v27, 4 -; LMULMAX1-NEXT: vsetivli a0, 4, e32,m1,ta,mu -; LMULMAX1-NEXT: vsext.vf4 v9, v27 -; LMULMAX1-NEXT: vsext.vf4 v27, v25 +; LMULMAX1-NEXT: vsext.vf4 v27, v29 +; LMULMAX1-NEXT: vsext.vf4 v29, v25 ; LMULMAX1-NEXT: vsext.vf4 v25, v26 -; LMULMAX1-NEXT: addi a0, a1, 48 -; LMULMAX1-NEXT: vse32.v v9, (a0) ; LMULMAX1-NEXT: addi a0, a1, 32 -; LMULMAX1-NEXT: vse32.v v8, (a0) +; LMULMAX1-NEXT: vse32.v v27, (a0) ; LMULMAX1-NEXT: vse32.v v25, (a1) -; LMULMAX1-NEXT: addi a0, a1, 112 -; LMULMAX1-NEXT: vse32.v v31, (a0) ; LMULMAX1-NEXT: addi a0, a1, 96 -; LMULMAX1-NEXT: vse32.v v30, (a0) +; LMULMAX1-NEXT: vse32.v v8, (a0) ; LMULMAX1-NEXT: addi a0, a1, 64 -; LMULMAX1-NEXT: vse32.v v27, (a0) -; LMULMAX1-NEXT: addi a0, a1, 16 ; LMULMAX1-NEXT: vse32.v v29, (a0) +; LMULMAX1-NEXT: addi a0, a1, 48 +; LMULMAX1-NEXT: vse32.v v9, (a0) +; LMULMAX1-NEXT: addi a0, a1, 16 +; 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 @@ -174,7 +172,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 @@ -192,7 +189,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 ; @@ -204,7 +200,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 ; @@ -218,17 +213,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,7 +82,7 @@ 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 @@ -165,7 +165,7 @@ 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 @@ -248,7 +248,7 @@ 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 @@ -333,7 +333,7 @@ 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: vse1.v v26, (a2) @@ -416,7 +416,7 @@ 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: vse1.v v26, (a2) @@ -500,7 +500,7 @@ 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 @@ -584,7 +584,7 @@ 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: vse1.v v26, (a1) @@ -668,7 +668,7 @@ 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: vse1.v v26, (a1) 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: 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: 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: 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 @@ -218,7 +218,7 @@ ; RV32-NEXT: vsetivli a0, 8, e64,m4,ta,mu ; RV32-NEXT: vrgatherei16.vv v28, v8, v25 ; 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: vsetivli a0, 8, e64,m4,tu,mu ; RV32-NEXT: vrgatherei16.vv v28, v12, v26, v0.t @@ -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 @@ -244,7 +244,7 @@ ; RV64-NEXT: vle64.v v20, (a0) ; RV64-NEXT: vrgather.vv v28, v8, v20 ; 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: vsetivli a0, 8, e64,m4,tu,mu ; RV64-NEXT: vrgather.vv v28, v12, v16, v0.t @@ -275,7 +275,7 @@ ; RV32-NEXT: vmv.v.i v12, -1 ; RV32-NEXT: vrgatherei16.vv v28, v12, v25 ; 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: vsetivli a0, 8, e64,m4,tu,mu ; RV32-NEXT: vrgatherei16.vv v28, v8, v27, v0.t @@ -295,7 +295,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 @@ -318,7 +318,7 @@ ; RV32-NEXT: vsetivli a0, 8, e64,m4,ta,mu ; RV32-NEXT: vrgatherei16.vv v8, v28, v25 ; 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_1) ; RV32-NEXT: addi a0, a0, %lo(.LCPI13_1) @@ -333,7 +333,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 @@ -230,7 +230,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 @@ -710,7 +710,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 @@ -748,7 +748,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 @@ -1221,7 +1221,7 @@ ; RV32-NEXT: vsetivli a1, 2, e64,m1,ta,mu ; RV32-NEXT: vmulh.vv v26, v25, v26 ; RV32-NEXT: addi a1, zero, 3 -; 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, 4, e32,m1,ta,mu ; RV32-NEXT: vmv.v.i v27, -1 @@ -3996,7 +3996,7 @@ ; LMULMAX2-RV32-NEXT: vle8.v v26, (a0) ; 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 a2, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: lui a2, %hi(.LCPI129_0) @@ -4009,7 +4009,7 @@ ; LMULMAX2-RV32-NEXT: vsub.vv v26, v26, v28 ; 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: addi a2, zero, -128 ; LMULMAX2-RV32-NEXT: vsetvli a3, a1, e8,m2,ta,mu @@ -4018,20 +4018,20 @@ ; LMULMAX2-RV32-NEXT: vadd.vv v26, v26, v28 ; 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 a1, a1, e8,m2,ta,mu ; LMULMAX2-RV32-NEXT: vmerge.vim v28, v28, 2, v0 @@ -4046,7 +4046,7 @@ ; LMULMAX2-RV64-NEXT: vle8.v v26, (a0) ; 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 a2, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: lui a2, %hi(.LCPI129_0) @@ -4059,7 +4059,7 @@ ; LMULMAX2-RV64-NEXT: vsub.vv v26, v26, v28 ; 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: addi a2, zero, -128 ; LMULMAX2-RV64-NEXT: vsetvli a3, a1, e8,m2,ta,mu @@ -4068,20 +4068,20 @@ ; LMULMAX2-RV64-NEXT: vadd.vv v26, v26, v28 ; 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 a1, a1, e8,m2,ta,mu ; LMULMAX2-RV64-NEXT: vmerge.vim v28, v28, 2, v0 @@ -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 @@ -4447,7 +4447,7 @@ ; LMULMAX2-RV32-NEXT: vmv.v.x v28, a2 ; 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: addi a2, zero, 57 ; LMULMAX2-RV32-NEXT: vsetvli a1, a1, e8,m2,ta,mu @@ -4468,7 +4468,7 @@ ; LMULMAX2-RV64-NEXT: vmv.v.x v28, a2 ; 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: addi a2, zero, 57 ; LMULMAX2-RV64-NEXT: vsetvli a1, a1, e8,m2,ta,mu @@ -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 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 @@ -7,15 +7,15 @@ define void @load_store_v1i1(<1 x i1>* %x, <1 x i1>* %y) { ; CHECK-LABEL: load_store_v1i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 1, e8,mf8,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -27,15 +27,15 @@ define void @load_store_v2i1(<2 x i1>* %x, <2 x i1>* %y) { ; CHECK-LABEL: load_store_v2i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 2, e8,mf8,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -47,15 +47,15 @@ define void @load_store_v4i1(<4 x i1>* %x, <4 x i1>* %y) { ; CHECK-LABEL: load_store_v4i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 4, e8,mf4,ta,mu ; CHECK-NEXT: vle1.v v0, (a0) ; 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: vse1.v v25, (a1) ; CHECK-NEXT: ret @@ -67,7 +67,7 @@ define void @load_store_v8i1(<8 x i1>* %x, <8 x i1>* %y) { ; CHECK-LABEL: load_store_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v25, (a0) ; CHECK-NEXT: vse1.v v25, (a1) ; CHECK-NEXT: ret diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-logic.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-logic.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-logic.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-logic.ll @@ -7,7 +7,7 @@ define void @and_v8i1(<8 x i1>* %x, <8 x i1>* %y) { ; CHECK-LABEL: and_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v25, (a0) ; CHECK-NEXT: vle1.v v26, (a1) ; CHECK-NEXT: vmand.mm v25, v25, v26 @@ -72,7 +72,7 @@ define void @andnot_v8i1(<8 x i1>* %x, <8 x i1>* %y) { ; CHECK-LABEL: andnot_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v25, (a0) ; CHECK-NEXT: vle1.v v26, (a1) ; CHECK-NEXT: vmandnot.mm v25, v25, v26 @@ -124,7 +124,7 @@ define void @nand_v8i1(<8 x i1>* %x, <8 x i1>* %y) { ; CHECK-LABEL: nand_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a2, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a2, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v25, (a0) ; CHECK-NEXT: vle1.v v26, (a1) ; CHECK-NEXT: vmnand.mm v25, v25, v26 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,15 +7,15 @@ define void @splat_ones_v1i1(<1 x i1>* %x) { ; CHECK-LABEL: splat_ones_v1i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 1, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 1, e8,mf8,ta,mu ; CHECK-NEXT: vmset.m v0 ; 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, 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -26,15 +26,15 @@ define void @splat_zeros_v2i1(<2 x i1>* %x) { ; CHECK-LABEL: splat_zeros_v2i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmclr.m v0 ; 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -93,15 +93,15 @@ define void @splat_ones_v4i1(<4 x i1>* %x) { ; CHECK-LABEL: splat_ones_v4i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmset.m v0 ; 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, 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: vse1.v v25, (a0) ; CHECK-NEXT: ret @@ -135,7 +135,7 @@ define void @splat_zeros_v8i1(<8 x i1>* %x) { ; CHECK-LABEL: splat_zeros_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmclr.m v25 ; CHECK-NEXT: vse1.v v25, (a0) ; CHECK-NEXT: ret 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 @@ -2185,7 +2185,7 @@ ; RV64-NEXT: vslidedown.vi v28, v8, 16 ; RV64-NEXT: vsetivli a1, 16, e64,m8,ta,mu ; RV64-NEXT: vsext.vf8 v16, v28 -; 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 @@ -73,7 +73,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 @@ -90,7 +90,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 @@ -107,7 +107,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 @@ -141,7 +141,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 @@ -158,7 +158,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 @@ -209,7 +209,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, 1, 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, 2, e8,mf8,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -43,17 +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: 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: vnsrl.wi v25, v8, 0 ; RV64-NEXT: vsetivli a0, 2, e8,mf8,ta,mu +; RV64-NEXT: vnsrl.wi v25, v8, 0 ; RV64-NEXT: vsoxei64.v v25, (zero), v9, v0.t ; RV64-NEXT: ret %tval = trunc <2 x i16> %val to <2 x i8> @@ -64,20 +62,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: 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: vnsrl.wi v26, v25, 0 ; RV64-NEXT: vsetivli a0, 2, e8,mf8,ta,mu +; RV64-NEXT: vnsrl.wi v26, v25, 0 ; RV64-NEXT: vsoxei64.v v26, (zero), v9, v0.t ; RV64-NEXT: ret %tval = trunc <2 x i32> %val to <2 x i8> @@ -94,7 +91,6 @@ ; 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: vsoxei32.v v25, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -205,7 +201,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, 1, 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 ; @@ -223,7 +219,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, 2, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -239,16 +235,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: 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: vnsrl.wi v25, v8, 0 ; RV64-NEXT: vsetivli a0, 2, e16,mf4,ta,mu +; RV64-NEXT: vnsrl.wi v25, v8, 0 ; RV64-NEXT: vsoxei64.v v25, (zero), v9, v0.t ; RV64-NEXT: ret %tval = trunc <2 x i32> %val to <2 x i16> @@ -263,7 +258,6 @@ ; 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: vsoxei32.v v26, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -445,7 +439,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, 1, 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 ; @@ -463,7 +457,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, 2, e32,mf2,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -481,7 +475,6 @@ ; 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: vsoxei32.v v25, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1042,7 +1035,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, 1, 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 ; @@ -1060,7 +1053,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, 2, e16,mf4,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1238,7 +1231,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, 1, 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 ; @@ -1256,7 +1249,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, 2, e32,mf2,ta,mu ; RV32-NEXT: vsoxei32.v v8, (zero), v9, v0.t ; RV32-NEXT: ret ; @@ -1856,7 +1849,7 @@ ; RV64-NEXT: vslidedown.vi v28, v10, 16 ; RV64-NEXT: vsetivli a1, 16, e64,m8,ta,mu ; RV64-NEXT: vsext.vf8 v8, v28 -; 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,ta,mu ; RV64-NEXT: vsoxei64.v v26, (a0), v8, 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 @@ -73,7 +73,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 @@ -90,7 +90,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 @@ -107,7 +107,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 @@ -141,7 +141,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 @@ -158,7 +158,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 @@ -209,7 +209,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 @@ -3824,7 +3857,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 @@ -3838,13 +3871,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 @@ -3857,13 +3891,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 @@ -3876,13 +3911,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 @@ -4001,7 +4037,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 @@ -4015,13 +4051,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 @@ -4034,13 +4071,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 @@ -4158,7 +4196,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 @@ -4172,13 +4210,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 @@ -4604,7 +4643,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 @@ -4618,12 +4657,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 @@ -4636,12 +4676,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 @@ -4654,12 +4695,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 @@ -4773,7 +4815,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 @@ -4787,12 +4829,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 @@ -4805,12 +4848,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 @@ -4923,7 +4967,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 @@ -4937,12 +4981,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 @@ -5310,7 +5355,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 @@ -5324,12 +5369,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 @@ -5342,12 +5388,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 @@ -5360,12 +5407,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 @@ -5479,7 +5527,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 @@ -5493,12 +5541,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 @@ -5511,12 +5560,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 @@ -5629,7 +5679,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 @@ -5643,12 +5693,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/rvv/fixed-vectors-vreductions-mask.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vreductions-mask.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vreductions-mask.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vreductions-mask.ll @@ -9,7 +9,7 @@ define signext i1 @vreduce_or_v1i1(<1 x i1> %v) { ; CHECK-LABEL: vreduce_or_v1i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vsetvli a0, zero, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 ; CHECK-NEXT: vmv.x.s a0, v25 @@ -25,7 +25,7 @@ define signext i1 @vreduce_xor_v1i1(<1 x i1> %v) { ; CHECK-LABEL: vreduce_xor_v1i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vsetvli a0, zero, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 ; CHECK-NEXT: vmv.x.s a0, v25 @@ -41,7 +41,7 @@ define signext i1 @vreduce_and_v1i1(<1 x i1> %v) { ; CHECK-LABEL: vreduce_and_v1i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetvli a0, zero, e8,m1,ta,mu +; CHECK-NEXT: vsetvli a0, zero, e8,mf8,ta,mu ; CHECK-NEXT: vmv.v.i v25, 0 ; CHECK-NEXT: vmerge.vim v25, v25, 1, v0 ; CHECK-NEXT: vmv.x.s a0, v25 @@ -57,7 +57,7 @@ define signext i1 @vreduce_or_v2i1(<2 x i1> %v) { ; CHECK-LABEL: vreduce_or_v2i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vpopc.m a0, v0 ; CHECK-NEXT: snez a0, a0 ; CHECK-NEXT: neg a0, a0 @@ -71,7 +71,7 @@ define signext i1 @vreduce_xor_v2i1(<2 x i1> %v) { ; CHECK-LABEL: vreduce_xor_v2i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vpopc.m a0, v0 ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: neg a0, a0 @@ -85,7 +85,7 @@ define signext i1 @vreduce_and_v2i1(<2 x i1> %v) { ; CHECK-LABEL: vreduce_and_v2i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 2, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 2, e8,mf8,ta,mu ; CHECK-NEXT: vmnand.mm v25, v0, v0 ; CHECK-NEXT: vpopc.m a0, v25 ; CHECK-NEXT: seqz a0, a0 @@ -100,7 +100,7 @@ define signext i1 @vreduce_or_v4i1(<4 x i1> %v) { ; CHECK-LABEL: vreduce_or_v4i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vpopc.m a0, v0 ; CHECK-NEXT: snez a0, a0 ; CHECK-NEXT: neg a0, a0 @@ -114,7 +114,7 @@ define signext i1 @vreduce_xor_v4i1(<4 x i1> %v) { ; CHECK-LABEL: vreduce_xor_v4i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vpopc.m a0, v0 ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: neg a0, a0 @@ -128,7 +128,7 @@ define signext i1 @vreduce_and_v4i1(<4 x i1> %v) { ; CHECK-LABEL: vreduce_and_v4i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 4, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 4, e8,mf4,ta,mu ; CHECK-NEXT: vmnand.mm v25, v0, v0 ; CHECK-NEXT: vpopc.m a0, v25 ; CHECK-NEXT: seqz a0, a0 @@ -143,7 +143,7 @@ define signext i1 @vreduce_or_v8i1(<8 x i1> %v) { ; CHECK-LABEL: vreduce_or_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vpopc.m a0, v0 ; CHECK-NEXT: snez a0, a0 ; CHECK-NEXT: neg a0, a0 @@ -157,7 +157,7 @@ define signext i1 @vreduce_xor_v8i1(<8 x i1> %v) { ; CHECK-LABEL: vreduce_xor_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vpopc.m a0, v0 ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: neg a0, a0 @@ -171,7 +171,7 @@ define signext i1 @vreduce_and_v8i1(<8 x i1> %v) { ; CHECK-LABEL: vreduce_and_v8i1: ; CHECK: # %bb.0: -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vmnand.mm v25, v0, v0 ; CHECK-NEXT: vpopc.m a0, v25 ; CHECK-NEXT: seqz a0, a0 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vselect.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vselect.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vselect.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vselect.ll @@ -8,7 +8,7 @@ ; CHECK-NEXT: vsetivli a4, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vle32.v v28, (a1) -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v0, (a2) ; CHECK-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; CHECK-NEXT: vmerge.vvm v26, v28, v26, v0 @@ -27,7 +27,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a4, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a1) -; CHECK-NEXT: vsetivli a1, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a1, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v0, (a2) ; CHECK-NEXT: vsetivli a1, 8, e32,m2,ta,mu ; CHECK-NEXT: vmerge.vxm v26, v26, a0, v0 @@ -47,7 +47,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a3, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v0, (a1) ; CHECK-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; CHECK-NEXT: vmerge.vim v26, v26, -1, v0 @@ -68,7 +68,7 @@ ; CHECK-NEXT: vsetivli a4, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) ; CHECK-NEXT: vle32.v v28, (a1) -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v0, (a2) ; CHECK-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; CHECK-NEXT: vmerge.vvm v26, v28, v26, v0 @@ -87,7 +87,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a3, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v0, (a1) ; CHECK-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; CHECK-NEXT: vfmerge.vfm v26, v26, fa0, v0 @@ -107,7 +107,7 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: vsetivli a3, 8, e32,m2,ta,mu ; CHECK-NEXT: vle32.v v26, (a0) -; CHECK-NEXT: vsetivli a0, 8, e8,m1,ta,mu +; CHECK-NEXT: vsetivli a0, 8, e8,mf2,ta,mu ; CHECK-NEXT: vle1.v v0, (a1) ; CHECK-NEXT: vsetivli a0, 8, e32,m2,ta,mu ; CHECK-NEXT: vmerge.vim v26, v26, 0, v0 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