1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */ 2 3 #include "test_sve_acle.h" 4 5 /* 6 ** ld1_gather_f64_tied1: 7 ** ld1d z0\.d, p0/z, \[z0\.d\] 8 ** ret 9 */ 10 TEST_LOAD_GATHER_ZS (ld1_gather_f64_tied1, svfloat64_t, svuint64_t, 11 z0_res = svld1_gather_u64base_f64 (p0, z0), 12 z0_res = svld1_gather_f64 (p0, z0)) 13 14 /* 15 ** ld1_gather_f64_untied: 16 ** ld1d z0\.d, p0/z, \[z1\.d\] 17 ** ret 18 */ 19 TEST_LOAD_GATHER_ZS (ld1_gather_f64_untied, svfloat64_t, svuint64_t, 20 z0_res = svld1_gather_u64base_f64 (p0, z1), 21 z0_res = svld1_gather_f64 (p0, z1)) 22 23 /* 24 ** ld1_gather_x0_f64_offset: 25 ** ld1d z0\.d, p0/z, \[x0, z0\.d\] 26 ** ret 27 */ 28 TEST_LOAD_GATHER_ZS (ld1_gather_x0_f64_offset, svfloat64_t, svuint64_t, 29 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, x0), 30 z0_res = svld1_gather_offset_f64 (p0, z0, x0)) 31 32 /* 33 ** ld1_gather_m8_f64_offset: 34 ** mov (x[0-9]+), #?-8 35 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 36 ** ret 37 */ 38 TEST_LOAD_GATHER_ZS (ld1_gather_m8_f64_offset, svfloat64_t, svuint64_t, 39 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, -8), 40 z0_res = svld1_gather_offset_f64 (p0, z0, -8)) 41 42 /* 43 ** ld1_gather_0_f64_offset: 44 ** ld1d z0\.d, p0/z, \[z0\.d\] 45 ** ret 46 */ 47 TEST_LOAD_GATHER_ZS (ld1_gather_0_f64_offset, svfloat64_t, svuint64_t, 48 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 0), 49 z0_res = svld1_gather_offset_f64 (p0, z0, 0)) 50 51 /* 52 ** ld1_gather_9_f64_offset: 53 ** mov (x[0-9]+), #?9 54 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 55 ** ret 56 */ 57 TEST_LOAD_GATHER_ZS (ld1_gather_9_f64_offset, svfloat64_t, svuint64_t, 58 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 9), 59 z0_res = svld1_gather_offset_f64 (p0, z0, 9)) 60 61 /* 62 ** ld1_gather_10_f64_offset: 63 ** mov (x[0-9]+), #?10 64 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 65 ** ret 66 */ 67 TEST_LOAD_GATHER_ZS (ld1_gather_10_f64_offset, svfloat64_t, svuint64_t, 68 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 10), 69 z0_res = svld1_gather_offset_f64 (p0, z0, 10)) 70 71 /* 72 ** ld1_gather_11_f64_offset: 73 ** mov (x[0-9]+), #?11 74 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 75 ** ret 76 */ 77 TEST_LOAD_GATHER_ZS (ld1_gather_11_f64_offset, svfloat64_t, svuint64_t, 78 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 11), 79 z0_res = svld1_gather_offset_f64 (p0, z0, 11)) 80 81 /* 82 ** ld1_gather_12_f64_offset: 83 ** mov (x[0-9]+), #?12 84 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 85 ** ret 86 */ 87 TEST_LOAD_GATHER_ZS (ld1_gather_12_f64_offset, svfloat64_t, svuint64_t, 88 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 12), 89 z0_res = svld1_gather_offset_f64 (p0, z0, 12)) 90 91 /* 92 ** ld1_gather_13_f64_offset: 93 ** mov (x[0-9]+), #?13 94 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 95 ** ret 96 */ 97 TEST_LOAD_GATHER_ZS (ld1_gather_13_f64_offset, svfloat64_t, svuint64_t, 98 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 13), 99 z0_res = svld1_gather_offset_f64 (p0, z0, 13)) 100 101 /* 102 ** ld1_gather_14_f64_offset: 103 ** mov (x[0-9]+), #?14 104 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 105 ** ret 106 */ 107 TEST_LOAD_GATHER_ZS (ld1_gather_14_f64_offset, svfloat64_t, svuint64_t, 108 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 14), 109 z0_res = svld1_gather_offset_f64 (p0, z0, 14)) 110 111 /* 112 ** ld1_gather_15_f64_offset: 113 ** mov (x[0-9]+), #?15 114 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 115 ** ret 116 */ 117 TEST_LOAD_GATHER_ZS (ld1_gather_15_f64_offset, svfloat64_t, svuint64_t, 118 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 15), 119 z0_res = svld1_gather_offset_f64 (p0, z0, 15)) 120 121 /* 122 ** ld1_gather_16_f64_offset: 123 ** ld1d z0\.d, p0/z, \[z0\.d, #16\] 124 ** ret 125 */ 126 TEST_LOAD_GATHER_ZS (ld1_gather_16_f64_offset, svfloat64_t, svuint64_t, 127 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 16), 128 z0_res = svld1_gather_offset_f64 (p0, z0, 16)) 129 130 /* 131 ** ld1_gather_248_f64_offset: 132 ** ld1d z0\.d, p0/z, \[z0\.d, #248\] 133 ** ret 134 */ 135 TEST_LOAD_GATHER_ZS (ld1_gather_248_f64_offset, svfloat64_t, svuint64_t, 136 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 248), 137 z0_res = svld1_gather_offset_f64 (p0, z0, 248)) 138 139 /* 140 ** ld1_gather_256_f64_offset: 141 ** mov (x[0-9]+), #?256 142 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 143 ** ret 144 */ 145 TEST_LOAD_GATHER_ZS (ld1_gather_256_f64_offset, svfloat64_t, svuint64_t, 146 z0_res = svld1_gather_u64base_offset_f64 (p0, z0, 256), 147 z0_res = svld1_gather_offset_f64 (p0, z0, 256)) 148 149 /* 150 ** ld1_gather_x0_f64_index: 151 ** lsl (x[0-9]+), x0, #?3 152 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 153 ** ret 154 */ 155 TEST_LOAD_GATHER_ZS (ld1_gather_x0_f64_index, svfloat64_t, svuint64_t, 156 z0_res = svld1_gather_u64base_index_f64 (p0, z0, x0), 157 z0_res = svld1_gather_index_f64 (p0, z0, x0)) 158 159 /* 160 ** ld1_gather_m1_f64_index: 161 ** mov (x[0-9]+), #?-8 162 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 163 ** ret 164 */ 165 TEST_LOAD_GATHER_ZS (ld1_gather_m1_f64_index, svfloat64_t, svuint64_t, 166 z0_res = svld1_gather_u64base_index_f64 (p0, z0, -1), 167 z0_res = svld1_gather_index_f64 (p0, z0, -1)) 168 169 /* 170 ** ld1_gather_0_f64_index: 171 ** ld1d z0\.d, p0/z, \[z0\.d\] 172 ** ret 173 */ 174 TEST_LOAD_GATHER_ZS (ld1_gather_0_f64_index, svfloat64_t, svuint64_t, 175 z0_res = svld1_gather_u64base_index_f64 (p0, z0, 0), 176 z0_res = svld1_gather_index_f64 (p0, z0, 0)) 177 178 /* 179 ** ld1_gather_5_f64_index: 180 ** ld1d z0\.d, p0/z, \[z0\.d, #40\] 181 ** ret 182 */ 183 TEST_LOAD_GATHER_ZS (ld1_gather_5_f64_index, svfloat64_t, svuint64_t, 184 z0_res = svld1_gather_u64base_index_f64 (p0, z0, 5), 185 z0_res = svld1_gather_index_f64 (p0, z0, 5)) 186 187 /* 188 ** ld1_gather_31_f64_index: 189 ** ld1d z0\.d, p0/z, \[z0\.d, #248\] 190 ** ret 191 */ 192 TEST_LOAD_GATHER_ZS (ld1_gather_31_f64_index, svfloat64_t, svuint64_t, 193 z0_res = svld1_gather_u64base_index_f64 (p0, z0, 31), 194 z0_res = svld1_gather_index_f64 (p0, z0, 31)) 195 196 /* 197 ** ld1_gather_32_f64_index: 198 ** mov (x[0-9]+), #?256 199 ** ld1d z0\.d, p0/z, \[\1, z0\.d\] 200 ** ret 201 */ 202 TEST_LOAD_GATHER_ZS (ld1_gather_32_f64_index, svfloat64_t, svuint64_t, 203 z0_res = svld1_gather_u64base_index_f64 (p0, z0, 32), 204 z0_res = svld1_gather_index_f64 (p0, z0, 32)) 205 206 /* 207 ** ld1_gather_x0_f64_s64offset: 208 ** ld1d z0\.d, p0/z, \[x0, z0\.d\] 209 ** ret 210 */ 211 TEST_LOAD_GATHER_SZ (ld1_gather_x0_f64_s64offset, svfloat64_t, float64_t, svint64_t, 212 z0_res = svld1_gather_s64offset_f64 (p0, x0, z0), 213 z0_res = svld1_gather_offset (p0, x0, z0)) 214 215 /* 216 ** ld1_gather_tied1_f64_s64offset: 217 ** ld1d z0\.d, p0/z, \[x0, z0\.d\] 218 ** ret 219 */ 220 TEST_LOAD_GATHER_SZ (ld1_gather_tied1_f64_s64offset, svfloat64_t, float64_t, svint64_t, 221 z0_res = svld1_gather_s64offset_f64 (p0, x0, z0), 222 z0_res = svld1_gather_offset (p0, x0, z0)) 223 224 /* 225 ** ld1_gather_untied_f64_s64offset: 226 ** ld1d z0\.d, p0/z, \[x0, z1\.d\] 227 ** ret 228 */ 229 TEST_LOAD_GATHER_SZ (ld1_gather_untied_f64_s64offset, svfloat64_t, float64_t, svint64_t, 230 z0_res = svld1_gather_s64offset_f64 (p0, x0, z1), 231 z0_res = svld1_gather_offset (p0, x0, z1)) 232 233 /* 234 ** ld1_gather_ext_f64_s64offset: 235 ** ld1d z0\.d, p0/z, \[x0, z1\.d, sxtw\] 236 ** ret 237 */ 238 TEST_LOAD_GATHER_SZ (ld1_gather_ext_f64_s64offset, svfloat64_t, float64_t, svint64_t, 239 z0_res = svld1_gather_s64offset_f64 (p0, x0, svextw_s64_x (p0, z1)), 240 z0_res = svld1_gather_offset (p0, x0, svextw_x (p0, z1))) 241 242 /* 243 ** ld1_gather_x0_f64_u64offset: 244 ** ld1d z0\.d, p0/z, \[x0, z0\.d\] 245 ** ret 246 */ 247 TEST_LOAD_GATHER_SZ (ld1_gather_x0_f64_u64offset, svfloat64_t, float64_t, svuint64_t, 248 z0_res = svld1_gather_u64offset_f64 (p0, x0, z0), 249 z0_res = svld1_gather_offset (p0, x0, z0)) 250 251 /* 252 ** ld1_gather_tied1_f64_u64offset: 253 ** ld1d z0\.d, p0/z, \[x0, z0\.d\] 254 ** ret 255 */ 256 TEST_LOAD_GATHER_SZ (ld1_gather_tied1_f64_u64offset, svfloat64_t, float64_t, svuint64_t, 257 z0_res = svld1_gather_u64offset_f64 (p0, x0, z0), 258 z0_res = svld1_gather_offset (p0, x0, z0)) 259 260 /* 261 ** ld1_gather_untied_f64_u64offset: 262 ** ld1d z0\.d, p0/z, \[x0, z1\.d\] 263 ** ret 264 */ 265 TEST_LOAD_GATHER_SZ (ld1_gather_untied_f64_u64offset, svfloat64_t, float64_t, svuint64_t, 266 z0_res = svld1_gather_u64offset_f64 (p0, x0, z1), 267 z0_res = svld1_gather_offset (p0, x0, z1)) 268 269 /* 270 ** ld1_gather_ext_f64_u64offset: 271 ** ld1d z0\.d, p0/z, \[x0, z1\.d, uxtw\] 272 ** ret 273 */ 274 TEST_LOAD_GATHER_SZ (ld1_gather_ext_f64_u64offset, svfloat64_t, float64_t, svuint64_t, 275 z0_res = svld1_gather_u64offset_f64 (p0, x0, svextw_u64_x (p0, z1)), 276 z0_res = svld1_gather_offset (p0, x0, svextw_x (p0, z1))) 277 278 /* 279 ** ld1_gather_x0_f64_s64index: 280 ** ld1d z0\.d, p0/z, \[x0, z0\.d, lsl 3\] 281 ** ret 282 */ 283 TEST_LOAD_GATHER_SZ (ld1_gather_x0_f64_s64index, svfloat64_t, float64_t, svint64_t, 284 z0_res = svld1_gather_s64index_f64 (p0, x0, z0), 285 z0_res = svld1_gather_index (p0, x0, z0)) 286 287 /* 288 ** ld1_gather_tied1_f64_s64index: 289 ** ld1d z0\.d, p0/z, \[x0, z0\.d, lsl 3\] 290 ** ret 291 */ 292 TEST_LOAD_GATHER_SZ (ld1_gather_tied1_f64_s64index, svfloat64_t, float64_t, svint64_t, 293 z0_res = svld1_gather_s64index_f64 (p0, x0, z0), 294 z0_res = svld1_gather_index (p0, x0, z0)) 295 296 /* 297 ** ld1_gather_untied_f64_s64index: 298 ** ld1d z0\.d, p0/z, \[x0, z1\.d, lsl 3\] 299 ** ret 300 */ 301 TEST_LOAD_GATHER_SZ (ld1_gather_untied_f64_s64index, svfloat64_t, float64_t, svint64_t, 302 z0_res = svld1_gather_s64index_f64 (p0, x0, z1), 303 z0_res = svld1_gather_index (p0, x0, z1)) 304 305 /* 306 ** ld1_gather_ext_f64_s64index: 307 ** ld1d z0\.d, p0/z, \[x0, z1\.d, sxtw 3\] 308 ** ret 309 */ 310 TEST_LOAD_GATHER_SZ (ld1_gather_ext_f64_s64index, svfloat64_t, float64_t, svint64_t, 311 z0_res = svld1_gather_s64index_f64 (p0, x0, svextw_s64_x (p0, z1)), 312 z0_res = svld1_gather_index (p0, x0, svextw_x (p0, z1))) 313 314 /* 315 ** ld1_gather_x0_f64_u64index: 316 ** ld1d z0\.d, p0/z, \[x0, z0\.d, lsl 3\] 317 ** ret 318 */ 319 TEST_LOAD_GATHER_SZ (ld1_gather_x0_f64_u64index, svfloat64_t, float64_t, svuint64_t, 320 z0_res = svld1_gather_u64index_f64 (p0, x0, z0), 321 z0_res = svld1_gather_index (p0, x0, z0)) 322 323 /* 324 ** ld1_gather_tied1_f64_u64index: 325 ** ld1d z0\.d, p0/z, \[x0, z0\.d, lsl 3\] 326 ** ret 327 */ 328 TEST_LOAD_GATHER_SZ (ld1_gather_tied1_f64_u64index, svfloat64_t, float64_t, svuint64_t, 329 z0_res = svld1_gather_u64index_f64 (p0, x0, z0), 330 z0_res = svld1_gather_index (p0, x0, z0)) 331 332 /* 333 ** ld1_gather_untied_f64_u64index: 334 ** ld1d z0\.d, p0/z, \[x0, z1\.d, lsl 3\] 335 ** ret 336 */ 337 TEST_LOAD_GATHER_SZ (ld1_gather_untied_f64_u64index, svfloat64_t, float64_t, svuint64_t, 338 z0_res = svld1_gather_u64index_f64 (p0, x0, z1), 339 z0_res = svld1_gather_index (p0, x0, z1)) 340 341 /* 342 ** ld1_gather_ext_f64_u64index: 343 ** ld1d z0\.d, p0/z, \[x0, z1\.d, uxtw 3\] 344 ** ret 345 */ 346 TEST_LOAD_GATHER_SZ (ld1_gather_ext_f64_u64index, svfloat64_t, float64_t, svuint64_t, 347 z0_res = svld1_gather_u64index_f64 (p0, x0, svextw_u64_x (p0, z1)), 348 z0_res = svld1_gather_index (p0, x0, svextw_x (p0, z1))) 349