Displaying 7 results from an estimated 7 matches for "ccassignfnforcall".
2019 Jul 24
2
About a new porting of GlobalIsel for RISCV
...ll now, I think we have a reasonable solution to continue the work,
the implementation of GlobalIsel from Mips is a good example, which
use target-specific "MipsCCState" and "MipsCallLowering::MipsHandler"
to handle Call/Arguments/Return lowering.
For RISCV, there's no "CCAssignFnForCall" or "CCAssignFnForReturn"
functions defined, just like the solution in Mips, a new
target-specific "ValueHandler" will be created to support
calllowering.
I have made some experiment that trying to implement the "LowerReturn"
function, and it can return correctly....
2018 Apr 09
0
Possibilities with LLVM
...e LLVM IR. Then you just have to add support to
lib/Target/XYZ/XYZISelLowering.cpp and the corresponding calling
convention .td file (the name varies a bit). ISelLowering usually just
involves a switch based on the call or definition that selects the
right implementation from the .td file. Grep for CCAssignFnForCall to
see the kind of thing you'll be changing.
Clang side, you'll be changing lib/Targets/XYZ.cpp to either make it
the default or support it via __attribute__((pcs("whatever"))). See
ARM.cpp for an example, it already uses both methods.
Cheers.
Tim.
2018 Apr 09
3
Possibilities with LLVM
Hello everyone,
I have some questions about the possibilities with the LLVM but I'm not
sure where to gather the information.
1.) Can I teach the LLVM new platform depended intrinsics?
Like I provide assembly code and want to create a custom intrinsic for it.
2.) Does the IR language have some kind of template support?
I'm not sure if this even possible - but I thought about having a
2018 Jan 04
2
Options for custom CCState, CCAssignFn, and GlobalISel
...gsTy just because of a Mips quirk. I see Reid Kleckner changed this object last year and found that it wasn't actually full so maybe we should move OutputArg::IsFixed into ArgFlagsTy now.
AArch64, Hexagon, RISCV, and SystemZ all have the same requirement.
AArch64 works around it by calling its CCAssignFnForCall helper for
every argument (and passing IsFixed through to that). For GISel, it
overrides assignArg so a different function can be called for varargs.
I'd be in favour of adding IsFixed to ArgFlagsTy even if it did
"overflow" ArgFlagsTy. I know there's an argument about "deat...
2018 Jan 05
0
Options for custom CCState, CCAssignFn, and GlobalISel
...se of a Mips quirk. I see Reid Kleckner changed this object last year and found that it wasn't actually full so maybe we should move OutputArg::IsFixed into ArgFlagsTy now.
>
> AArch64, Hexagon, RISCV, and SystemZ all have the same requirement.
> AArch64 works around it by calling its CCAssignFnForCall helper for
> every argument (and passing IsFixed through to that). For GISel, it
> overrides assignArg so a different function can be called for varargs.
>
> I'd be in favour of adding IsFixed to ArgFlagsTy even if it did
> "overflow" ArgFlagsTy. I know there's an...
2018 Jan 04
0
Options for custom CCState, CCAssignFn, and GlobalISel
I haven't dug into the GlobalISel calling convention code much but I can comment on the MipsCCState.
> On 3 Jan 2018, at 14:00, Alex Bradbury via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> This question came about through reviewing work from Leslie Zhai on GlobalISel
> support for RISC-V, which also motivated me to revisit code which I've always
> felt was a
2018 Jan 03
7
Options for custom CCState, CCAssignFn, and GlobalISel
This question came about through reviewing work from Leslie Zhai on GlobalISel
support for RISC-V, which also motivated me to revisit code which I've always
felt was a bit clunky.
Calling convention lowering in LLVM is typically handled by functions
conforming to the CCAssignFn typedef:
typedef bool CCAssignFn(unsigned ValNo, MVT ValVT,
MVT LocVT,