148 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| .include "macros.inc"
 | |
| 
 | |
| test_suite quo
 | |
| 
 | |
| test quou_pp
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0x4
 | |
|     quou    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quou    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quou    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quou_np
 | |
|     movi    a2, 0xa5a5137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0x8
 | |
|     quou    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quou    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quou    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quou_pn
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xf7315a5a
 | |
|     movi    a6, 0
 | |
|     quou    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quou    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quou    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quou_nn
 | |
|     movi    a2, 0xf7315a5a
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xa5a5137f
 | |
|     movi    a6, 0x1
 | |
|     quou    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quou    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quou    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quou_exc
 | |
|     set_vector kernel, 2f
 | |
|     movi    a2, 0xf7315a5a
 | |
|     movi    a4, 0x00000000
 | |
| 1:
 | |
|     quou    a5, a2, a4
 | |
|     test_fail
 | |
| 2:
 | |
|     rsr     a2, exccause
 | |
|     assert  eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
 | |
|     rsr     a2, epc1
 | |
|     movi    a3, 1b
 | |
|     assert  eq, a2, a3
 | |
| test_end
 | |
| 
 | |
| test quos_pp
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0x4
 | |
|     quos    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quos    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quos    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quos_np
 | |
|     movi    a2, 0xa5a5137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0xfffffffc
 | |
|     quos    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quos    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quos    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quos_pn
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xf7315a5a
 | |
|     movi    a6, 0xfffffff6
 | |
|     quos    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quos    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quos    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quos_nn
 | |
|     movi    a2, 0xf7315a5a
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xa5a5137f
 | |
|     movi    a6, 0
 | |
|     quos    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     quos    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     quos    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test quos_over
 | |
|     movi    a2, 0x80000000
 | |
|     movi    a4, 0xffffffff
 | |
|     movi    a6, 0x80000000
 | |
|     quos    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
| test_end
 | |
| 
 | |
| test quos_exc
 | |
|     set_vector kernel, 2f
 | |
|     movi    a2, 0xf7315a5a
 | |
|     movi    a4, 0x00000000
 | |
| 1:
 | |
|     quos    a5, a2, a4
 | |
|     test_fail
 | |
| 2:
 | |
|     rsr     a2, exccause
 | |
|     assert  eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
 | |
|     rsr     a2, epc1
 | |
|     movi    a3, 1b
 | |
|     assert  eq, a2, a3
 | |
| test_end
 | |
| 
 | |
| test_suite_end
 |