On 10/25/2024 4:27 PM, Andrea Parri wrote:
I am particularly interested in tests using lwarx and stwcx instructions
(this is what I understood would be used if one follows [1] to compile the
tests in this thread).
I have not yet check the cambridge website, but due to the timeline, I don't
expect to find tests with those instructions. The same is true with [2].
I have limited experience with diy7, but I remember that it had some
limitations to generate RMW instructions, at least for C [3].
Oh, I'm sure there are, though I'd also not consider myself the 'expert'
when it comes to diy7 internals. ;-) Here's an example use of diy7 /
diyone7 generating lwarx and stwcx and reflecting the previous pattern:
$ diyone7 -arch PPC LwSyncdWW Coe SyncdWRPA SyncdRRAP Fre
PPC A
"LwSyncdWW Coe SyncdWRNaA SyncdRRANa Fre"
Generator=diyone7 (version 7.57+1)
Prefetch=0:x=F,0:y=W,1:y=F,1:x=T
Com=Co Fr
Orig=LwSyncdWW Coe SyncdWRNaA SyncdRRANa Fre
{
0:r2=x; 0:r4=y;
1:r2=y; 1:r3=z; 1:r6=x;
}
P0 | P1 ;
li r1,1 | li r1,2 ;
stw r1,0(r2) | stw r1,0(r2) ;
lwsync | sync ;
li r3,1 | Loop00: ;
stw r3,0(r4) | lwarx r4,r0,r3 ;
| stwcx. r4,r0,r3 ;
| bne Loop00 ;
| sync ;
| lwz r5,0(r6) ;
exists ([y]=2 /\ 1:r5=0)
That is exactly what I was looking for. Thanks Andrea!
Hernan
But again, I'd probably have to defer to proper herdtools7 developers
and maintainers for any diy7 bug or misbehavior you'd have to discover.
Andrea
Hernan
[1] https://github.com/torvalds/linux/blob/master/arch/powerpc/net/bpf_jit_comp32.c
[2] https://github.com/herd/herdtools7/tree/master/catalogue/herding-cats/ppc/tests/campaign
[3] https://github.com/herd/herdtools7/issues/905