-
Enhancement
-
Resolution: Won't Fix
-
P4
-
None
-
18
-
generic
- Currently all the vector API are lazily inline expanded during optimization stage. In case inline expansion pre-conditions are not met then C2 emits a direct call instruction to the callee.
- At this stage we also loose the opportunity to perform procedure in-lining since C2 does not have call tree information (InlineTree), most general cause for inline expansion failure is unsupported vector size.
- Currently C2Compiler::is_intrinsics_supported routine called during parsing makes a check based on the Ideal Opcode and is thus restrictive in nature, for VectorAPI intrinsification it just checks EnableVectorSupport flag.
- Almost all the VectorSupport.* routines (C2 compiler entry points) are passed lane type and lane count information which can be used to compute the vector size. In case vector size for a SPECIES is not supported by the target then C2 can allow regular procedure in-lining instead of deferred inline expansion.
- Argument positions of lane count and lane types are not consistent across various VectorSupport routines. A lookup table recording argument position corresponding to an intrinsic ID can be used to counter this problem.
- At this stage we also loose the opportunity to perform procedure in-lining since C2 does not have call tree information (InlineTree), most general cause for inline expansion failure is unsupported vector size.
- Currently C2Compiler::is_intrinsics_supported routine called during parsing makes a check based on the Ideal Opcode and is thus restrictive in nature, for VectorAPI intrinsification it just checks EnableVectorSupport flag.
- Almost all the VectorSupport.* routines (C2 compiler entry points) are passed lane type and lane count information which can be used to compute the vector size. In case vector size for a SPECIES is not supported by the target then C2 can allow regular procedure in-lining instead of deferred inline expansion.
- Argument positions of lane count and lane types are not consistent across various VectorSupport routines. A lookup table recording argument position corresponding to an intrinsic ID can be used to counter this problem.