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