diff --git a/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp b/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp index 1dd12ab396fd8..04709102fbffd 100644 --- a/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp +++ b/llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp @@ -1103,6 +1103,8 @@ static bool isSupportedInstr(const MachineInstr &MI) { case RISCV::VFSQRT_V: // Vector Floating-Point Reciprocal Square-Root Estimate Instruction case RISCV::VFRSQRT7_V: + // Vector Floating-Point Reciprocal Estimate Instruction + case RISCV::VFREC7_V: // Vector Floating-Point MIN/MAX Instructions case RISCV::VFMIN_VF: case RISCV::VFMIN_VV: diff --git a/llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll b/llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll index 4c15d8e3e7c2f..92dd55911e9d4 100644 --- a/llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll @@ -5338,12 +5338,11 @@ define @vfrec7( %a) { ; ; VLOPT-LABEL: vfrec7: ; VLOPT: # %bb.0: -; VLOPT-NEXT: vsetivli zero, 7, e32, m2, ta, ma +; VLOPT-NEXT: vsetivli zero, 6, e32, m2, ta, ma ; VLOPT-NEXT: vmv2r.v v12, v8 ; VLOPT-NEXT: fsrmi a0, 0 ; VLOPT-NEXT: vfrec7.v v14, v8 ; VLOPT-NEXT: fsrm a0 -; VLOPT-NEXT: vsetivli zero, 6, e32, m2, ta, ma ; VLOPT-NEXT: vfwmacc.vv v8, v12, v14 ; VLOPT-NEXT: ret %1 = call @llvm.riscv.vfrec7.nxv4f32( poison, %a, iXLen 0, iXLen 7)