ma_data.S (15420B)
1 # See LICENSE for license details. 2 3 #***************************************************************************** 4 # ma_data.S 5 #----------------------------------------------------------------------------- 6 # 7 # Test misaligned ld/st data. 8 # Based on rv64mi-ma_addr.S 9 # 10 11 #include "riscv_test.h" 12 #include "test_macros.h" 13 14 RVTEST_RV64U 15 RVTEST_CODE_BEGIN 16 17 la s0, data 18 19 #define SEXT(x, n) ((-((x) >> ((n)-1)) << (n)) | ((x) & ((1 << (n))-1))) 20 21 /* Check that a misaligned load reads the correct value. */ 22 #define MISALIGNED_LOAD_TEST(testnum, insn, base, offset, res) \ 23 li TESTNUM, testnum; \ 24 li t1, res; \ 25 insn t2, offset(base); \ 26 bne t1, t2, fail; \ 27 1: 28 29 # within quadword 30 MISALIGNED_LOAD_TEST(1, lh, s0, 1, SEXT(0x0201, 16)) 31 MISALIGNED_LOAD_TEST(2, lhu, s0, 1, 0x0201) 32 MISALIGNED_LOAD_TEST(3, lw, s0, 1, SEXT(0x04030201, 32)) 33 MISALIGNED_LOAD_TEST(4, lw, s0, 2, SEXT(0x05040302, 32)) 34 MISALIGNED_LOAD_TEST(5, lw, s0, 3, SEXT(0x06050403, 32)) 35 36 #if __riscv_xlen == 64 37 MISALIGNED_LOAD_TEST(6, lwu, s0, 1, 0x04030201) 38 MISALIGNED_LOAD_TEST(7, lwu, s0, 2, 0x05040302) 39 MISALIGNED_LOAD_TEST(8, lwu, s0, 3, 0x06050403) 40 41 MISALIGNED_LOAD_TEST(9, ld, s0, 1, 0x0807060504030201) 42 MISALIGNED_LOAD_TEST(10, ld, s0, 2, 0x0908070605040302) 43 MISALIGNED_LOAD_TEST(11, ld, s0, 3, 0x0a09080706050403) 44 MISALIGNED_LOAD_TEST(12, ld, s0, 4, 0x0b0a090807060504) 45 MISALIGNED_LOAD_TEST(13, ld, s0, 5, 0x0c0b0a0908070605) 46 MISALIGNED_LOAD_TEST(14, ld, s0, 6, 0x0d0c0b0a09080706) 47 MISALIGNED_LOAD_TEST(15, ld, s0, 7, 0x0e0d0c0b0a090807) 48 #endif 49 50 # octword crossing 51 MISALIGNED_LOAD_TEST(16, lh, s0, 31, SEXT(0x201f, 16)) 52 MISALIGNED_LOAD_TEST(17, lhu, s0, 31, 0x201f) 53 MISALIGNED_LOAD_TEST(18, lw, s0, 29, SEXT(0x201f1e1d, 32)) 54 MISALIGNED_LOAD_TEST(19, lw, s0, 30, SEXT(0x21201f1e, 32)) 55 MISALIGNED_LOAD_TEST(20, lw, s0, 31, SEXT(0x2221201f, 32)) 56 57 #if __riscv_xlen == 64 58 MISALIGNED_LOAD_TEST(21, lwu, s0, 29, 0x201f1e1d) 59 MISALIGNED_LOAD_TEST(22, lwu, s0, 30, 0x21201f1e) 60 MISALIGNED_LOAD_TEST(23, lwu, s0, 31, 0x2221201f) 61 62 MISALIGNED_LOAD_TEST(24, ld, s0, 25, 0x201f1e1d1c1b1a19) 63 MISALIGNED_LOAD_TEST(25, ld, s0, 26, 0x21201f1e1d1c1b1a) 64 MISALIGNED_LOAD_TEST(26, ld, s0, 27, 0x2221201f1e1d1c1b) 65 MISALIGNED_LOAD_TEST(27, ld, s0, 28, 0x232221201f1e1d1c) 66 MISALIGNED_LOAD_TEST(28, ld, s0, 29, 0x24232221201f1e1d) 67 MISALIGNED_LOAD_TEST(29, ld, s0, 30, 0x2524232221201f1e) 68 MISALIGNED_LOAD_TEST(30, ld, s0, 31, 0x262524232221201f) 69 #endif 70 71 # cacheline crossing 72 MISALIGNED_LOAD_TEST(31, lh, s0, 63, SEXT(0x403f, 16)) 73 MISALIGNED_LOAD_TEST(32, lhu, s0, 63, 0x403f) 74 MISALIGNED_LOAD_TEST(33, lw, s0, 61, SEXT(0x403f3e3d, 32)) 75 MISALIGNED_LOAD_TEST(34, lw, s0, 62, SEXT(0x41403f3e, 32)) 76 MISALIGNED_LOAD_TEST(35, lw, s0, 63, SEXT(0x4241403f, 32)) 77 78 #if __riscv_xlen == 64 79 MISALIGNED_LOAD_TEST(36, lwu, s0, 61, 0x403f3e3d) 80 MISALIGNED_LOAD_TEST(37, lwu, s0, 62, 0x41403f3e) 81 MISALIGNED_LOAD_TEST(38, lwu, s0, 63, 0x4241403f) 82 83 MISALIGNED_LOAD_TEST(39, ld, s0, 57, 0x403f3e3d3c3b3a39) 84 MISALIGNED_LOAD_TEST(40, ld, s0, 58, 0x41403f3e3d3c3b3a) 85 MISALIGNED_LOAD_TEST(41, ld, s0, 59, 0x4241403f3e3d3c3b) 86 MISALIGNED_LOAD_TEST(42, ld, s0, 60, 0x434241403f3e3d3c) 87 MISALIGNED_LOAD_TEST(43, ld, s0, 61, 0x44434241403f3e3d) 88 MISALIGNED_LOAD_TEST(44, ld, s0, 62, 0x4544434241403f3e) 89 MISALIGNED_LOAD_TEST(45, ld, s0, 63, 0x464544434241403f) 90 #endif 91 92 93 /* Check that a misaligned store writes the correct value. */ 94 #define MISALIGNED_STORE_TEST(testnum, st_insn, ld_insn, base, offset, st_data) \ 95 li TESTNUM, testnum; \ 96 li t1, st_data; \ 97 st_insn t1, offset(base); \ 98 ld_insn t2, offset(base); \ 99 bne t1, t2, fail; \ 100 1: 101 102 # within quadword 103 MISALIGNED_STORE_TEST(46, sh, lh, s0, 1, SEXT(0x8180, 16)) 104 MISALIGNED_STORE_TEST(47, sh, lhu, s0, 1, 0x8382) 105 MISALIGNED_STORE_TEST(48, sw, lw, s0, 1, SEXT(0x87868584, 32)) 106 MISALIGNED_STORE_TEST(49, sw, lw, s0, 2, SEXT(0x8b8a8988, 32)) 107 MISALIGNED_STORE_TEST(50, sw, lw, s0, 3, SEXT(0x8f8e8d8c, 32)) 108 109 #if __riscv_xlen == 64 110 MISALIGNED_STORE_TEST(51, sw, lwu, s0, 1, 0x93929190) 111 MISALIGNED_STORE_TEST(52, sw, lwu, s0, 2, 0x97969594) 112 MISALIGNED_STORE_TEST(53, sw, lwu, s0, 3, 0x9b9a9998) 113 114 MISALIGNED_STORE_TEST(54, sd, ld, s0, 1, 0xa3a2a1a09f9e9d9c) 115 MISALIGNED_STORE_TEST(55, sd, ld, s0, 2, 0xabaaa9a8a7a6a5a4) 116 MISALIGNED_STORE_TEST(56, sd, ld, s0, 3, 0xb3b2b1b0afaeadac) 117 MISALIGNED_STORE_TEST(57, sd, ld, s0, 4, 0xbbbab9b8b7b6b5b4) 118 MISALIGNED_STORE_TEST(58, sd, ld, s0, 5, 0xc3c2c1c0bfbebdbc) 119 MISALIGNED_STORE_TEST(59, sd, ld, s0, 6, 0xcbcac9c8c7c6c5c4) 120 MISALIGNED_STORE_TEST(60, sd, ld, s0, 7, 0xd3d2d1d0cfcecdcc) 121 #endif 122 123 # octword crossing 124 MISALIGNED_STORE_TEST(61, sh, lh, s0, 31, SEXT(0xd5d4, 16)) 125 MISALIGNED_STORE_TEST(62, sh, lhu, s0, 31, 0xd7d6) 126 MISALIGNED_STORE_TEST(63, sw, lw, s0, 29, SEXT(0xdbdad9d8, 32)) 127 MISALIGNED_STORE_TEST(64, sw, lw, s0, 30, SEXT(0xdfdedddc, 32)) 128 MISALIGNED_STORE_TEST(65, sw, lw, s0, 31, SEXT(0xe3e2e1e0, 32)) 129 130 #if __riscv_xlen == 64 131 MISALIGNED_STORE_TEST(66, sw, lwu, s0, 29, 0xe7e6e5e4) 132 MISALIGNED_STORE_TEST(67, sw, lwu, s0, 30, 0xebeae9e8) 133 MISALIGNED_STORE_TEST(68, sw, lwu, s0, 31, 0xefeeedec) 134 135 MISALIGNED_STORE_TEST(69, sd, ld, s0, 25, 0xf7f6f5f4f3f2f1f0) 136 MISALIGNED_STORE_TEST(70, sd, ld, s0, 26, 0xfffefdfcfbfaf9f8) 137 MISALIGNED_STORE_TEST(71, sd, ld, s0, 27, 0x0706050403020100) 138 MISALIGNED_STORE_TEST(72, sd, ld, s0, 28, 0x0f0e0d0c0b0a0908) 139 MISALIGNED_STORE_TEST(73, sd, ld, s0, 29, 0x1716151413121110) 140 MISALIGNED_STORE_TEST(74, sd, ld, s0, 30, 0x1f1e1d1c1b1a1918) 141 MISALIGNED_STORE_TEST(75, sd, ld, s0, 31, 0x2726252423222120) 142 #endif 143 144 # cacheline crossing 145 MISALIGNED_STORE_TEST(76, sh, lh, s0, 63, SEXT(0x3534, 16)) 146 MISALIGNED_STORE_TEST(77, sh, lhu, s0, 63, 0x3736) 147 MISALIGNED_STORE_TEST(78, sw, lw, s0, 61, SEXT(0x3b3a3938, 32)) 148 MISALIGNED_STORE_TEST(79, sw, lw, s0, 62, SEXT(0x3f3e3d3c, 32)) 149 MISALIGNED_STORE_TEST(80, sw, lw, s0, 63, SEXT(0x43424140, 32)) 150 151 #if __riscv_xlen == 64 152 MISALIGNED_STORE_TEST(81, sw, lwu, s0, 61, 0x47464544) 153 MISALIGNED_STORE_TEST(82, sw, lwu, s0, 62, 0x4b4a4948) 154 MISALIGNED_STORE_TEST(83, sw, lwu, s0, 63, 0x4f4e4d4c) 155 156 MISALIGNED_STORE_TEST(84, sd, ld, s0, 57, 0x5756555453525150) 157 MISALIGNED_STORE_TEST(85, sd, ld, s0, 58, 0x5f5e5d5c5b5a5958) 158 MISALIGNED_STORE_TEST(86, sd, ld, s0, 59, 0x6766656463626160) 159 MISALIGNED_STORE_TEST(87, sd, ld, s0, 60, 0x6f6e6d6c6b6a6968) 160 MISALIGNED_STORE_TEST(88, sd, ld, s0, 61, 0x7776757473727170) 161 MISALIGNED_STORE_TEST(89, sd, ld, s0, 62, 0x7f7e7d7c7b7a7978) 162 MISALIGNED_STORE_TEST(90, sd, ld, s0, 63, 0x8786858483828180) 163 #endif 164 165 166 /* Check that a misaligned store writes the correct value, checked by a narrower load. */ 167 #define MISMATCHED_STORE_TEST(testnum, st_insn, ld_insn, base, st_offset, ld_offset, st_data, ld_data) \ 168 li TESTNUM, testnum; \ 169 li t1, st_data; \ 170 li t2, ld_data; \ 171 st_insn t1, st_offset(base); \ 172 ld_insn t3, ld_offset(base); \ 173 bne t2, t3, fail; \ 174 1: 175 176 # within quadword 177 MISMATCHED_STORE_TEST(91, sh, lb, s0, 1, 1, 0x9998, SEXT(0x98, 8)) 178 MISMATCHED_STORE_TEST(92, sh, lb, s0, 1, 2, 0x9b9a, SEXT(0x9b, 8)) 179 MISMATCHED_STORE_TEST(93, sh, lbu, s0, 1, 1, 0x9d9c, 0x9c) 180 MISMATCHED_STORE_TEST(94, sh, lbu, s0, 1, 2, 0x9f9e, 0x9f) 181 MISMATCHED_STORE_TEST(95, sw, lb, s0, 1, 1, 0xa3a2a1a0, SEXT(0xa0, 8)) 182 MISMATCHED_STORE_TEST(96, sw, lbu, s0, 2, 3, 0xa7a6a5a4, 0xa5) 183 MISMATCHED_STORE_TEST(97, sw, lh, s0, 3, 4, 0xabaaa9a8, SEXT(0xaaa9, 16)) 184 MISMATCHED_STORE_TEST(98, sw, lhu, s0, 3, 5, 0xafaeadac, 0xafae) 185 186 #if __riscv_xlen == 64 187 MISMATCHED_STORE_TEST(99, sd, lb, s0, 1, 7, 0xb7b6b5b4b3b2b1b0, SEXT(0xb6, 8)) 188 MISMATCHED_STORE_TEST(100, sd, lbu, s0, 2, 3, 0xbfbebdbcbbbab9b8, 0xb9) 189 MISMATCHED_STORE_TEST(101, sd, lh, s0, 3, 9, 0xc7c6c5c4c3c2c1c0, SEXT(0xc7c6, 16)) 190 MISMATCHED_STORE_TEST(102, sd, lhu, s0, 4, 5, 0xcfcecdcccbcac9c8, 0xcac9) 191 MISMATCHED_STORE_TEST(103, sd, lw, s0, 5, 9, 0xd7d6d5d4d3d2d1d0, SEXT(0xd7d6d5d4, 32)) 192 MISMATCHED_STORE_TEST(104, sd, lw, s0, 6, 8, 0xdfdedddcdbdad9d8, SEXT(0xdddcdbda, 32)) 193 MISMATCHED_STORE_TEST(105, sd, lwu, s0, 7, 8, 0xe7e6e5e4e3e2e1e0, 0xe4e3e2e1) 194 #endif 195 196 # octword crossing 197 MISMATCHED_STORE_TEST(106, sh, lb, s0, 31, 31, 0xe9e8, SEXT(0xe8, 8)) 198 MISMATCHED_STORE_TEST(107, sh, lb, s0, 31, 32, 0xebea, SEXT(0xeb, 8)) 199 MISMATCHED_STORE_TEST(108, sh, lbu, s0, 31, 31, 0xedec, 0xec) 200 MISMATCHED_STORE_TEST(109, sh, lbu, s0, 31, 32, 0xefee, 0xef) 201 MISMATCHED_STORE_TEST(110, sw, lb, s0, 29, 29, 0xf3f2f1f0, SEXT(0xf0, 8)) 202 MISMATCHED_STORE_TEST(111, sw, lbu, s0, 30, 32, 0xf7f6f5f4, 0xf6) 203 MISMATCHED_STORE_TEST(112, sw, lh, s0, 29, 31, 0xfbfaf9f8, SEXT(0xfbfa, 16)) 204 MISMATCHED_STORE_TEST(113, sw, lhu, s0, 31, 31, 0xfffefdfc, 0xfdfc) 205 206 #if __riscv_xlen == 64 207 MISMATCHED_STORE_TEST(114, sd, lb, s0, 25, 32, 0x0706050403020100, SEXT(0x07, 8)) 208 MISMATCHED_STORE_TEST(115, sd, lbu, s0, 26, 33, 0x0f0e0d0c0b0a0908, 0x0f) 209 MISMATCHED_STORE_TEST(116, sd, lh, s0, 27, 31, 0x1716151413121110, SEXT(0x1514, 16)) 210 MISMATCHED_STORE_TEST(117, sd, lhu, s0, 28, 31, 0x1f1e1d1c1b1a1918, 0x1c1b) 211 MISMATCHED_STORE_TEST(118, sd, lw, s0, 29, 29, 0x2726252423222120, SEXT(0x23222120, 32)) 212 MISMATCHED_STORE_TEST(119, sd, lw, s0, 30, 30, 0x2f2e2d2c2b2a2928, SEXT(0x2b2a2928, 32)) 213 MISMATCHED_STORE_TEST(120, sd, lwu, s0, 31, 31, 0x3736353433323130, 0x33323130) 214 #endif 215 216 # cacheline crossing 217 MISMATCHED_STORE_TEST(121, sh, lb, s0, 63, 63, 0x4948, SEXT(0x48, 8)) 218 MISMATCHED_STORE_TEST(122, sh, lb, s0, 63, 64, 0x4b4a, SEXT(0x4b, 8)) 219 MISMATCHED_STORE_TEST(123, sh, lbu, s0, 63, 63, 0x4d4c, 0x4c) 220 MISMATCHED_STORE_TEST(124, sh, lbu, s0, 63, 64, 0x4f4e, 0x4f) 221 MISMATCHED_STORE_TEST(125, sw, lb, s0, 61, 61, 0x53525150, SEXT(0x50, 8)) 222 MISMATCHED_STORE_TEST(126, sw, lbu, s0, 62, 64, 0x57565554, 0x56) 223 MISMATCHED_STORE_TEST(127, sw, lh, s0, 61, 63, 0x5b5a5958, SEXT(0x5b5a, 16)) 224 MISMATCHED_STORE_TEST(128, sw, lhu, s0, 63, 63, 0x5f5e5d5c, 0x5d5c) 225 226 #if __riscv_xlen == 64 227 MISMATCHED_STORE_TEST(129, sd, lb, s0, 57, 64, 0x6766656463626160, SEXT(0x67, 8)) 228 MISMATCHED_STORE_TEST(130, sd, lbu, s0, 58, 65, 0x6f6e6d6c6b6a6968, 0x6f) 229 MISMATCHED_STORE_TEST(131, sd, lh, s0, 59, 63, 0x7776757473727170, SEXT(0x7574, 16)) 230 MISMATCHED_STORE_TEST(132, sd, lhu, s0, 60, 63, 0x7f7e7d7c7b7a7978, 0x7c7b) 231 MISMATCHED_STORE_TEST(133, sd, lw, s0, 61, 61, 0x8786858483828180, SEXT(0x83828180, 32)) 232 MISMATCHED_STORE_TEST(134, sd, lw, s0, 62, 62, 0x8f8e8d8c8b8a8988, SEXT(0x8b8a8988, 32)) 233 MISMATCHED_STORE_TEST(135, sd, lwu, s0, 63, 63, 0x9796959493929190, 0x93929190) 234 #endif 235 236 /* Memory contents at this point should be: 237 .word 0x10080000 238 .word 0x30282018 239 .word 0x34333231 240 .word 0x0f373635 241 .word 0x13121110 242 .word 0x17161514 243 .word 0x10080018 244 .word 0x30282018 245 246 .word 0x34333231 247 .word 0x27373635 248 .word 0x2b2a2928 249 .word 0x2f2e2d2c 250 .word 0x33323130 251 .word 0x37363534 252 .word 0x70686038 253 .word 0x90888078 254 255 .word 0x94939291 256 .word 0x47979695 257 .word 0x4b4a4948 258 .word 0x4f4e4d4c 259 .word 0x53525150 260 .word 0x57565554 261 .word 0x5b5a5958 262 .word 0x5f5e5d5c 263 .word 0x63626160 264 .word 0x67666564 265 .word 0x6b6a6968 266 .word 0x6f6e6d6c 267 .word 0x73727170 268 .word 0x77767574 269 .word 0x7b7a7978 270 .word 0x7f7e7d7c 271 */ 272 273 /* Check that a misaligned store writes the correct value, checked by a wider load. */ 274 275 #if __riscv_xlen == 64 276 # within quadword 277 MISMATCHED_STORE_TEST(136, sb, lh, s0, 1, 1, 0x98, SEXT(0xb898, 16)) 278 MISMATCHED_STORE_TEST(137, sb, lhu, s0, 2, 1, 0x99, 0x9998) 279 MISMATCHED_STORE_TEST(138, sh, lw, s0, 1, 1, 0x9b9a, SEXT(0xc8c09b9a, 32)) 280 MISMATCHED_STORE_TEST(139, sh, lw, s0, 3, 2, 0x9d9c, SEXT(0xd09d9c9b, 32)) 281 MISMATCHED_STORE_TEST(140, sh, lw, s0, 5, 3, 0x9f9e, SEXT(0x9f9e9d9c, 32)) 282 283 MISMATCHED_STORE_TEST(141, sb, lwu, s0, 2, 1, 0xa0, 0x9d9ca09a) 284 MISMATCHED_STORE_TEST(142, sh, lwu, s0, 3, 2, 0xa2a1, 0x9ea2a1a0) 285 MISMATCHED_STORE_TEST(143, sh, lwu, s0, 5, 3, 0xa4a3, 0xa4a3a2a1) 286 287 MISMATCHED_STORE_TEST(144, sb, ld, s0, 2, 1, 0xa5, 0xe1e0a4a3a2a1a59a) 288 MISMATCHED_STORE_TEST(145, sh, ld, s0, 7, 2, 0xa7a6, 0xe2a7a6a4a3a2a1a5) 289 MISMATCHED_STORE_TEST(146, sh, ld, s0, 9, 3, 0xa9a8, 0xa9a8a7a6a4a3a2a1) 290 MISMATCHED_STORE_TEST(147, sw, ld, s0, 5, 4, 0xadacabaa, 0xe4a9a8adacabaaa2) 291 MISMATCHED_STORE_TEST(148, sw, ld, s0, 7, 5, 0xb1b0afae, 0xe5e4b1b0afaeabaa) 292 MISMATCHED_STORE_TEST(149, sw, ld, s0, 9, 6, 0xb5b4b3b2, 0xe6b5b4b3b2afaeab) 293 MISMATCHED_STORE_TEST(150, sw, ld, s0, 11, 7, 0xb9b8b7b6, 0xb9b8b7b6b3b2afae) 294 295 # octword crossing 296 MISMATCHED_STORE_TEST(151, sb, lh, s0, 31, 31, 0xba, SEXT(0x31ba, 16)) 297 MISMATCHED_STORE_TEST(152, sb, lhu, s0, 32, 31, 0xbb, 0xbbba) 298 MISMATCHED_STORE_TEST(153, sh, lw, s0, 30, 30, 0xbdbc, SEXT(0x32bbbdbc, 32)) 299 MISMATCHED_STORE_TEST(154, sh, lw, s0, 31, 30, 0xbfbe, SEXT(0x32bfbebc, 32)) 300 MISMATCHED_STORE_TEST(155, sh, lw, s0, 32, 30, 0xc1c0, SEXT(0xc1c0bebc, 32)) 301 302 MISMATCHED_STORE_TEST(156, sb, lwu, s0, 32, 31, 0xc2, 0x33c1c2be) 303 MISMATCHED_STORE_TEST(157, sh, lwu, s0, 31, 29, 0xc4c3, 0xc4c3bc20) 304 MISMATCHED_STORE_TEST(158, sh, lwu, s0, 32, 30, 0xc6c5, 0xc6c5c3bc) 305 306 MISMATCHED_STORE_TEST(159, sb, ld, s0, 32, 25, 0xc7, 0xc7c3bc2018100800) 307 MISMATCHED_STORE_TEST(160, sh, ld, s0, 31, 26, 0xc9c8, 0xc6c9c8bc20181008) 308 MISMATCHED_STORE_TEST(161, sh, ld, s0, 31, 27, 0xcbca, 0x33c6cbcabc201810) 309 MISMATCHED_STORE_TEST(162, sw, ld, s0, 32, 28, 0xcfcecdcc, 0xcfcecdcccabc2018) 310 MISMATCHED_STORE_TEST(163, sw, ld, s0, 31, 29, 0xd3d2d1d0, 0x35cfd3d2d1d0bc20) 311 MISMATCHED_STORE_TEST(164, sw, ld, s0, 30, 30, 0xd7d6d5d4, 0x3635cfd3d7d6d5d4) 312 MISMATCHED_STORE_TEST(165, sw, ld, s0, 29, 31, 0xdbdad9d8, 0x373635cfd3d7dbda) 313 314 # cacheline crossing 315 MISMATCHED_STORE_TEST(166, sb, lh, s0, 63, 63, 0xdc, SEXT(0x91dc, 16)) 316 MISMATCHED_STORE_TEST(167, sb, lhu, s0, 64, 63, 0xdd, 0xdddc) 317 MISMATCHED_STORE_TEST(168, sh, lw, s0, 62, 62, 0xdfde, SEXT(0x92dddfde, 32)) 318 MISMATCHED_STORE_TEST(169, sh, lw, s0, 63, 62, 0xe1e0, SEXT(0x92e1e0de, 32)) 319 MISMATCHED_STORE_TEST(170, sh, lw, s0, 64, 62, 0xe3e2, SEXT(0xe3e2e0de, 32)) 320 321 MISMATCHED_STORE_TEST(171, sb, lwu, s0, 64, 63, 0xe4, 0x93e3e4e0) 322 MISMATCHED_STORE_TEST(172, sh, lwu, s0, 63, 61, 0xe6e5, 0xe6e5de80) 323 MISMATCHED_STORE_TEST(173, sh, lwu, s0, 64, 62, 0xe8e7, 0xe8e7e5de) 324 325 MISMATCHED_STORE_TEST(174, sb, ld, s0, 64, 57, 0xe9, 0xe9e5de8078706860) 326 MISMATCHED_STORE_TEST(175, sh, ld, s0, 63, 58, 0xebea, 0xe8ebeade80787068) 327 MISMATCHED_STORE_TEST(176, sh, ld, s0, 63, 59, 0xedec, 0x93e8edecde807870) 328 MISMATCHED_STORE_TEST(177, sw, ld, s0, 64, 60, 0xf1f0efee, 0xf1f0efeeecde8078) 329 MISMATCHED_STORE_TEST(178, sw, ld, s0, 63, 61, 0xf5f4f3f2, 0x95f1f5f4f3f2de80) 330 MISMATCHED_STORE_TEST(179, sw, ld, s0, 62, 62, 0xf9f8f7f6, 0x9695f1f5f9f8f7f6) 331 MISMATCHED_STORE_TEST(180, sw, ld, s0, 61, 63, 0xfdfcfbfa, 0x979695f1f5f9fdfc) 332 #endif 333 334 TEST_PASSFAIL 335 336 RVTEST_CODE_END 337 338 .data 339 RVTEST_DATA_BEGIN 340 341 data: 342 .align 3 343 344 .word 0x03020100 345 .word 0x07060504 346 .word 0x0b0a0908 347 .word 0x0f0e0d0c 348 .word 0x13121110 349 .word 0x17161514 350 .word 0x1b1a1918 351 .word 0x1f1e1d1c 352 .word 0x23222120 353 .word 0x27262524 354 .word 0x2b2a2928 355 .word 0x2f2e2d2c 356 .word 0x33323130 357 .word 0x37363534 358 .word 0x3b3a3938 359 .word 0x3f3e3d3c 360 361 .word 0x43424140 362 .word 0x47464544 363 .word 0x4b4a4948 364 .word 0x4f4e4d4c 365 .word 0x53525150 366 .word 0x57565554 367 .word 0x5b5a5958 368 .word 0x5f5e5d5c 369 .word 0x63626160 370 .word 0x67666564 371 .word 0x6b6a6968 372 .word 0x6f6e6d6c 373 .word 0x73727170 374 .word 0x77767574 375 .word 0x7b7a7978 376 .word 0x7f7e7d7c 377 378 .fill 0xff, 1, 80 379 380 381 TEST_DATA 382 383 RVTEST_DATA_END