Skip to content
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

Full set of sign variants (signed/unsigned/selected) for multiplier operands #144

Merged
merged 5 commits into from
Dec 5, 2024

Conversation

desmonddak
Copy link
Contributor

Description & Motivation

This updates the compression tree mulitplication components to fully handle variations in sign for multiplicand and multiplier.
This includes separate fixed signs for both, as well as a select signal for both and all valid combinations. When select is enabled for an operand, the fixed sign input parameter is false..

The core parameters are:

  • signedMultiplicand
  • signedMultiplier
  • selectSignedMultiplicand
  • selectSignedMultiplier

These parameters are enabled for the CompressionTreeMultiplier and CompressionTreeMultiplyAccumulate.

Major cleanup of the testing routines to ensure solid coverage and reduce testing time.

Related Issue(s)

#143

Testing

Sweep testing of the PartialProductGenerators for all combinations of signed/selected operands and all sign extension methods, across all radix settings.

Backwards-compatibility

Is this a breaking change that will not be backwards-compatible? If yes, how so?

Yes. The signed parameter is now split into signedMultiplicand and signedMultiplier.

Documentation

Does the change require any updates to documentation? If so, where? Are they included?

Yes. Documentation for the Multipliers is updated. The configurator is also updated.

@desmonddak desmonddak requested a review from mkorbel1 December 3, 2024 23:56
@mkorbel1 mkorbel1 linked an issue Dec 4, 2024 that may be closed by this pull request
lib/src/arithmetic/multiplier.dart Outdated Show resolved Hide resolved
lib/src/arithmetic/multiplier.dart Outdated Show resolved Hide resolved
lib/src/arithmetic/multiplier.dart Outdated Show resolved Hide resolved
lib/src/arithmetic/multiplier.dart Show resolved Hide resolved
lib/src/arithmetic/partial_product_generator.dart Outdated Show resolved Hide resolved
lib/src/arithmetic/multiplier.dart Show resolved Hide resolved
test/arithmetic/multiplier_test.dart Outdated Show resolved Hide resolved
test/arithmetic/multiplier_test.dart Outdated Show resolved Hide resolved
@mkorbel1
Copy link
Contributor

mkorbel1 commented Dec 4, 2024

This is awesome stuff!!

@desmonddak
Copy link
Contributor Author

Do I need to protect getters? I just realized I left protectors in place when I converted inputs declarations to getters.

@mkorbel1
Copy link
Contributor

mkorbel1 commented Dec 4, 2024

Do I need to protect getters? I just realized I left protectors in place when I converted inputs declarations to getters.

You should generally mark @protected on any variable or function that should only be accessed by sub classes which extend that class. If nothing should access them, then making them private is better.

Copy link
Contributor

@mkorbel1 mkorbel1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!! Awesome!

@desmonddak desmonddak merged commit 2e70ca9 into intel:main Dec 5, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

CompressionTreeMultiplier should support mixed signed/unsigned operands
3 participants