| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -272,9 +272,9 @@ unsigned int test4vals[] = {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				int test4(long arg)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					unsigned long fsi, fpscr;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					unsigned long fsi, fso, fpscr;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					long i;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					unsigned long cr;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					unsigned long cr, mask;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					/* check we can do basic mtfsf and mffs */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					i = 1;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -298,6 +298,59 @@ int test4(long arg)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mffs. 6; mfcr %0" : "=r" (cr) : : "cr1");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (((cr >> 24) & 0xf) != ((fpscr >> 28) & 0x1f))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 18;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mffsce 12; stfd 12,0(%0)" : : "b" (&fso) : "memory");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (fso != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 19;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fpscr_eval(fpscr & ~0xf8);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 20;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("lfd 7,0(%0); mtfsf 0xff,7,0,0" : : "b" (&fsi));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fpscr_eval(fsi);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fsi = ~fsi;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("lfd 14,0(%0); mffscrn 15,14; stfd 15,0(%1)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    : : "b" (&fsi), "b" (&fso) : "memory");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (fso != (fpscr & 0xff))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 21;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = (fpscr & ~3) | (fsi & 3);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 22;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fso = ~fso;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mffscrni 16,1; stfd 16,0(%0)" : : "b" (&fso) : "memory");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (fso != (fpscr & 0xff))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 23;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = (fpscr & ~3) | 1;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 24;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mffsl 17; stfd 17,0(%0)" : : "b" (&fso) : "memory");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						mask = ((1 << (63-45+1)) - (1 << (63-51))) | ((1 << (63-56+1)) - (1 << (63-63)));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (fso != (fpscr & mask))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 25;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mcrfs 0,3; mcrfs 7,0; mfcr %0" : "=r" (cr) : : "cr0", "cr7");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fso = fpscr_eval(fpscr & ~0x80000);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (((cr >> 28) & 0xf) != ((fpscr >> 16) & 0xf) ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    ((cr >> 0) & 0xf) != ((fso >> 28) & 0xf))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 26;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fso & 0x6fffffff;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mtfsfi 0,7,0");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fpscr_eval((fpscr & 0x0fffffff) | 0x70000000);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 27;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mtfsb0 21");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fpscr_eval(fpscr & ~(1 << (31-21)));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 28;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mtfsb1 21");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fpscr_eval(fpscr | (1 << (31-21)));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 29;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mtfsb0 24");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fpscr_eval(fpscr & ~(1 << (31-24)));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 30;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						asm("mtfsb1. 24; mfcr %0" : "=r" (cr));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						fpscr = fpscr_eval(fpscr | (1 << (31-24)));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if (get_fpscr() != fpscr || ((cr >> 24) & 0xf) != ((fpscr >> 28) & 0xf))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return 16 * i + 31;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |