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

Update documentation of instruction extensions for CV32E40P version 2. #760

Merged
merged 9 commits into from
Feb 6, 2023

Conversation

jeremybennett
Copy link
Contributor

These changes particularly relate to how tool chain support is
invoked using -march.  We take the opportunity to remove caveats
about ISA extensions not supported in the tool chain, since all
are now supported in both GCC and Clang/LLVM.

* docs/source/instruction_set_extensions.rst: Add -march tool chain invocations for each ISA extension and remove all caveats about compiler support.

Signed-off-by: Jeremy Bennett [email protected]

* ALU extensions, see :ref:`corev_alu`.
* Multiply-Accumulate extensions, see :ref:`corev_multiply_accumulate`.
* Single Instruction Multiple Data (aka SIMD) extensions, see :ref:`corev_simd`.
* Post-Incrementing load and stores, see :ref:`corev_load_store`, invoked in the tool chain with ``-march=xcvmem``.

Choose a reason for hiding this comment

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

Do we need to be more precise like -march=rv32i*_xcvmem

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's a good suggestion. I'll make this change.


Additionally the event load instruction (**cv.elw**) is supported by setting ``PULP_CLUSTER`` == 1, see :ref:`corev_event_load`. This is a separate ISA extension, invoked in the tool chain with ``-march=xcvelw``.

To use such instructions, you need to compile your SW with the CORE-V GCC or Clang/LLVM compiler.

Choose a reason for hiding this comment

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

Maybe we should specify starting from which version those instructions are supported by the toolchain, GCC and LLVM.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

A good suggestion. I'll make this change.

@@ -1066,9 +1071,6 @@ performed.

The custom SIMD extensions are only supported if ``PULP_XPULP`` == 1.

**SIMD is not supported by the compiler of the tool chain** as it is not implementing auto-vectorization up to now.
But those instructions can be used either with builtins or even in assembly.

Choose a reason for hiding this comment

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

I think we should keep this comment because it is still true.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I will modify it. SIMD will be supported, but we won't have autovectization.

	These changes particularly relate to how tool chain support is
	invoked using -march.  We take the opportunity to remove caveats
	about ISA extensions not supported in the tool chain, since all
	are now supported in both GCC and Clang/LLVM.

	* docs/source/instruction_set_extensions.rst: Add -march tool
	chain invocations for each ISA extension and remove all caveats
	about compiler support.

Signed-off-by: Jeremy Bennett <[email protected]>
@jeremybennett
Copy link
Contributor Author

All comments by @pascalgouedo accepted and updated version force pushed.

@jeremybennett jeremybennett changed the base branch from master to dev February 4, 2023 15:29
@davideschiavone davideschiavone added the Component:Doc For issues in the Documentation (e.g. for README.md files) label Feb 6, 2023
@davideschiavone davideschiavone merged commit 38fa5df into openhwgroup:dev Feb 6, 2023
davideschiavone added a commit that referenced this pull request Feb 14, 2023
* Correcting RFVI trace

* Some clarifications about immediate in scalar replication on SIMD instructions.

Signed-off-by: Pascal Gouedo <[email protected]>

* Headers alignement.

Signed-off-by: Pascal Gouedo <[email protected]>

* Changed uvm_error in uvm_info in old tracer to avoid errors and header alignement.

Signed-off-by: Pascal Gouedo <[email protected]>

* Moved typedef definitions in rvfi_pkg and header alignement.

Signed-off-by: Pascal Gouedo <[email protected]>

* launched verible

Signed-off-by: Pascal Gouedo <[email protected]>

* Update documentation of instruction extensions for CV32E40P version 2. (#760)

* Restored correct syntax

* Update documentation of instruction extensions for CV32E40P version 2.

	These changes particularly relate to how tool chain support is
	invoked using -march.  We take the opportunity to remove caveats
	about ISA extensions not supported in the tool chain, since all
	are now supported in both GCC and Clang/LLVM.

	* docs/source/instruction_set_extensions.rst: Add -march tool
	chain invocations for each ISA extension and remove all caveats
	about compiler support.

Signed-off-by: Jeremy Bennett <[email protected]>

---------

Signed-off-by: Jeremy Bennett <[email protected]>
Co-authored-by: Davide Schiavone <[email protected]>
Co-authored-by: pascalgouedo <[email protected]>

---------

Signed-off-by: Pascal Gouedo <[email protected]>
Signed-off-by: Jeremy Bennett <[email protected]>
Co-authored-by: Yoann Pruvost <[email protected]>
Co-authored-by: pascalgouedo <[email protected]>
Co-authored-by: Jeremy Bennett <[email protected]>
Co-authored-by: Davide Schiavone <[email protected]>
davideschiavone added a commit that referenced this pull request Mar 7, 2023
* Restored correct syntax

* Automatic PR dev->master (#766)

* Correcting RFVI trace

* Some clarifications about immediate in scalar replication on SIMD instructions.

Signed-off-by: Pascal Gouedo <[email protected]>

* Headers alignement.

Signed-off-by: Pascal Gouedo <[email protected]>

* Changed uvm_error in uvm_info in old tracer to avoid errors and header alignement.

Signed-off-by: Pascal Gouedo <[email protected]>

* Moved typedef definitions in rvfi_pkg and header alignement.

Signed-off-by: Pascal Gouedo <[email protected]>

* launched verible

Signed-off-by: Pascal Gouedo <[email protected]>

* Update documentation of instruction extensions for CV32E40P version 2. (#760)

* Restored correct syntax

* Update documentation of instruction extensions for CV32E40P version 2.

	These changes particularly relate to how tool chain support is
	invoked using -march.  We take the opportunity to remove caveats
	about ISA extensions not supported in the tool chain, since all
	are now supported in both GCC and Clang/LLVM.

	* docs/source/instruction_set_extensions.rst: Add -march tool
	chain invocations for each ISA extension and remove all caveats
	about compiler support.

Signed-off-by: Jeremy Bennett <[email protected]>

---------

Signed-off-by: Jeremy Bennett <[email protected]>
Co-authored-by: Davide Schiavone <[email protected]>
Co-authored-by: pascalgouedo <[email protected]>

---------

Signed-off-by: Pascal Gouedo <[email protected]>
Signed-off-by: Jeremy Bennett <[email protected]>
Co-authored-by: Yoann Pruvost <[email protected]>
Co-authored-by: pascalgouedo <[email protected]>
Co-authored-by: Jeremy Bennett <[email protected]>
Co-authored-by: Davide Schiavone <[email protected]>

* new block diagram (#14)

---------

Signed-off-by: Pascal Gouedo <[email protected]>
Signed-off-by: Jeremy Bennett <[email protected]>
Co-authored-by: pascalgouedo <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yoann Pruvost <[email protected]>
Co-authored-by: Jeremy Bennett <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component:Doc For issues in the Documentation (e.g. for README.md files)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants