mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 04:06:46 +00:00 
			
		
		
		
	 50f0171a95
			
		
	
	
		50f0171a95
		
	
	
	
	
		
			
			Make tests for optional instruction groups conditional on the presence of corresponding options in the config. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
		
			
				
	
	
		
			152 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include "macros.inc"
 | |
| 
 | |
| test_suite rem
 | |
| 
 | |
| #if XCHAL_HAVE_DIV32
 | |
| 
 | |
| test remu_pp
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0x0c5caa17
 | |
|     remu    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     remu    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     remu    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test remu_np
 | |
|     movi    a2, 0xa5a5137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0x9aa40af
 | |
|     remu    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     remu    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     remu    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test remu_pn
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xf7315a5a
 | |
|     movi    a6, 0x5a5a137f
 | |
|     remu    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     remu    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     remu    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test remu_nn
 | |
|     movi    a2, 0xf7315a5a
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xa5a5137f
 | |
|     movi    a6, 0x518c46db
 | |
|     remu    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     remu    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     remu    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test remu_exc
 | |
|     set_vector kernel, 2f
 | |
|     movi    a2, 0xf7315a5a
 | |
|     movi    a4, 0x00000000
 | |
| 1:
 | |
|     remu    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 rems_pp
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0x0c5caa17
 | |
|     rems    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     rems    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     rems    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test rems_np
 | |
|     movi    a2, 0xa5a5137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0x137f5a5a
 | |
|     movi    a6, 0xf3a27ce7
 | |
|     rems    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     rems    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     rems    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test rems_pn
 | |
|     movi    a2, 0x5a5a137f
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xf7315a5a
 | |
|     movi    a6, 0x02479b03
 | |
|     rems    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     rems    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     rems    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test rems_nn
 | |
|     movi    a2, 0xf7315a5a
 | |
|     mov     a3, a2
 | |
|     movi    a4, 0xa5a5137f
 | |
|     movi    a6, 0xf7315a5a
 | |
|     rems    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
|     rems    a2, a2, a4
 | |
|     assert  eq, a2, a6
 | |
|     rems    a4, a3, a4
 | |
|     assert  eq, a4, a6
 | |
| test_end
 | |
| 
 | |
| test rems_over
 | |
|     movi    a2, 0x80000000
 | |
|     movi    a4, 0xffffffff
 | |
|     movi    a6, 0
 | |
|     rems    a5, a2, a4
 | |
|     assert  eq, a5, a6
 | |
| test_end
 | |
| 
 | |
| test rems_exc
 | |
|     set_vector kernel, 2f
 | |
|     movi    a2, 0xf7315a5a
 | |
|     movi    a4, 0x00000000
 | |
| 1:
 | |
|     rems    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
 | |
| 
 | |
| #endif
 | |
| 
 | |
| test_suite_end
 |