- Notifications
You must be signed in to change notification settings - Fork 5
bit_array compile-time / construction-time containers #55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
PeterCDMcLean wants to merge 87 commits into bkille:master Choose a base branch from PeterCDMcLean:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
…bit width separator
…er / mask are only set in constructor. The end-value of the pointer can change
…varying coverage results (#2) * Break up bitlib_utils. Seed tests from the test case name to prevent varying coverage results * Build benchmark during Release configuration * Fix up coverage exclusions * Scope the build to specific target * cmake --build must come first * Backwards logic
* Make github action for benchmark * Combine github workflows with condition postprocessing * action file syntax * Post process benchmark json * json will be in subdirectory * shell bash in action.yml * require GitHub secret token * pass secrets to coverage epilogue * composite action cannot access secrets must use inputs * pass secret as input * properly reference inputs
* compiler problem matchers * Fix GTest discovery * Encode more metadata for cache * Archive benchmark json * Archive first because runners are eager to nuke the workflow * Remove stray link options in bitlib-tests * compose Artifact name
* Stab at creating useful base class for bit_array and bit_array_dynamic_extent * more churn * Move literal to its own file * Inline class functions * Common operator U() * bit_array_ref class * Move more functionality to CRTP base * Test slice modification * Proper slice syntax for vector * Bit Literal test * from range constructors (need std::from_range?) * range assignment operator= * Refine and improve coverage * Consolidate literal tests * Try to resolve ambiguous operator== * swap_ranges can throw, apparently * Close more coverage
* Generate baseline coverage before running tests * Hunt and peck failing gcc inline flag * ignore mismatch on baseline * Move build so it's easier to generate baseline without * Clean checkout * Clean any cmake probing files that create coverage * Try both gcna gcno clean before build * Post configure clean up build dir too * Typo * set build dir to absolute
* WError cmake option * Add a build-only workflow for warnings * Add clang warnings build target * Try enabling coverage w/ clang * Refactor presets * composite actions are apparently syntax strict * Try to symlink llvm/clang tools * Use absolute path for coverage.profraw * ctest interferes with llvm coverage, likely due to parallel. try a cleaner approach * Codecov only supports lcov/gcov * Prevent artifact conflicts * missing github token * Different artifact names
* Add support for signed word types. Use logical shift right and avoid signed multiplication. Someone builtin_popcount is also sensitive to sign * Use common mask function to avoid signed word underflows * Allow _mask to optimize by default
* Bitwise operators in bit_array_base * Sketching out bit_integer class * No subborrowx exists * addcarry Pointer out type is sensitive for clang * clang seems more sensitive for constructor inheritance * Remove defunct comment * Fix rebase * Remove incomplete bit_integer class
* Remove alignment. Expose algorithm issues with differing types * Add iterator adapter class (big to small) * Use new iterator adapter. Set more default words to uintptr_t * Add dispatch to workflow trigger options * Dummy change * Try rerranging * Remove distinct iterator adapter test target * Try GLIBCXX_RELEASE macro * Fix type for test * bit_reference now templated on ref type to allow for it to wrap proxy references * Now with proxy reference and proxy pointer * Fix some ops * Remove wider_t narrower_t * Small buffer optimized dynamic bit array * Clean up more of bit_details * small improvement to bitsof * Don't measure coverage on tests (too error prone) * Adapter prelude wip * Add test for mixed type equals * Adapted copy * Test adapted copy * Fix conversion from adapter back to iterator * Remove unnecessary return type template parameter
* Add draft policies for integer conversion * Add allocator to Policy. Use policy to construct from integral * Add convenience conversion pathway for literal -> bit_value * Add algorithm accumulate and utility to_string * template keyword only necessary if actually passing template args * Better UX for accumulate policy * small tweaks to to_string * Add static_assert error to bit_literal. * Consolidate from_integral code * Fix accumulate, get_word doesn't mask
* Make bit::bit_array an alias of bit::array * Missing cstdint include * Refactor includes w.r.t bit_span
* Pipecleaning policy and casting issues * Fix policy/conversion issues * mdspan_accessor was templated incorrectly. bad constructor for bit_reference causes unexpected behavior * More missing policy templating * Correct static assert target class * Disable from_string temporarily as include DAG is misordered with it * Fix to_integral * compile-time array_ref extent. word accessor * Warnings cleanup * Fix exact integral type * Squash more warnings * Prevent some aliasing in the test code which clutters warnings * Avoid unused variable --------- Co-authored-by: Peter McLean <peter.cd.mclean@gmail.com>
* First couple sections of new doc * Small tweaks/improvements to CMake constraint/requirements * Add documentation on bit_array and mdspan * Add a small section about policy * Add a note about licensing * Update license file to include libpopcnt license * Try harder to remove undesired paths from clang coverage
* Necessary changes to work with clang cl cross compile toolchain * Move is an alias of copy. Fill in the doc --------- Co-authored-by: Peter McLean <peter.cd.mclean@gmail.com>
* Fix size-copy construction for bitwise ops * Primitive from_string * Add iterator-argument flavors of typical policy * Allow copy to take native iterators and auto-convert * Use a single type / value to template string conversion * Rebase cleanup * Replace auto and fix namespace issues in to_from_string.hpp * Use proper aggregate initialization for array * clang being naughty * Fix to string length calculation * Some scalar Addition and Multiplication algorithms * transform must mask operands to functor * Don't try to convert before bitsof * Fix carry out for sub words * Division by scalar * Add define for checking undefined behavior * Basic from_string working * Base 10 to string * Non-templated to/from string functions * to_string can be bounded by string iterators * Reorder to_string arguments for in->out order * Add streaming operator to array_base * Fix error C2361 case variable initialization * Add step to download and extract clang compiler rt libs for windows * Replace instrinsic with std * Give up on directory flag to tar * Simplify cache step * Add new line to license. seems reasonable * Don't use the iterator below begin() * Allow examples to be built as if they were the root. Add a dynamic bit-aggregate type example * Optimize to string by change zero check to reduce computation size
* Add clang-format workflow * Check clang-format of diff/patch instead of everything
* Use upload / download action instead of cache * Try without single quotes * Rerun base_ref build if possible
* bit_range args must accept rvalue temporary * Reorder from_integral to be consistent * Remove old style casts * Remove some more warnings * More efficient bit_iterator increment * Must use another download action to access other branch's workflows * Only download base ref build artifact for benchmark * Check outcome. clang-format * Missing python requirements * Must upgrade setuptools * setup python step * Use ref as baseline * Get rid of a few conversion warnings * Fix pointer adapter math for negative increments * Explicit cast * clang format * Give the matrix job a name
* Explicitly cast inside _mask * Name clang format workflow job * Default is detail::uninitialized. Fix from_string * Manually promote short or char types * Remove some other pedantic conversion warnings * Simplify the types into bitblend * Remove unnecessary casts in bitblend calls * Improve correctness when using unsigned size_type * clang format * size_type back to size_t * clang format * More conversion warning reduction * No floats allowed * Squash more conversion warnings * Even more warnings * Annoying that promotion happens even for bitwise of same type * Narrowing in on double digit warnings * More warnings * Turn on Werror * Fix clang warnings * Add a single status check for all matrix jobs * Filter C/C++ sources for clang format check
* Add additional from_string variants * clang format
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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.
Summary of major changes:
Algorithms:
Misc:
Iterators:
Containers:
Compilers: