wangpc added a comment.

In D157476#4575656 <https://reviews.llvm.org/D157476#4575656>, @eopXD wrote:

> You do agree with my latest comment that `long` is the righteous fix, right? 
> :)

Oh sorry, somwhow I missed it.
I still think that using the element type is the right way. Because user will 
know the range of effective inserted value.
For example:

  vint16m1_t __riscv_vslide1up_vx_i16m1 (vint16m1_t src, int16_t value, size_t 
vl);
  vint16m1_t __riscv_vslide1up_vx_i16m1 (vint16m1_t src, long value, size_t vl);

We can know the range is [-32768, 32767] for the first intrinsic. When the user 
pass an argument larger than that(e.g. `__riscv_vslide1up_vx_i16m1(src, 
0xFFFFFFFF, vl)`), the compiler can warn the user and may avoid unexpected 
behaviors.
For the second intrinsic, we can pass a `long` value. But for SEW<XLEN, the 
inserted value will be truncated. For example, `__riscv_vslide1up_vx_i16m1(src, 
0xFFFFFFFF, vl)` won't report any warning, but the inserted value is just 
`0xFFFF`, which may be unexpected/confused.
That's just my thought. Issue or proposal can be raised in Github repo if we 
can come up with an agreement here. :-)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D157476/new/

https://reviews.llvm.org/D157476

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to