[Runtime] Support arbitrary bitwidth integer in LLVM execution engine #37
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR ports the PR of HeteroCL #493 to support arbitrary bitwidth integers in LLVM execution engine.
Proposed Solutions
This PR constructs arrays with arbitrary bitwidth integers by creating customized numpy struct data type, packing and unpacking the results before and after the execution. Different signless integers have been tested. Unsigned types will be added in the next PR, since it still needs more annotations in the IR builder.
Examples
See the following example. Casting and (un)wrapping can be done automatically by the execution engine, so users have no need to worry about the data types, but just directly pass in the numpy arrays.
Checklist