On 2020/5/12 1:40, Richard Henderson wrote:
On 4/30/20 12:21 AM, LIU Zhiwei wrote:
+ # sequence of li rd, 0x1234567887654321
+ #
+ # 0: 002471b7 lui rd,0x247
+ # 4: 8ad1819b addiw rd,rd,-1875
+ # 8: 00c19193 slli rd,rd,0xc
+ # c: f1118193 addi rd,rd,-239 # 0x246f11
+ # 10: 00d19193 slli rd,rd,0xd
+ # 14: d9518193 addi rd,rd,-619
+ # 18: 00e19193 slli rd,rd,0xe
+ # 1c: 32118193 addi rd,rd,801
You don't really need to use addiw. Removing that special case would really
simplify this.
I think I don't get it. Do you mean that the immediate will not be 64 bit?
+sub write_memblock_setup()
+{
+ # Write code which sets up the memory block for loads and stores.
+ # We set r0 to point to a block of 16K length
+ # of random data, aligned to the maximum desired alignment.
+
+ my $align = $MAXALIGN;
+ my $datalen = 16384 + $align;
risu.h:#define MEMBLOCKLEN 8192
Why are you using 16384?
It's a bug.
Once I thought I should make it bigger to support vector in the future .
And even that, 8K byts is also enough, as the most bytes operates in
one instruction
is LMUL * RV_VLEN_MAX / 8 = 512 Bytes.
Zhiwei
Also, typo -- you're setting r10 not r0, obviously.
The rest looks fine.
r~