public inbox for
 help / color / mirror / Atom feed
* [RISCV] [GNU AS] Possible `vmsge{u}.vx` instruction lowering bug?
@ 2023-08-29  6:52 im Kiva
  2023-08-29  7:43 ` Jan Beulich
  0 siblings, 1 reply; 8+ messages in thread
From: im Kiva @ 2023-08-29  6:52 UTC (permalink / raw)
  To: binutils

[-- Attachment #1: Type: text/plain, Size: 1096 bytes --]

Hi maintainers,

I discovered that GNU Assembler (as) lowers `vmsge.vx` and `vmsgeu.vx` (pseudo
instructions from RISC-V Vector Extension [1]) when the destination
register is v0 as follows:

vmsge{u}.vx v0, v4, a0, v0.t, v2

will be expanded to:

vmslt{u}.vx v2, v4, a0, v0.t v0, v0, v2

You can inspect the lowering result with Godbolt [2].
However, according to the Vector specification [1] page 52. The "desugared"
`vmslt{u}.vx` is not masked:

> masked va >= x, vd == v0
>   pseudoinstruction: vmsge{u}.vx vd, va, x, v0.t, vt
>   expansion: vmslt{u}.vx vt, va, x; vd, vd, vt

So the spec-expected result of the example above should be:
vmslt{u}.vx v2, v4, a0 <-- no v0.t here v0, v0, v2

I thus submitted a patch to the LLVM [3], and it was accepted recently.

I am wondering if binutils considers it a bug, or if it is just intentional
because of some historical and compatibility reasons.

Best regards
Kiva Oyama


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-09-01  8:03 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-29  6:52 [RISCV] [GNU AS] Possible `vmsge{u}.vx` instruction lowering bug? im Kiva
2023-08-29  7:43 ` Jan Beulich
2023-08-29  7:59   ` Nelson Chu
2023-08-29  8:52     ` Jan Beulich
2023-08-30  2:51       ` Nelson Chu
2023-08-30  5:50         ` Jan Beulich
2023-09-01  6:37           ` Kiva Oyama
2023-09-01  8:03             ` Nelson Chu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).