Skip to content

Commit bb5bbe5

Browse files
committed
[RISCV][GISel] Support s32/s64 G_FSUB/FDIV/FNEG without F/D extensions.
Use libcalls for G_FSUB/FDIV. Use integer operations for G_FNEG. Copy most of the IR tests for arithmetic from SelectionDAG.
1 parent 5f3eab9 commit bb5bbe5

File tree

4 files changed

+2428
-9
lines changed

4 files changed

+2428
-9
lines changed

llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -491,20 +491,14 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
491491

492492
// FP Operations
493493

494-
getActionDefinitionsBuilder({G_FSUB, G_FDIV, G_FNEG})
495-
.legalFor(ST.hasStdExtF(), {s32})
496-
.legalFor(ST.hasStdExtD(), {s64})
497-
.legalFor(ST.hasStdExtZfh(), {s16});
498-
499-
// FIXME: Merge with FSUB/FDIV/etc when we use libcalls for them.
500494
getActionDefinitionsBuilder(
501-
{G_FADD, G_FMUL, G_FMA, G_FSQRT, G_FMAXNUM, G_FMINNUM})
495+
{G_FADD, G_FSUB, G_FMUL, G_FDIV, G_FMA, G_FSQRT, G_FMAXNUM, G_FMINNUM})
502496
.legalFor(ST.hasStdExtF(), {s32})
503497
.legalFor(ST.hasStdExtD(), {s64})
504498
.legalFor(ST.hasStdExtZfh(), {s16})
505499
.libcallFor({s32, s64});
506500

507-
getActionDefinitionsBuilder(G_FABS)
501+
getActionDefinitionsBuilder({G_FNEG, G_FABS})
508502
.legalFor(ST.hasStdExtF(), {s32})
509503
.legalFor(ST.hasStdExtD(), {s64})
510504
.legalFor(ST.hasStdExtZfh(), {s16})

0 commit comments

Comments
 (0)