Skip to content

Commit 62c94f0

Browse files
committed
[RISCV] Define vector vfmul/vfdiv/vfrdiv intrinsics.
Define vector vfmul/vfdiv/vfrdiv intrinsics and lower them to V instructions. We work with @rogfer01 from BSC to come out this patch. Authored-by: Roger Ferrer Ibanez <[email protected]> Co-Authored-by: Hsiangkai Wang <[email protected]> Differential Revision: https://reviews.llvm.org/D93580
1 parent 37974b4 commit 62c94f0

File tree

8 files changed

+5224
-0
lines changed

8 files changed

+5224
-0
lines changed

llvm/include/llvm/IR/IntrinsicsRISCV.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,4 +413,8 @@ let TargetPrefix = "riscv" in {
413413
[LLVMMatchType<0>, LLVMVectorElementType<0>,
414414
llvm_anyint_ty],
415415
[IntrNoMem]>, RISCVVIntrinsic;
416+
417+
defm vfmul : RISCVBinaryAAX;
418+
defm vfdiv : RISCVBinaryAAX;
419+
defm vfrdiv : RISCVBinaryAAX;
416420
} // TargetPrefix = "riscv"

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,6 +1500,13 @@ defm PseudoVFADD : VPseudoBinaryV_VV_VX</*IsFloat=*/1>;
15001500
defm PseudoVFSUB : VPseudoBinaryV_VV_VX</*IsFloat=*/1>;
15011501
defm PseudoVFRSUB : VPseudoBinaryV_VX</*IsFloat=*/1>;
15021502

1503+
//===----------------------------------------------------------------------===//
1504+
// 14.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
1505+
//===----------------------------------------------------------------------===//
1506+
defm PseudoVFMUL : VPseudoBinaryV_VV_VX</*IsFloat=*/1>;
1507+
defm PseudoVFDIV : VPseudoBinaryV_VV_VX</*IsFloat=*/1>;
1508+
defm PseudoVFRDIV : VPseudoBinaryV_VX</*IsFloat=*/1>;
1509+
15031510
} // Predicates = [HasStdExtV, HasStdExtF]
15041511

15051512
//===----------------------------------------------------------------------===//
@@ -1764,6 +1771,13 @@ defm "" : VPatBinaryV_VV_VX<"int_riscv_vfadd", "PseudoVFADD", AllFloatVectors>;
17641771
defm "" : VPatBinaryV_VV_VX<"int_riscv_vfsub", "PseudoVFSUB", AllFloatVectors>;
17651772
defm "" : VPatBinaryV_VX<"int_riscv_vfrsub", "PseudoVFRSUB", AllFloatVectors>;
17661773

1774+
//===----------------------------------------------------------------------===//
1775+
// 14.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
1776+
//===----------------------------------------------------------------------===//
1777+
defm "" : VPatBinaryV_VV_VX<"int_riscv_vfmul", "PseudoVFMUL", AllFloatVectors>;
1778+
defm "" : VPatBinaryV_VV_VX<"int_riscv_vfdiv", "PseudoVFDIV", AllFloatVectors>;
1779+
defm "" : VPatBinaryV_VX<"int_riscv_vfrdiv", "PseudoVFRDIV", AllFloatVectors>;
1780+
17671781
} // Predicates = [HasStdExtV, HasStdExtF]
17681782

17691783
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)