1# sh testcase for divs and divu 2# mach: all 3# as(sh): -defsym sim_cpu=0 4# as(shdsp): -defsym sim_cpu=1 -dsp 5 6 .include "testutils.inc" 7 8 start 9 10divs_1: ! divide by one 11 set_grs_a5a5 12 mov #1, r0 13 divs r0, r1 14 assertreg0 1 15 test_gr_a5a5 r1 16 test_gr_a5a5 r2 17 test_gr_a5a5 r3 18 test_gr_a5a5 r4 19 test_gr_a5a5 r5 20 test_gr_a5a5 r6 21 test_gr_a5a5 r7 22 test_gr_a5a5 r8 23 test_gr_a5a5 r9 24 test_gr_a5a5 r10 25 test_gr_a5a5 r11 26 test_gr_a5a5 r12 27 test_gr_a5a5 r13 28 test_gr_a5a5 r14 29 30divs_2: ! divide by two 31 set_grs_a5a5 32 mov #2, r0 33 divs r0, r1 34 assertreg0 2 35 assertreg 0xd2d2d2d3, r1 36 test_gr_a5a5 r2 37 test_gr_a5a5 r3 38 test_gr_a5a5 r4 39 test_gr_a5a5 r5 40 test_gr_a5a5 r6 41 test_gr_a5a5 r7 42 test_gr_a5a5 r8 43 test_gr_a5a5 r9 44 test_gr_a5a5 r10 45 test_gr_a5a5 r11 46 test_gr_a5a5 r12 47 test_gr_a5a5 r13 48 test_gr_a5a5 r14 49 50divs_3: ! divide by three 51 set_grs_a5a5 52 mov #3, r0 53 divs r0, r1 54 assertreg0 3 55 assertreg 0xe1e1e1e2, r1 56 test_gr_a5a5 r2 57 test_gr_a5a5 r3 58 test_gr_a5a5 r4 59 test_gr_a5a5 r5 60 test_gr_a5a5 r6 61 test_gr_a5a5 r7 62 test_gr_a5a5 r8 63 test_gr_a5a5 r9 64 test_gr_a5a5 r10 65 test_gr_a5a5 r11 66 test_gr_a5a5 r12 67 test_gr_a5a5 r13 68 test_gr_a5a5 r14 69 70divs_0: ! divide by zero 71 set_grs_a5a5 72 mov #0, r0 73 divs r0, r1 74 assertreg0 0 75 assertreg 0x7fffffff, r1 76 test_gr_a5a5 r2 77 test_gr_a5a5 r3 78 test_gr_a5a5 r4 79 test_gr_a5a5 r5 80 test_gr_a5a5 r6 81 test_gr_a5a5 r7 82 test_gr_a5a5 r8 83 test_gr_a5a5 r9 84 test_gr_a5a5 r10 85 test_gr_a5a5 r11 86 test_gr_a5a5 r12 87 test_gr_a5a5 r13 88 test_gr_a5a5 r14 89 90divs_o: ! divide signed overflow 91 set_grs_a5a5 92 mov #16, r0 93 movi20 #0x8000, r1 94 shad r0, r1 ! r1 == 0x80000000 95 mov #-1, r0 96 divs r0, r1 97 assertreg0 -1 98 assertreg 0x7fffffff, r1 99 test_gr_a5a5 r2 100 test_gr_a5a5 r3 101 test_gr_a5a5 r4 102 test_gr_a5a5 r5 103 test_gr_a5a5 r6 104 test_gr_a5a5 r7 105 test_gr_a5a5 r8 106 test_gr_a5a5 r9 107 test_gr_a5a5 r10 108 test_gr_a5a5 r11 109 test_gr_a5a5 r12 110 test_gr_a5a5 r13 111 test_gr_a5a5 r14 112 113 114divu_1: ! divide by one, unsigned 115 set_grs_a5a5 116 mov #1, r0 117 divu r0, r1 118 assertreg0 1 119 test_gr_a5a5 r1 120 test_gr_a5a5 r2 121 test_gr_a5a5 r3 122 test_gr_a5a5 r4 123 test_gr_a5a5 r5 124 test_gr_a5a5 r6 125 test_gr_a5a5 r7 126 test_gr_a5a5 r8 127 test_gr_a5a5 r9 128 test_gr_a5a5 r10 129 test_gr_a5a5 r11 130 test_gr_a5a5 r12 131 test_gr_a5a5 r13 132 test_gr_a5a5 r14 133 134divu_2: ! divide by two, unsigned 135 set_grs_a5a5 136 mov #2, r0 137 divu r0, r1 138 assertreg0 2 139 assertreg 0x52d2d2d2, r1 140 test_gr_a5a5 r2 141 test_gr_a5a5 r3 142 test_gr_a5a5 r4 143 test_gr_a5a5 r5 144 test_gr_a5a5 r6 145 test_gr_a5a5 r7 146 test_gr_a5a5 r8 147 test_gr_a5a5 r9 148 test_gr_a5a5 r10 149 test_gr_a5a5 r11 150 test_gr_a5a5 r12 151 test_gr_a5a5 r13 152 test_gr_a5a5 r14 153 154divu_3: ! divide by three, unsigned 155 set_grs_a5a5 156 mov #3, r0 157 divu r0, r1 158 assertreg0 3 159 assertreg 0x37373737, r1 160 test_gr_a5a5 r2 161 test_gr_a5a5 r3 162 test_gr_a5a5 r4 163 test_gr_a5a5 r5 164 test_gr_a5a5 r6 165 test_gr_a5a5 r7 166 test_gr_a5a5 r8 167 test_gr_a5a5 r9 168 test_gr_a5a5 r10 169 test_gr_a5a5 r11 170 test_gr_a5a5 r12 171 test_gr_a5a5 r13 172 test_gr_a5a5 r14 173 174divu_0: ! divide by zero, unsigned 175 set_grs_a5a5 176 mov #0, r0 177 divu r0, r1 178 assertreg0 0 179 assertreg 0xffffffff, r1 180 test_gr_a5a5 r2 181 test_gr_a5a5 r3 182 test_gr_a5a5 r4 183 test_gr_a5a5 r5 184 test_gr_a5a5 r6 185 test_gr_a5a5 r7 186 test_gr_a5a5 r8 187 test_gr_a5a5 r9 188 test_gr_a5a5 r10 189 test_gr_a5a5 r11 190 test_gr_a5a5 r12 191 test_gr_a5a5 r13 192 test_gr_a5a5 r14 193 194 195 pass 196 197 exit 0 198 199