1// Test signbits40 2# mach: bfin 3 4.include "testutils.inc" 5 start 6 7 8// positive value in accum, smaller than 1.0 9 A1 = A0 = 0; 10 R0.L = 0xffff; 11 R0.H = 0x0000; 12 A0.w = R0; 13 R0.L = 0x0000; 14 A0.x = R0; 15 16 R5.L = SIGNBITS A0; 17 _DBG R5; 18 A0 = ASHIFT A0 BY R5.L; 19 _DBG A0; 20 21 R4 = A0.w; 22 R5 = A0.x; 23 DBGA ( R4.H , 0x7fff ); DBGA ( R4.L , 0x8000 ); 24 DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 ); 25 26// neg value in accum, larger than -1.0 27 A1 = A0 = 0; 28 R0.L = 0x0000; 29 R0.H = 0xffff; 30 A0.w = R0; 31 R0.L = 0x00ff; 32 A0.x = R0; 33 34 R5.L = SIGNBITS A0; 35 _DBG R5; 36 A0 = ASHIFT A0 BY R5.L; 37 _DBG A0; 38 39 R4 = A0.w; 40 R5 = A0.x; 41 DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 ); 42 DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff ); 43 44// positive value in accum, larger than 1.0 45 A1 = A0 = 0; 46 R0.L = 0xffff; 47 R0.H = 0xffff; 48 A0.w = R0; 49 R0.L = 0x000f; 50 A0.x = R0; 51 52 R5.L = SIGNBITS A0; 53 _DBG R5; 54 A0 = ASHIFT A0 BY R5.L; 55 _DBG A0; 56 57 R4 = A0.w; 58 R5 = A0.x; 59 DBGA ( R4.H , 0x7fff ); DBGA ( R4.L , 0xffff ); 60 DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 ); 61 62// negative value in accum, smaller than -1.0 63 A1 = A0 = 0; 64 R0.L = 0x0000; 65 R0.H = 0x0000; 66 A0.w = R0; 67 R0.L = 0x0080; 68 A0.x = R0; 69 70 R5.L = SIGNBITS A0; 71 _DBG R5; 72 A0 = ASHIFT A0 BY R5.L; 73 _DBG A0; 74 75 R4 = A0.w; 76 R5 = A0.x; 77 DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 ); 78 DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff ); 79 80// no normalization 81 A1 = A0 = 0; 82 R0.L = 0xfffa; 83 R0.H = 0x7fff; 84 A0.w = R0; 85 R0.L = 0x0000; 86 A0.x = R0; 87 88 R5.L = SIGNBITS A0; 89 _DBG R5; 90 A0 = ASHIFT A0 BY R5.L; 91 _DBG A0; 92 93 R4 = A0.w; 94 R5 = A0.x; 95 DBGA ( R4.H , 0x7fff ); DBGA ( R4.L , 0xfffa ); 96 DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 ); 97 98// no normalization (-1.0) 99 A1 = A0 = 0; 100 R0.L = 0x0000; 101 R0.H = 0x8000; 102 A0.w = R0; 103 R0.L = 0x00ff; 104 A0.x = R0; 105 106 R5.L = SIGNBITS A0; 107 _DBG R5; 108 A0 = ASHIFT A0 BY R5.L; 109 _DBG A0; 110 111 R4 = A0.w; 112 R5 = A0.x; 113 DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 ); 114 DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff ); 115 116// norm by 1 117 A1 = A0 = 0; 118 R0.L = 0x0000; 119 R0.H = 0x8000; 120 A0.w = R0; 121 R0.L = 0x0000; 122 A0.x = R0; 123 124 R5.L = SIGNBITS A0; 125 _DBG R5; 126 A0 = ASHIFT A0 BY R5.L; 127 _DBG A0; 128 129 R4 = A0.w; 130 R5 = A0.x; 131 DBGA ( R4.H , 0x4000 ); DBGA ( R4.L , 0x0000 ); 132 DBGA ( R5.H , 0x0000 ); DBGA ( R5.L , 0x0000 ); 133 134// norm by 1 135 A1 = A0 = 0; 136 R0.L = 0x0000; 137 R0.H = 0x0000; 138 A0.w = R0; 139 R0.L = 0x00ff; 140 A0.x = R0; 141 142 R5.L = SIGNBITS A0; 143 _DBG R5; 144 A0 = ASHIFT A0 BY R5.L; 145 _DBG A0; 146 147 R4 = A0.w; 148 R5 = A0.x; 149 DBGA ( R4.H , 0x8000 ); DBGA ( R4.L , 0x0000 ); 150 DBGA ( R5.H , 0xffff ); DBGA ( R5.L , 0xffff ); 151 152 pass 153