1# v850 divh_3 2# mach: v850e 3# as(v850e): -mv850e 4 5 .include "testutils.inc" 6 7# Regular divhision - check signs 8# The S flag is based on the quotient, not the remainder 9 10 seti 6, r1 11 seti 45, r2 12 divh r1, r2, r3 13 14 flags 0 15 reg r1, 6 16 reg r2, 7 17 reg r3, 3 18 19 seti -6, r1 20 seti 45, r2 21 divh r1, r2, r3 22 23 flags s 24 reg r1, -6 25 reg r2, -7 26 reg r3, 3 27 28 seti 6, r1 29 seti -45, r2 30 divh r1, r2, r3 31 32 flags s 33 reg r1, 6 34 reg r2, -7 35 reg r3, -3 36 37 seti -6, r1 38 seti -45, r2 39 divh r1, r2, r3 40 41 flags 0 42 reg r1, -6 43 reg r2, 7 44 reg r3, -3 45 46# Only the lower half of the dividend is used 47 48 seti 0x0000fffa, r1 49 seti -45, r2 50 divh r1, r2, r3 51 52 flags 0 53 reg r1, 0x0000fffa 54 reg r2, 7 55 reg r3, -3 56 57 58# If the data is divhided by zero, OV=1 and the quotient is undefined. 59# According to NEC, the S and Z flags, and the output registers, are 60# unchanged. 61 62 noflags 63 seti 0, r1 64 seti 45, r2 65 seti 67, r3 66 divh r1, r2, r3 67 68 flags v 69 reg r2, 45 70 reg r3, 67 71 72 allflags 73 seti 0, r1 74 seti 45, r2 75 seti 67, r3 76 divh r1, r2, r3 77 78 flags sat + c + v + s + z 79 reg r2, 45 80 reg r3, 67 81 82# Zero / (N!=0) => normal 83 84 noflags 85 seti 45, r1 86 seti 0, r2 87 seti 67, r3 88 divh r1, r2, r3 89 90 flags z 91 reg r1, 45 92 reg r2, 0 93 reg r3, 0 94 95# Test for regular overflow 96 97 noflags 98 seti -1, r1 99 seti 0x80000000, r2 100 seti 67, r3 101 divh r1, r2, r3 102 103 flags v + s 104 reg r1, -1 105 reg r2, 0x80000000 106 reg r3, 0 107 108# The Z flag is based on the quotient, not the remainder 109 110 noflags 111 seti 45, r1 112 seti 16, r2 113 divh r1, r2, r3 114 115 flags z 116 reg r2, 0 117 reg r3, 16 118 119# If the quot and rem registers are the same, the remainder is stored. 120 121 seti 6, r1 122 seti 45, r2 123 divh r1, r2, r2 124 125 flags 0 126 reg r1, 6 127 reg r2, 3 128 129 130 pass 131