1;;; 2;;; Test all opcodes and argument permuation 3;;; To make our job a lot simpler, we define a couple of 4;;; insn classes, that we use to generate the proper 5;;; test output. 6;;; 7;;; To rebuild this file you must use 8;;; ./rebuild.sh 9;;; 10;;; These definitions are used within this file: 11;;; TEST_C3X Enables testing of c3x opcodes 12;;; TEST_C4X Enables testing of c4x opcodes 13;;; TEST_ENH Enable testing of enhanced opcodes 14;;; TEST_IDLE2 Enable testing of IDLE2 command 15;;; TEST_LPWR Enable testing of LOPOWER commands 16;;; 17#include "opclasses.h" 18 19 .text 20 ;;------------------------------------ 21 ;; C3X INSNS 22 ;;------------------------------------ 23start: B_CLASS( absf, TEST_C3X ) 24 P_CLASS( absf, stf, TEST_C3X ) 25 A_CLASS( absi, TEST_C3X ) 26 P_CLASS( absi, sti, TEST_C3X ) 27 A_CLASS( addc, TEST_C3X ) 28 TC_CLASS( addc, TEST_C3X ) 29 B_CLASS( addf, TEST_C3X ) 30 SC_CLASS( addf, TEST_C3X ) 31 QC_CLASS( addf, stf, TEST_C3X ) 32 A_CLASS( addi, TEST_C3X ) 33 TC_CLASS( addi, TEST_C3X ) 34 QC_CLASS( addi, sti, TEST_C3X ) 35 AU_CLASS( and, TEST_C3X ) 36 TC_CLASS( and, TEST_C3X ) 37 QC_CLASS( and, sti, TEST_C3X ) 38 AU_CLASS( andn, TEST_C3X ) 39 T_CLASS( andn, TEST_C3X ) 40 A_CLASS( ash, TEST_C3X ) 41 T_CLASS( ash, TEST_C3X ) 42 Q_CLASS( ash, sti, TEST_C3X ) 43 J_CLASS( bC, b, TEST_C3X ) 44 J_CLASS( bCd, bd, TEST_C3X ) 45 .ifdef TEST_C3X 46br_I: br start 47brd_I: brd start 48call_I: call start 49call_JS: callc R0 50 callc start 51 .endif 52 B_CLASS( cmpf, TEST_C3X ) 53 S2_CLASS( cmpf, TEST_C3X ) 54 A_CLASS( cmpi, TEST_C3X ) 55 T2_CLASS( cmpi, TEST_C3X ) 56 D_CLASS( dbC, db, TEST_C3X ) 57 D_CLASS( dbCd, dbd, TEST_C3X ) 58 AF_CLASS( fix, TEST_C3X ) 59 P_CLASS( fix, sti, TEST_C3X ) 60 BI_CLASS( float, TEST_C3X ) 61 P_CLASS( float, stf, TEST_C3X ) 62 .ifdef TEST_C3X 63iack_Z: iack @start 64 iack *+AR0(1) 65idle_Z: idle 66 .endif 67 .ifdef TEST_IDLE2 68idle2_Z: idle2 69 .endif 70 B_CLASS( lde, TEST_C3X ) 71 B_CLASS( ldf, TEST_C3X ) 72 LL_CLASS( ldf, TEST_C3X ) 73 P_CLASS( ldf, stf, TEST_C3X ) 74 BB_CLASS( ldfC, TEST_C3X ) 75 B6_CLASS( ldfi, TEST_C3X ) 76 A_CLASS( ldi, TEST_C3X ) 77 LL_CLASS( ldi, TEST_C3X ) 78 P_CLASS( ldi, sti, TEST_C3X ) 79 AB_CLASS( ldiC, TEST_C3X ) 80 A6_CLASS( ldii, TEST_C3X ) 81 .ifdef TEST_C3X 82ldp_Z: ldp start 83 .endif 84 B_CLASS( ldm, TEST_C3X ) 85 .ifdef TEST_LPWR 86lopower_Z: lopower 87 .endif 88 A_CLASS( lsh, TEST_C3X ) 89 T_CLASS( lsh, TEST_C3X ) 90 Q_CLASS( lsh, sti, TEST_C3X ) 91 .ifdef TEST_LPWR 92maxspeed_Z: maxspeed 93 .endif 94 B_CLASS( mpyf, TEST_C3X ) 95 SC_CLASS( mpyf, TEST_C3X ) 96 M_CLASS( mpyf, addf, TEST_C3X ) 97 QC_CLASS( mpyf, stf, TEST_C3X ) 98 M_CLASS( mpyf, subf, TEST_C3X ) 99 A_CLASS( mpyi, TEST_C3X ) 100 TC_CLASS( mpyi, TEST_C3X ) 101 M_CLASS( mpyi, addi, TEST_C3X ) 102 QC_CLASS( mpyi, sti, TEST_C3X ) 103 M_CLASS( mpyi, subi, TEST_C3X ) 104 A_CLASS( negb, TEST_C3X ) 105 B_CLASS( negf, TEST_C3X ) 106 P_CLASS( negf, stf, TEST_C3X ) 107 A_CLASS( negi, TEST_C3X ) 108 P_CLASS( negi, sti, TEST_C3X ) 109 A2_CLASS( nop, TEST_C3X ) 110 B_CLASS( norm, TEST_C3X ) 111 AU_CLASS( not, TEST_C3X ) 112 P_CLASS( not, sti, TEST_C3X ) 113 AU_CLASS( or, TEST_C3X ) 114 TC_CLASS( or, TEST_C3X ) 115 QC_CLASS( or, sti, TEST_C3X ) 116 R_CLASS( pop, TEST_C3X ) 117 RF_CLASS( popf, TEST_C3X ) 118 R_CLASS( push, TEST_C3X ) 119 RF_CLASS( pushf, TEST_C3X ) 120 .ifdef TEST_C3X 121reti_Z: retiC 122 reti 123rets_Z: retsC 124 rets 125 .endif 126 B_CLASS( rnd, TEST_C3X ) 127 R_CLASS( rol, TEST_C3X ) 128 R_CLASS( rolc, TEST_C3X ) 129 R_CLASS( ror, TEST_C3X ) 130 R_CLASS( rorc, TEST_C3X ) 131 .ifdef TEST_C3X 132rptb_I2: rptb start 133 .endif 134 A3_CLASS( rpts, TEST_C3X ) 135 .ifdef TEST_C3X 136sigi_Z: sigi 137 .endif 138 B7_CLASS( stf, TEST_C3X ) 139 LS_CLASS( stf, TEST_C3X ) 140 B7_CLASS( stfi, TEST_C3X ) 141 A7_CLASS( sti, TEST_C3X ) 142 LS_CLASS( sti, TEST_C3X ) 143 A7_CLASS( stii, TEST_C3X ) 144 A_CLASS( subb, TEST_C3X ) 145 T_CLASS( subb, TEST_C3X ) 146 A_CLASS( subc, TEST_C3X ) 147 B_CLASS( subf, TEST_C3X ) 148 S_CLASS( subf, TEST_C3X ) 149 Q_CLASS( subf, stf, TEST_C3X ) 150 A_CLASS( subi, TEST_C3X ) 151 T_CLASS( subi, TEST_C3X ) 152 Q_CLASS( subi, sti, TEST_C3X ) 153 A_CLASS( subrb, TEST_C3X ) 154 B_CLASS( subrf, TEST_C3X ) 155 A_CLASS( subri, TEST_C3X ) 156 .ifdef TEST_C3X 157swi_Z: swi 158trap_Z: trapC 10 159 trap 10 160 .endif 161 AU_CLASS( tstb, TEST_C3X ) 162 T2C_CLASS( tstb, TEST_C3X ) 163 AU_CLASS( xor, TEST_C3X ) 164 TC_CLASS( xor, TEST_C3X ) 165 QC_CLASS( xor, sti, TEST_C3X ) 166 167 ;;------------------------------------ 168 ;; C4X INSNS 169 ;;------------------------------------ 170 .ifdef TEST_C4X 171 J_CLASS( bCaf, baf, TEST_C4X ) 172 J_CLASS( bCat, bat, TEST_C4X ) 173 B6_CLASS( frieee, TEST_C4X ) 174 P_CLASS( frieee, stf, TEST_C4X ) 175 .ifdef TEST_C4X 176laj_I: laj start 177laj_JS: lajc R0 178 lajc start 179lat_Z: latC 10 180 .endif 181 A_CLASS( lb0, TEST_C4X ) 182 A_CLASS( lb1, TEST_C4X ) 183 A_CLASS( lb2, TEST_C4X ) 184 A_CLASS( lb3, TEST_C4X ) 185 AU_CLASS( lbu0, TEST_C4X ) 186 AU_CLASS( lbu1, TEST_C4X ) 187 AU_CLASS( lbu2, TEST_C4X ) 188 AU_CLASS( lbu3, TEST_C4X ) 189 AY_CLASS( lda, TEST_C4X ) 190 .ifdef TEST_C4X 191ldep_Z: ldep IVTP, AR0 192ldhi_Z: ldhi 35, R0 193 ldhi start, R0 194ldpe_Z: ldpe AR0, IVTP 195ldpk_Z: ldpk start 196 .endif 197 A_CLASS( lh0, TEST_C4X ) 198 A_CLASS( lh1, TEST_C4X ) 199 AU_CLASS( lhu0, TEST_C4X ) 200 AU_CLASS( lhu1, TEST_C4X ) 201 A_CLASS( lwl0, TEST_C4X ) 202 A_CLASS( lwl1, TEST_C4X ) 203 A_CLASS( lwl2, TEST_C4X ) 204 A_CLASS( lwl3, TEST_C4X ) 205 A_CLASS( lwr0, TEST_C4X ) 206 A_CLASS( lwr1, TEST_C4X ) 207 A_CLASS( lwr2, TEST_C4X ) 208 A_CLASS( lwr3, TEST_C4X ) 209 A_CLASS( mb0, TEST_C4X ) 210 A_CLASS( mb1, TEST_C4X ) 211 A_CLASS( mb2, TEST_C4X ) 212 A_CLASS( mb3, TEST_C4X ) 213 A_CLASS( mh0, TEST_C4X ) 214 A_CLASS( mh1, TEST_C4X ) 215 A_CLASS( mh2, TEST_C4X ) 216 A_CLASS( mh3, TEST_C4X ) 217 A_CLASS( mpyshi, TEST_C4X ) 218 TC_CLASS( mpyshi, TEST_C4X ) 219 A_CLASS( mpyuhi, TEST_C4X ) 220 TC_CLASS( mpyuhi, TEST_C4X ) 221 BA_CLASS( rcpf, TEST_C4X ) 222 .ifdef TEST_C4X 223retid_Z: retiCd 224 retid 225rptb2_I2: rptb AR0 226rptbd_I2: rptbd start 227 rptbd AR0 228 .endif 229 B_CLASS( rsqrf, TEST_C4X ) 230 A6_CLASS( sigi, TEST_C4X ) 231 .ifdef TEST_C4X 232sti2_A7: sti -5, @start 233 sti -5, *+AR0(5) 234stik_Z: stik -5, @start 235 stik -5, *+AR0(5) 236 .endif 237 B_CLASS( toieee, TEST_C4X ) 238 P_CLASS( toieee, stf, TEST_C4X ) 239 .endif 240 .end 241 242