1 .text 2 .global start 3 4! Starting point 5start: 6 7! test all ASRs 8 9 rd %asr0, %l0 10 rd %asr1, %l0 11 rd %asr15, %l0 12 rd %asr17, %l0 13 rd %asr18, %l0 14 rd %asr19, %l0 ! should stop the processor 15 rd %asr20, %l0 16 rd %asr21, %l0 17 rd %asr22, %l0 18 19 wr %l0, 0, %asr0 20 wr %l0, 0, %asr1 21 wr %l0, 0, %asr15 22 wr %l0, 0, %asr17 23 wr %l0, 0, %asr18 24 wr %l0, 0, %asr19 25 wr %l0, 0, %asr20 26 wr %l0, 0, %asr21 27 wr %l0, 0, %asr22 28 29! test UMUL with no overflow inside Y 30test_umul: 31 umul %g1, %g2, %g3 32 33! test UMUL with an overflow inside Y 34 35 umul %g1, %g2, %g3 ! %g3 must be equal to 0 36 37! test SMUL with negative result 38test_smul: 39 smul %g1, %g2, %g3 40 41! test SMUL with positive result 42 43 smul %g1, %g2, %g3 44 45! test STBAR: there are two possible syntaxes 46test_stbar: 47 stbar ! is a valid V8 syntax, at least a synthetic 48 ! instruction 49 rd %asr15, %g0 ! other solution 50 51! test UNIMP 52 unimp 1 53 54! test FLUSH 55 flush %l1 ! is the official V8 syntax 56 57! test SCAN: find first 0 58test_scan: 59 scan %l1, 0xffffffff, %l3 60 61! test scan: find first 1 62 63 scan %l1, 0, %l3 64 65! test scan: find first bit != bit-0 66 67 scan %l1, %l1, %l3 68 69! test SHUFFLE 70test_shuffle: 71 shuffle %l0, 0x1, %l1 72 shuffle %l0, 0x2, %l1 73 shuffle %l0, 0x4, %l1 74 shuffle %l0, 0x8, %l1 75 shuffle %l0, 0x10, %l1 76 shuffle %l0, 0x18, %l1 77 78! test UMAC 79test_umac: 80 umac %l1, %l2, %l0 81 umac %l1, 2, %l0 82 umac 2, %l1, %l0 83 84! test UMACD 85test_umacd: 86 umacd %l2, %l4, %l0 87 umacd %l2, 3, %l0 88 umacd 3, %l2, %l0 89 90! test SMAC 91test_smac: 92 smac %l1, %l2, %l0 93 smac %l1, -42, %l0 94 smac -42, %l1, %l0 95 96! test SMACD 97test_smacd: 98 smacd %l2, %l4, %l0 99 smacd %l2, 123, %l0 100 smacd 123, %l2, %l0 101 102! test UMULD 103test_umuld: 104 umuld %o2, %o4, %o0 105 umuld %o2, 0x234, %o0 106 umuld 0x567, %o2, %o0 107 108! test SMULD 109test_smuld: 110 smuld %i2, %i4, %i0 111 smuld %i2, -4096, %i0 112 smuld 4095, %i4, %i0 113 114! Coprocessor instructions 115test_coprocessor: 116! %ccsr is register # 0 117! %ccfr is register # 1 118! %ccpr is register # 3 119! %cccrcr is register # 2 120 121! test CPUSH: just syntax 122 123 cpush %l0, %l1 124 cpush %l0, 1 125 cpusha %l0, %l1 126 cpusha %l0, 1 127 128! test CPULL: just syntax 129 130 cpull %l0 131 132! test CPRDCXT: just syntax 133 134 crdcxt %ccsr, %l0 135 crdcxt %ccfr, %l0 136 crdcxt %ccpr, %l0 137 crdcxt %cccrcr, %l0 138 139! test CPWRCXT: just syntax 140 141 cwrcxt %l0, %ccsr 142 cwrcxt %l0, %ccfr 143 cwrcxt %l0, %ccpr 144 cwrcxt %l0, %cccrcr 145 146! test CBccc: just syntax 147 148 cbn stop 149 nop 150 cbn,a stop 151 nop 152 cbe stop 153 nop 154 cbe,a stop 155 nop 156 cbf stop 157 nop 158 cbf,a stop 159 nop 160 cbef stop 161 nop 162 cbef,a stop 163 nop 164 cbr stop 165 nop 166 cbr,a stop 167 nop 168 cber stop 169 nop 170 cber,a stop 171 nop 172 cbfr stop 173 nop 174 cbfr,a stop 175 nop 176 cbefr stop 177 nop 178 cbefr,a stop 179 nop 180 cba stop 181 nop 182 cba,a stop 183 nop 184 cbne stop 185 nop 186 cbne,a stop 187 nop 188 cbnf stop 189 nop 190 cbnf,a stop 191 nop 192 cbnef stop 193 nop 194 cbnef,a stop 195 nop 196 cbnr stop 197 nop 198 cbnr,a stop 199 nop 200 cbner stop 201 nop 202 cbner,a stop 203 nop 204 cbnfr stop 205 nop 206 cbnfr,a stop 207 nop 208 cbnefr stop 209 nop 210 cbnefr,a stop 211 nop 212