1# sh testcase for mulr 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 10mulr_1: ! multiply by one 11 set_grs_a5a5 12 mov #1, r0 13 mulr 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 30mulr_2: ! multiply by two 31 set_grs_a5a5 32 mov #2, r0 33 mov #12, r1 34 mulr r0, r1 35 assertreg0 2 36 assertreg 24, r1 37 test_gr_a5a5 r2 38 test_gr_a5a5 r3 39 test_gr_a5a5 r4 40 test_gr_a5a5 r5 41 test_gr_a5a5 r6 42 test_gr_a5a5 r7 43 test_gr_a5a5 r8 44 test_gr_a5a5 r9 45 test_gr_a5a5 r10 46 test_gr_a5a5 r11 47 test_gr_a5a5 r12 48 test_gr_a5a5 r13 49 test_gr_a5a5 r14 50 51mulr_3: ! multiply five by five 52 set_grs_a5a5 53 mov #5, r0 54 mov #5, r1 55 mulr r0, r1 56 assertreg0 5 57 assertreg 25, r1 58 test_gr_a5a5 r2 59 test_gr_a5a5 r3 60 test_gr_a5a5 r4 61 test_gr_a5a5 r5 62 test_gr_a5a5 r6 63 test_gr_a5a5 r7 64 test_gr_a5a5 r8 65 test_gr_a5a5 r9 66 test_gr_a5a5 r10 67 test_gr_a5a5 r11 68 test_gr_a5a5 r12 69 test_gr_a5a5 r13 70 test_gr_a5a5 r14 71 72 73mulr_4: ! multiply 127 by 127 74 set_grs_a5a5 75 mov #127, r0 76 mov #127, r1 77 mulr r0, r1 78 assertreg0 127 79 assertreg 0x3f01, r1 80 test_gr_a5a5 r2 81 test_gr_a5a5 r3 82 test_gr_a5a5 r4 83 test_gr_a5a5 r5 84 test_gr_a5a5 r6 85 test_gr_a5a5 r7 86 test_gr_a5a5 r8 87 test_gr_a5a5 r9 88 test_gr_a5a5 r10 89 test_gr_a5a5 r11 90 test_gr_a5a5 r12 91 test_gr_a5a5 r13 92 test_gr_a5a5 r14 93 94mulr_5: ! multiply -1 by -1 95 set_grs_a5a5 96 mov #-1, r0 97 mov #-1, r1 98 mulr r0, r1 99 assertreg0 -1 100 assertreg 1, r1 101 test_gr_a5a5 r2 102 test_gr_a5a5 r3 103 test_gr_a5a5 r4 104 test_gr_a5a5 r5 105 test_gr_a5a5 r6 106 test_gr_a5a5 r7 107 test_gr_a5a5 r8 108 test_gr_a5a5 r9 109 test_gr_a5a5 r10 110 test_gr_a5a5 r11 111 test_gr_a5a5 r12 112 test_gr_a5a5 r13 113 test_gr_a5a5 r14 114 115mulr_6: ! multiply 46340 by 46340 116 set_grs_a5a5 117 movi20 #46340, r0 118 movi20 #46340, r1 119 mulr r0, r1 120 assertreg0 46340 121 assertreg 0x7ffea810, r1 122 test_gr_a5a5 r2 123 test_gr_a5a5 r3 124 test_gr_a5a5 r4 125 test_gr_a5a5 r5 126 test_gr_a5a5 r6 127 test_gr_a5a5 r7 128 test_gr_a5a5 r8 129 test_gr_a5a5 r9 130 test_gr_a5a5 r10 131 test_gr_a5a5 r11 132 test_gr_a5a5 r12 133 test_gr_a5a5 r13 134 test_gr_a5a5 r14 135 136mulr_7: ! multiply 7ffff by 7ffff (overflow) 137 set_grs_a5a5 138 movi20 #0x7ffff, r0 139 movi20 #0x7ffff, r1 140 mulr r0, r1 141 assertreg0 0x7ffff 142 assertreg 0xfff00001, r1 143 test_gr_a5a5 r2 144 test_gr_a5a5 r3 145 test_gr_a5a5 r4 146 test_gr_a5a5 r5 147 test_gr_a5a5 r6 148 test_gr_a5a5 r7 149 test_gr_a5a5 r8 150 test_gr_a5a5 r9 151 test_gr_a5a5 r10 152 test_gr_a5a5 r11 153 test_gr_a5a5 r12 154 test_gr_a5a5 r13 155 test_gr_a5a5 r14 156 157 158 pass 159 160 exit 0 161 162