1# source file to test illegal mips64r2 instructions 2 3 .set noreorder 4 .set noat 5 6 .text 7text_label: 8 9 # dext macro position/size checks 10 11 # constraint: 0 <= pos < 64 12 dext $4, $5, -1, 1 # error (position) 13 dext $4, $5, 0, 1 14 dext $4, $5, 63, 1 15 dext $4, $5, 64, 1 # error (position) 16 17 # constraint: 0 < size <= 64 18 dext $4, $5, 0, 0 # error (size) 19 dext $4, $5, 0, 1 20 dext $4, $5, 0, 64 21 dext $4, $5, 0, 65 # error (size) 22 23 # constraint: 0 < (pos+size) <= 64 24 dext $4, $5, 0, 1 25 dext $4, $5, 0, 2 26 dext $4, $5, 0, 63 27 dext $4, $5, 0, 64 28 dext $4, $5, 1, 1 29 dext $4, $5, 1, 2 30 dext $4, $5, 1, 63 31 dext $4, $5, 1, 64 # error (size) 32 dext $4, $5, 63, 1 33 dext $4, $5, 63, 2 # error (size) 34 dext $4, $5, 63, 63 # error (size) 35 dext $4, $5, 63, 64 # error (size) 36 37 # dextm instruction position/size checks 38 39 # constraint: 0 <= pos < 32 40 dextm $4, $5, -1, 33 # error (position) 41 dextm $4, $5, 0, 33 42 dextm $4, $5, 31, 33 43 dextm $4, $5, 32, 33 # error (position) 44 45 # constraint: 32 < size <= 64 46 dextm $4, $5, 0, 32 # error (size) 47 dextm $4, $5, 0, 33 48 dextm $4, $5, 0, 64 49 dextm $4, $5, 0, 65 # error (size) 50 51 # constraint: 32 < (pos+size) <= 64 52 dextm $4, $5, 0, 33 53 dextm $4, $5, 0, 34 54 dextm $4, $5, 0, 63 55 dextm $4, $5, 0, 64 56 dextm $4, $5, 1, 33 57 dextm $4, $5, 1, 34 58 dextm $4, $5, 1, 63 59 dextm $4, $5, 1, 64 # error (size) 60 dextm $4, $5, 31, 33 61 dextm $4, $5, 31, 34 # error (size) 62 dextm $4, $5, 31, 63 # error (size) 63 dextm $4, $5, 31, 64 # error (size) 64 65 # dextu instruction position/size checks 66 67 # constraint: 32 <= pos < 64 68 dextu $4, $5, 31, 1 # error (position) 69 dextu $4, $5, 32, 1 70 dextu $4, $5, 63, 1 71 dextu $4, $5, 64, 1 # error (position) 72 73 # constraint: 0 < size <= 32 74 dextu $4, $5, 32, 0 # error (size) 75 dextu $4, $5, 32, 1 76 dextu $4, $5, 32, 32 77 dextu $4, $5, 32, 33 # error (size) 78 79 # constraint: 32 < (pos+size) <= 64 80 dextu $4, $5, 32, 1 81 dextu $4, $5, 32, 2 82 dextu $4, $5, 32, 31 83 dextu $4, $5, 32, 32 84 dextu $4, $5, 33, 1 85 dextu $4, $5, 33, 2 86 dextu $4, $5, 33, 31 87 dextu $4, $5, 33, 32 # error (size) 88 dextu $4, $5, 63, 1 89 dextu $4, $5, 63, 2 # error (size) 90 dextu $4, $5, 63, 31 # error (size) 91 dextu $4, $5, 63, 32 # error (size) 92 93 # dins macro position/size checks 94 95 # constraint: 0 <= pos < 64 96 dins $4, $5, -1, 1 # error (position) 97 dins $4, $5, 0, 1 98 dins $4, $5, 63, 1 99 dins $4, $5, 64, 1 # error (position) 100 101 # constraint: 0 < size <= 64 102 dins $4, $5, 0, 0 # error (size) 103 dins $4, $5, 0, 1 104 dins $4, $5, 0, 64 105 dins $4, $5, 0, 65 # error (size) 106 107 # constraint: 0 < (pos+size) <= 64 108 dins $4, $5, 0, 1 109 dins $4, $5, 0, 2 110 dins $4, $5, 0, 63 111 dins $4, $5, 0, 64 112 dins $4, $5, 1, 1 113 dins $4, $5, 1, 2 114 dins $4, $5, 1, 63 115 dins $4, $5, 1, 64 # error (size) 116 dins $4, $5, 63, 1 117 dins $4, $5, 63, 2 # error (size) 118 dins $4, $5, 63, 63 # error (size) 119 dins $4, $5, 63, 64 # error (size) 120 121 # dinsm instruction position/size checks 122 123 # constraint: 0 <= pos < 32 124 dinsm $4, $5, -1, 33 # error (position) 125 dinsm $4, $5, 0, 33 126 dinsm $4, $5, 31, 33 127 dinsm $4, $5, 32, 33 # error (position) 128 129 # constraint: 2 <= size <= 64 130 dinsm $4, $5, 31, 1 # error (size) 131 dinsm $4, $5, 31, 2 132 dinsm $4, $5, 0, 64 133 dinsm $4, $5, 0, 65 # error (size) 134 135 # constraint: 32 < (pos+size) <= 64 136 dinsm $4, $5, 0, 2 # error (size) 137 dinsm $4, $5, 0, 3 # error (size) 138 dinsm $4, $5, 0, 63 139 dinsm $4, $5, 0, 64 140 dinsm $4, $5, 1, 2 # error (size) 141 dinsm $4, $5, 1, 3 # error (size) 142 dinsm $4, $5, 1, 63 143 dinsm $4, $5, 1, 64 # error (size) 144 dinsm $4, $5, 30, 2 # error (size) 145 dinsm $4, $5, 30, 3 146 dinsm $4, $5, 30, 63 # error (size) 147 dinsm $4, $5, 30, 64 # error (size) 148 dinsm $4, $5, 31, 2 149 dinsm $4, $5, 31, 3 150 dinsm $4, $5, 31, 63 # error (size) 151 dinsm $4, $5, 31, 64 # error (size) 152 153 # dinsu instruction position/size checks 154 155 # constraint: 32 <= pos < 64 156 dinsu $4, $5, 31, 1 # error (position) 157 dinsu $4, $5, 32, 1 158 dinsu $4, $5, 63, 1 159 dinsu $4, $5, 64, 1 # error (position) 160 161 # constraint: 1 <= size <= 32 162 dinsu $4, $5, 32, 0 # error (size) 163 dinsu $4, $5, 32, 1 164 dinsu $4, $5, 32, 32 165 dinsu $4, $5, 32, 33 # error (size) 166 167 # constraint: 32 < (pos+size) <= 64 168 dinsu $4, $5, 32, 1 169 dinsu $4, $5, 32, 2 170 dinsu $4, $5, 32, 31 171 dinsu $4, $5, 32, 32 172 dinsu $4, $5, 33, 1 173 dinsu $4, $5, 33, 2 174 dinsu $4, $5, 33, 31 175 dinsu $4, $5, 33, 32 # error (size) 176 dinsu $4, $5, 62, 1 177 dinsu $4, $5, 62, 2 178 dinsu $4, $5, 62, 31 # error (size) 179 dinsu $4, $5, 62, 32 # error (size) 180 dinsu $4, $5, 63, 1 181 dinsu $4, $5, 63, 2 # error (size) 182 dinsu $4, $5, 63, 31 # error (size) 183 dinsu $4, $5, 63, 32 # error (size) 184 185# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ... 186 .space 8 187