1//Original:/testcases/core/c_dsp32mult_dr_mix/c_dsp32mult_dr_mix.dsp 2// Spec Reference: dsp32mult single dr (mix) u i t is tu ih 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8// test the default (signed fraction) rounding U=0 I=0 T=0 9imm32 r0, 0xab235615; 10imm32 r1, 0xcfba5117; 11imm32 r2, 0x13246715; 12imm32 r3, 0x00060017; 13imm32 r4, 0x90abcd19; 14imm32 r5, 0x10acef1b; 15imm32 r6, 0x000c001d; 16imm32 r7, 0x1246701f; 17R2.H = R1.L * R0.L, R2.L = R1.L * R0.L; 18R3.L = R1.L * R0.H (ISS2); 19R4.H = R1.H * R0.L; 20R5.H = R1.L * R0.H (M), R5.L = R1.H * R0.H; 21R6.H = R1.H * R0.L, R6.L = R1.L * R0.L; 22R7.H = R1.H * R0.H (M), R7.L = R1.H * R0.H; 23CHECKREG r2, 0x36893689; 24CHECKREG r3, 0x00068000; 25CHECKREG r4, 0xDF89CD19; 26CHECKREG r5, 0x36352001; 27CHECKREG r6, 0xDF893689; 28CHECKREG r7, 0xDFBB2001; 29 30// test the signed integer U=0 I=1 31imm32 r0, 0x8b235625; 32imm32 r1, 0x9fba5127; 33imm32 r2, 0xa3246725; 34imm32 r3, 0x00060027; 35imm32 r4, 0xb0abcd29; 36imm32 r5, 0x10acef2b; 37imm32 r6, 0xc00c002d; 38imm32 r7, 0xd246702f; 39R2.H = R1.L * R0.L, R2.L = R1.L * R0.L (TFU); 40R3.H = R1.L * R0.L, R3.L = R1.L * R0.H (IS); 41R4.H = R1.L * R0.L, R4.L = R1.H * R0.L (ISS2); 42R5.H = R1.L * R0.L, R5.L = R1.H * R0.H (IS); 43R6.H = R1.L * R0.H, R6.L = R1.L * R0.L (IS); 44R7.H = R1.L * R0.H, R7.L = R1.L * R0.H (IH); 45CHECKREG r0, 0x8B235625; 46CHECKREG r1, 0x9FBA5127; 47CHECKREG r2, 0x1B4E1B4E; 48CHECKREG r3, 0x7FFF8000; 49CHECKREG r4, 0x7FFF8000; 50CHECKREG r5, 0x7FFF7FFF; 51CHECKREG r6, 0x80007FFF; 52CHECKREG r7, 0xDAF4DAF4; 53 54imm32 r0, 0x5b23a635; 55imm32 r1, 0x6fba5137; 56imm32 r2, 0x1324b735; 57imm32 r3, 0x90060037; 58imm32 r4, 0x80abcd39; 59imm32 r5, 0xb0acef3b; 60imm32 r6, 0xa00c003d; 61imm32 r7, 0x12467003; 62R0.H = R3.L * R2.H, R0.L = R3.H * R2.L (IS); 63R1.H = R3.L * R2.H, R1.L = R3.H * R2.H (ISS2); 64R4.H = R3.H * R2.L, R4.L = R3.L * R2.L (IS); 65R5.H = R3.H * R2.L, R5.L = R3.L * R2.H (IS); 66R6.H = R3.H * R2.L, R6.L = R3.H * R2.L (IH); 67R7.H = R3.H * R2.L, R7.L = R3.H * R2.H (IS); 68CHECKREG r0, 0x7FFF7FFF; 69CHECKREG r1, 0x7FFF8000; 70CHECKREG r2, 0x1324B735; 71CHECKREG r3, 0x90060037; 72CHECKREG r4, 0x7FFF8000; 73CHECKREG r5, 0x7FFF7FFF; 74CHECKREG r6, 0x1FD71FD7; 75CHECKREG r7, 0x7FFF8000; 76 77imm32 r0, 0x1b235655; 78imm32 r1, 0xc4ba5157; 79imm32 r2, 0x63246755; 80imm32 r3, 0x00060055; 81imm32 r4, 0x90abc509; 82imm32 r5, 0x10acef5b; 83imm32 r6, 0xb00c005d; 84imm32 r7, 0x1246705f; 85R0.H = R5.H * R4.H, R0.L = R5.L * R4.L (IS); 86R1.H = R5.H * R4.H, R1.L = R5.L * R4.H (ISS2); 87R2.H = R5.H * R4.H, R2.L = R5.H * R4.L (IS); 88R3.H = R5.H * R4.H, R3.L = R5.H * R4.H (IS); 89R4.H = R6.H * R7.L, R4.L = R6.H * R7.L (IH); 90R5.H = R6.L * R7.H, R5.L = R6.H * R7.H (IS); 91CHECKREG r0, 0x80007FFF; 92CHECKREG r1, 0x80007FFF; 93CHECKREG r2, 0x80008000; 94CHECKREG r3, 0x80008000; 95CHECKREG r4, 0xDCE8DCE8; 96CHECKREG r5, 0x7FFF8000; 97CHECKREG r6, 0xB00C005D; 98CHECKREG r7, 0x1246705F; 99 100imm32 r0, 0xbb235666; 101imm32 r1, 0xefba5166; 102imm32 r2, 0x13248766; 103imm32 r3, 0xf0060066; 104imm32 r4, 0x90ab9d69; 105imm32 r5, 0x10acef6b; 106imm32 r6, 0x800cb06d; 107imm32 r7, 0x1246706f; 108// test the unsigned U=1 109R2.H = R1.L * R0.L, R2.L = R1.L * R0.L (FU); 110R3.H = R1.L * R0.L, R3.L = R1.L * R0.H (ISS2); 111R4.H = R7.L * R6.L, R4.L = R7.H * R6.L (FU); 112R5.H = R3.L * R2.L (M), R5.L = R3.H * R2.H (FU); 113R6.H = R5.L * R4.H, R6.L = R5.L * R4.L (TFU); 114R7.H = R5.L * R4.H, R7.L = R5.L * R4.H (FU); 115CHECKREG r0, 0xBB235666; 116CHECKREG r1, 0xEFBA5166; 117CHECKREG r2, 0x1B791B79; 118CHECKREG r3, 0x7FFF8000; 119CHECKREG r4, 0x4D7C0C98; 120CHECKREG r5, 0xF2440DBC; 121CHECKREG r6, 0x042800AC; 122CHECKREG r7, 0x04280428; 123 124imm32 r0, 0xab23a675; 125imm32 r1, 0xcfba5127; 126imm32 r2, 0x13246705; 127imm32 r3, 0x00060007; 128imm32 r4, 0x90abcd09; 129imm32 r5, 0x10acdfdb; 130imm32 r6, 0x000c000d; 131imm32 r7, 0x1246f00f; 132R0.H = R5.L * R4.H, R0.L = R5.H * R4.L (FU); 133R1.H = R3.L * R2.H, R1.L = R3.H * R2.H (IU); 134R2.H = R7.H * R6.L, R2.L = R7.L * R6.L (TFU); 135R3.H = R5.H * R4.L, R3.L = R5.L * R4.H (FU); 136R6.H = R1.H * R0.L, R6.L = R1.H * R0.L (IH); 137R7.H = R3.H * R2.L, R7.L = R3.H * R2.H (FU); 138CHECKREG r0, 0x7E810D5A; 139CHECKREG r1, 0x85FC72D8; 140CHECKREG r2, 0x0000000C; 141CHECKREG r3, 0x0D5A7E81; 142CHECKREG r4, 0x90ABCD09; 143CHECKREG r5, 0x10ACDFDB; 144CHECKREG r6, 0xF9A3F9A3; 145CHECKREG r7, 0x00010000; 146 147imm32 r0, 0xab235a75; 148imm32 r1, 0xcfba5127; 149imm32 r2, 0x13246905; 150imm32 r3, 0x00060007; 151imm32 r4, 0x90abcd09; 152imm32 r5, 0x10ace9db; 153imm32 r6, 0x000c0d0d; 154imm32 r7, 0x1246700f; 155R2.H = R1.H * R0.H, R2.L = R1.L * R0.L (TFU); 156R3.H = R1.H * R0.L, R3.L = R1.L * R0.H (FU); 157R4.H = R6.H * R7.H, R4.L = R6.H * R7.L (ISS2); 158R5.H = R6.L * R7.H, R5.L = R6.H * R7.H (FU); 159CHECKREG r0, 0xAB235A75; 160CHECKREG r1, 0xCFBA5127; 161CHECKREG r2, 0x8ADD1CAC; 162CHECKREG r3, 0x49663640; 163CHECKREG r4, 0x7FFF7FFF; 164CHECKREG r5, 0x00EE0001; 165CHECKREG r6, 0x000C0D0D; 166CHECKREG r7, 0x1246700F; 167 168// test the ROUNDING only on signed fraction T=1 169imm32 r0, 0xab235675; 170imm32 r1, 0xcfba5127; 171imm32 r2, 0x13246705; 172imm32 r3, 0x00060007; 173imm32 r4, 0x90abcd09; 174imm32 r5, 0x10acefdb; 175imm32 r6, 0x000c000d; 176imm32 r7, 0x1246700f; 177R2.H = R1.L * R0.L (M), R2.L = R1.L * R0.H (IS); 178R3.H = R1.H * R0.L (M), R3.L = R1.H * R0.H (FU); 179R0.H = R3.L * R2.L (M), R0.L = R3.H * R2.H (T); 180R1.H = R5.L * R4.H (M), R1.L = R5.L * R4.L (S2RND); 181R4.H = R7.H * R6.H (M), R4.L = R7.L * R6.L (IU); 182R5.H = R7.L * R6.H (M), R5.L = R7.H * R6.L (TFU); 183R6.H = R5.H * R4.L (M), R6.L = R5.L * R4.H (ISS2); 184R7.H = R3.L * R2.H (M), R7.L = R3.L * R2.L (IH); 185CHECKREG r0, 0xC56FEFB2; 186CHECKREG r1, 0xEDC10CDB; 187CHECKREG r2, 0x7FFF8000; 188CHECKREG r3, 0xEFB28ADE; 189CHECKREG r4, 0x7FFFFFFF; 190CHECKREG r5, 0x00050000; 191CHECKREG r6, 0x7FFF0000; 192CHECKREG r7, 0xC56F3A91; 193 194 195 196pass 197