1# v850 div 2# mach: v850e 3# as(v850e): -mv850e 4 5 .include "testutils.inc" 6 7# Regular division - check signs 8# The S flag is based on the quotient, not the remainder 9 10 seti 6, r1 11 seti 45, r2 12 div 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 div 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 div 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 div r1, r2, r3 40 41 flags 0 42 reg r1, -6 43 reg r2, 7 44 reg r3, -3 45 46# If the data is divided by zero, OV=1 and the quotient is undefined. 47# According to NEC, the S and Z flags, and the output registers, are 48# unchanged. 49 50 noflags 51 seti 0, r1 52 seti 45, r2 53 seti 67, r3 54 div r1, r2, r3 55 56 flags v 57 reg r2, 45 58 reg r3, 67 59 60 allflags 61 seti 0, r1 62 seti 45, r2 63 seti 67, r3 64 div r1, r2, r3 65 66 flags sat + c + v + s + z 67 reg r2, 45 68 reg r3, 67 69 70# Zero / (N!=0) => normal 71 72 noflags 73 seti 45, r1 74 seti 0, r2 75 seti 67, r3 76 div r1, r2, r3 77 78 flags z 79 reg r1, 45 80 reg r2, 0 81 reg r3, 0 82 83# Test for regular overflow 84 85 noflags 86 seti -1, r1 87 seti 0x80000000, r2 88 seti 67, r3 89 div r1, r2, r3 90 91 flags v + s 92 reg r1, -1 93 reg r2, 0x80000000 94 reg r3, 0 95 96# The Z flag is based on the quotient, not the remainder 97 98 noflags 99 seti 45, r1 100 seti 16, r2 101 div r1, r2, r3 102 103 flags z 104 reg r2, 0 105 reg r3, 16 106 107# If the quot and rem registers are the same, the remainder is stored. 108 109 seti 6, r1 110 seti 45, r2 111 div r1, r2, r2 112 113 flags 0 114 reg r1, 6 115 reg r2, 3 116 117 118 pass 119