This is an archive of the discontinued LLVM Phabricator instance.

[Clang][Doc] Add release note for changes of the RVV intrinsics
AbandonedPublic

Authored by eopXD on Jan 19 2023, 2:08 AM.

Diff Detail

Event Timeline

eopXD created this revision.Jan 19 2023, 2:08 AM
Herald added a project: Restricted Project. · View Herald TranscriptJan 19 2023, 2:08 AM
eopXD requested review of this revision.Jan 19 2023, 2:08 AM
eopXD added a comment.Jan 19 2023, 2:09 AM

These changes described are based on patch(es) under review. This patch should land after D142085.

eopXD added a comment.Jan 19 2023, 4:32 AM

@asb I just saw the cancellation of the sync-up call today. Regarding the branch out on 01/24 I think it would be good to have these incompatible changes into LLVM 16.

asb added a comment.Jan 19 2023, 7:00 AM

@asb I just saw the cancellation of the sync-up call today. Regarding the branch out on 01/24 I think it would be good to have these incompatible changes into LLVM 16.

Sorry for missing there were open questions about this. I won't uncancel the meeting at this point as I think that will just cause more confusion.

What does GCC currently do about these intrinsics? I think the obvious concern would be that by continuing to alter these intrinsics across releases, we're extending the compatibility issue.

Though without RVV 1.0 being agreed yet, I don't see any options other than just documenting where we're at and noting that more changes are possible (as this change does), or alternatively moving the intrinsics to an experimental flag until they're unexperimental.

@asb I just saw the cancellation of the sync-up call today. Regarding the branch out on 01/24 I think it would be good to have these incompatible changes into LLVM 16.

Sorry for missing there were open questions about this. I won't uncancel the meeting at this point as I think that will just cause more confusion.

What does GCC currently do about these intrinsics?

GCC is targeting to support v1.0 in the next release. The v1.0 intrinsics, excluding the rounding mode (vxrm, frm) and exception flag (vxsat, fflag) intrinsics, should be ones that LLVM have after the above changes have landed.

I think the obvious concern would be that by continuing to alter these intrinsics across releases, we're extending the compatibility issue.

Yes I agree with you. This is the main reason I am trying to have these incompatible changes be landed in LLVM 16.

Though without RVV 1.0 being agreed yet, I don't see any options other than just documenting where we're at and noting that more changes are possible (as this change does), or alternatively moving the intrinsics to an experimental flag until they're unexperimental.

The simplification [0] and __riscv_ [1] is discussed across and have converged. I understand it is a procedural problem that we want the specification be established first, but we also have to conform to the release date of LLVM 16.

[0] https://github.com/riscv-non-isa/rvv-intrinsic-doc/pull/186
[1] https://github.com/riscv-non-isa/riscv-c-api-doc/pull/31

As a RISC-V GCC maintainer: GCC 14 is targeting on RVV intrinsic 1.0, but segment load store and rounding mode stuff might not meet the release, so the status will be pretty close to clang/LLVM (with @eopXD's changes, __riscv_ prefix and those simplification stuffs).

asb accepted this revision.Jan 24 2023, 7:27 AM

@asb I just saw the cancellation of the sync-up call today. Regarding the branch out on 01/24 I think it would be good to have these incompatible changes into LLVM 16.

Sorry for missing there were open questions about this. I won't uncancel the meeting at this point as I think that will just cause more confusion.

What does GCC currently do about these intrinsics?

GCC is targeting to support v1.0 in the next release. The v1.0 intrinsics, excluding the rounding mode (vxrm, frm) and exception flag (vxsat, fflag) intrinsics, should be ones that LLVM have after the above changes have landed.

I think the obvious concern would be that by continuing to alter these intrinsics across releases, we're extending the compatibility issue.

Yes I agree with you. This is the main reason I am trying to have these incompatible changes be landed in LLVM 16.

Though without RVV 1.0 being agreed yet, I don't see any options other than just documenting where we're at and noting that more changes are possible (as this change does), or alternatively moving the intrinsics to an experimental flag until they're unexperimental.

The simplification [0] and __riscv_ [1] is discussed across and have converged. I understand it is a procedural problem that we want the specification be established first, but we also have to conform to the release date of LLVM 16.

[0] https://github.com/riscv-non-isa/rvv-intrinsic-doc/pull/186
[1] https://github.com/riscv-non-isa/riscv-c-api-doc/pull/31

Thanks for the answers. That all makes sense to me and it sounds like shipping what we have is probably the best option at this point. I'm happy to trust your judgement on the extent to which the RVV intrinsics have converged. Let's just keep in mind the option to move bits of the intrinsics to an experimental flag if we know it's very likely to change in the future.

Thanks Kito for confirming the GCC status / plans.

clang/docs/ReleaseNotes.rst
154

experiment => development

This revision is now accepted and ready to land.Jan 24 2023, 7:27 AM
eopXD updated this revision to Diff 493555.Jan 31 2023, 3:45 AM

Address comment from Alex.

eopXD retitled this revision from [Clang][Doc] Add release note for changes for the RVV intrinsics to [Clang][Doc] Add release note for changes of the RVV intrinsics.Jan 31 2023, 3:50 AM
eopXD abandoned this revision.Feb 9 2023, 2:10 AM

This was cherry-picked into the release branch of LLVM 16. Closing the patch.