|  | # v850 satsub | 
|  | # mach: all | 
|  |  | 
|  | .include "testutils.inc" | 
|  |  | 
|  | # If the result of the add is "negative", that means we went too | 
|  | # positive.  The result should be the most positive number. | 
|  |  | 
|  | noflags | 
|  | seti	0x90000000, r1 | 
|  | seti	0x70000000, r2 | 
|  | satsub	r1, r2 | 
|  |  | 
|  | flags	sat + c + v + ns + nz | 
|  | reg	r2, 0x7fffffff | 
|  |  | 
|  | # Similarly, if the result of the add is "positive", that means we | 
|  | # went too negative.  The result should be the most negative number. | 
|  |  | 
|  | noflags | 
|  | seti	0x70000000, r1 | 
|  | seti	0x90000000, r2 | 
|  | satsub	r1, r2 | 
|  |  | 
|  | flags	sat + nc + v + s + nz | 
|  | reg	r2, 0x80000000 | 
|  |  | 
|  | # Check that the SAT flag remains set until reset | 
|  |  | 
|  | seti	1, r1 | 
|  | seti	2, r2 | 
|  | satsub	r1,r2 | 
|  |  | 
|  | flags	sat + nc + nv + ns + nz | 
|  | reg	r2, 1 | 
|  |  | 
|  | noflags | 
|  | seti	1, r1 | 
|  | seti	2, r2 | 
|  | satsub	r1,r2 | 
|  |  | 
|  | flags	nsat + nc + nv + ns + nz | 
|  | reg	r2, 1 | 
|  |  | 
|  | # Check that results exactly equal to min/max don't saturate | 
|  |  | 
|  | noflags | 
|  | seti	0x90000000, r1 | 
|  | seti	0x0fffffff, r2 | 
|  | satsub	r1,r2 | 
|  |  | 
|  | flags	nsat + c + nv + ns + nz | 
|  | reg	r2, 0x7fffffff | 
|  |  | 
|  |  | 
|  | noflags | 
|  | seti	0x70000000, r1 | 
|  | seti	0xf0000000, r2 | 
|  | satsub	r1,r2 | 
|  |  | 
|  | flags	nsat + nc + nv + s + nz | 
|  | reg	r2, 0x80000000 | 
|  |  | 
|  |  | 
|  | pass |