Test PPO+RMW

PPC PPO+RMW
(* C++ example in sec. 4.2, hand-coded to Power *)
Com=Rf Fr
{
%x0=x; %y0=y;
%x1=x; %y1=y;
}
P0            | P1                 ;
li r1,1       | lwarx r1,r0,%y1    ;
stw r1,0(%x0) | cmpwi r1,1         ;
lwsync        | bne Lexit          ;
li r2,1       | li r2,2            ;
stw r2,0(%y0) | stwcx. r2,r0,%y1   ;
              | Lexit:             ;
              | lwz r3,0(%y1)      ;
              | xor r9,r3,r3       ;
              | lwzx r4,r9,%x1     ;
exists
  (1:r1=1 /\ 1:r3=2 /\ 1:r4=0)
(* C++ example, more or less: Fre LwSyncdWW Rfe Rmw ; PosWR ; DpAddrdR

T0                            T1
Wrlx x 1
Wrel y 1  ------rf----> RMWrlx y 1,2
                                 Rcon y 2
                                 <addr>
                                 R x 0

T0                          T1

W x 1
lwsync
W y 1      ------rf---> lwarx y,r1 (1)
                                cmp r1,1
                                bc _exit
                                stwcx y,2
                                _exit:
                                R y (2)
                                <addr>
                                R x (0)


*)