| 
					
				 | 
			
			
				@@ -177,11 +177,21 @@ static void rdpf_test(MPCIO &mpcio, int num_threads, char **args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         printf("%04x %x %016lx %016lx %016lx\n", x, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             ub.bshare, ua.ashare, sx.xshare, sa.ashare); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    printf("\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 RDPFTriple dt = tio.rdpftriple(depth); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (int i=0;i<3;++i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const RDPF &dpf = dt.dpf[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    RegXS peer_scaled_xor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    RegAS peer_scaled_sum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (mpcio.player == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tio.iostream_peer() << dpf.scaled_xor << dpf.scaled_sum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tio.iostream_peer() >> peer_scaled_xor >> peer_scaled_sum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        peer_scaled_sum += dpf.scaled_sum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        peer_scaled_xor ^= dpf.scaled_xor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (address_t x=0;x<(address_t(1)<<depth);++x) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         DPFnode leaf = dpf.leaf(x, op_counter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         RegBS ub = dpf.unit_bs(leaf); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -190,9 +200,31 @@ static void rdpf_test(MPCIO &mpcio, int num_threads, char **args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         RegAS sa = dpf.scaled_as(leaf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         printf("%04x %x %016lx %016lx %016lx\n", x, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             ub.bshare, ua.ashare, sx.xshare, sa.ashare); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (mpcio.player == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            tio.iostream_peer() << ub << ua << sx << sa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            RegBS peer_ub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            RegAS peer_ua; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            RegXS peer_sx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            RegAS peer_sa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            tio.iostream_peer() >> peer_ub >> peer_ua >> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                peer_sx >> peer_sa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ub ^= peer_ub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ua += peer_ua; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            sx ^= peer_sx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            sa += peer_sa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (ub.bshare || ua.ashare || sx.xshare || sa.ashare) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                printf("**** %x %016lx %016lx %016lx\n", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    ub.bshare, ua.ashare, sx.xshare, sa.ashare); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                printf("SCALE                   %016lx %016lx\n", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    peer_scaled_xor.xshare, peer_scaled_sum.ashare); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    printf("\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tio.send(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     pool.join(); 
			 |