47 lines
		
	
	
		
			786 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			786 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include "io.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int main(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    long long rs, rt, dspreg, dspresult;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rs = 0x123456789ABCDEF0;
							 | 
						||
| 
								 | 
							
								    rt = 0x123456789ABCDEFF;
							 | 
						||
| 
								 | 
							
								    dspresult = 0x03;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    __asm
							 | 
						||
| 
								 | 
							
								        ("cmp.le.pw %1, %2\n\t"
							 | 
						||
| 
								 | 
							
								         "rddsp %0\n\t"
							 | 
						||
| 
								 | 
							
								         : "=r"(dspreg)
							 | 
						||
| 
								 | 
							
								         : "r"(rs), "r"(rt)
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    dspreg = ((dspreg >> 24) & 0x03);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (dspreg != dspresult) {
							 | 
						||
| 
								 | 
							
								        printf("1 cmp.le.pw error\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return -1;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rs = 0x123456799ABCEEFF;
							 | 
						||
| 
								 | 
							
								    rt = 0x123456789ABCDEFF;
							 | 
						||
| 
								 | 
							
								    dspresult = 0x00;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    __asm
							 | 
						||
| 
								 | 
							
								        ("cmp.le.pw %1, %2\n\t"
							 | 
						||
| 
								 | 
							
								         "rddsp %0\n\t"
							 | 
						||
| 
								 | 
							
								         : "=r"(dspreg)
							 | 
						||
| 
								 | 
							
								         : "r"(rs), "r"(rt)
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    dspreg = ((dspreg >> 24) & 0x03);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (dspreg != dspresult) {
							 | 
						||
| 
								 | 
							
								        printf("2 cmp.le.pw error\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return -1;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								}
							 |