diff options
author | Craig Topper <craig.topper@sifive.com> | 2024-09-03 22:49:02 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-03 22:49:02 -0700 |
commit | 41402c6a8aa3a4336122bdb4530fb05538efedba (patch) | |
tree | ab669461f1148f2c8e9423056c0ac99792beb061 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 3e798476de466e8a051d3e753db379731a8d9705 (diff) | |
download | llvm-41402c6a8aa3a4336122bdb4530fb05538efedba.zip llvm-41402c6a8aa3a4336122bdb4530fb05538efedba.tar.gz llvm-41402c6a8aa3a4336122bdb4530fb05538efedba.tar.bz2 |
[RISCV][GISel] Use CCValAssign::getCustomReg for converting f16/f32<->GPR. (#105700)
This gives us much better control of the generated code for GISel. I've
tried to closely match the current gisel code, but it looks like we had
2 layers of G_ANYEXT in some cases before.
SelectionDAG now checks needsCustom() instead of detecting the special
cases in the Bitcast handler.
Unfortunately, IRTranslator for bitcast still generates copies between
register classes of different sizes. Because of this we can't handle
i16<->f16 bitcasts without crashing. Not sure if I should teach
RISCVInstrInfo::copyPhysReg to allow copies between FPR16 and GPR or if
I should convert the copies to instructions in GISel.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions