1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */ 2 3 #include "test_sve_acle.h" 4 5 /* 6 ** ldff1uw_gather_u64_tied1: 7 ** ldff1w z0\.d, p0/z, \[z0\.d\] 8 ** ret 9 */ 10 TEST_LOAD_GATHER_ZS (ldff1uw_gather_u64_tied1, svuint64_t, svuint64_t, 11 z0_res = svldff1uw_gather_u64base_u64 (p0, z0), 12 z0_res = svldff1uw_gather_u64 (p0, z0)) 13 14 /* 15 ** ldff1uw_gather_u64_untied: 16 ** ldff1w z0\.d, p0/z, \[z1\.d\] 17 ** ret 18 */ 19 TEST_LOAD_GATHER_ZS (ldff1uw_gather_u64_untied, svuint64_t, svuint64_t, 20 z0_res = svldff1uw_gather_u64base_u64 (p0, z1), 21 z0_res = svldff1uw_gather_u64 (p0, z1)) 22 23 /* 24 ** ldff1uw_gather_x0_u64_offset: 25 ** ldff1w z0\.d, p0/z, \[x0, z0\.d\] 26 ** ret 27 */ 28 TEST_LOAD_GATHER_ZS (ldff1uw_gather_x0_u64_offset, svuint64_t, svuint64_t, 29 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, x0), 30 z0_res = svldff1uw_gather_offset_u64 (p0, z0, x0)) 31 32 /* 33 ** ldff1uw_gather_m4_u64_offset: 34 ** mov (x[0-9]+), #?-4 35 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 36 ** ret 37 */ 38 TEST_LOAD_GATHER_ZS (ldff1uw_gather_m4_u64_offset, svuint64_t, svuint64_t, 39 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, -4), 40 z0_res = svldff1uw_gather_offset_u64 (p0, z0, -4)) 41 42 /* 43 ** ldff1uw_gather_0_u64_offset: 44 ** ldff1w z0\.d, p0/z, \[z0\.d\] 45 ** ret 46 */ 47 TEST_LOAD_GATHER_ZS (ldff1uw_gather_0_u64_offset, svuint64_t, svuint64_t, 48 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 0), 49 z0_res = svldff1uw_gather_offset_u64 (p0, z0, 0)) 50 51 /* 52 ** ldff1uw_gather_5_u64_offset: 53 ** mov (x[0-9]+), #?5 54 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 55 ** ret 56 */ 57 TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_u64_offset, svuint64_t, svuint64_t, 58 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 5), 59 z0_res = svldff1uw_gather_offset_u64 (p0, z0, 5)) 60 61 /* 62 ** ldff1uw_gather_6_u64_offset: 63 ** mov (x[0-9]+), #?6 64 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 65 ** ret 66 */ 67 TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_u64_offset, svuint64_t, svuint64_t, 68 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 6), 69 z0_res = svldff1uw_gather_offset_u64 (p0, z0, 6)) 70 71 /* 72 ** ldff1uw_gather_7_u64_offset: 73 ** mov (x[0-9]+), #?7 74 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 75 ** ret 76 */ 77 TEST_LOAD_GATHER_ZS (ldff1uw_gather_7_u64_offset, svuint64_t, svuint64_t, 78 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 7), 79 z0_res = svldff1uw_gather_offset_u64 (p0, z0, 7)) 80 81 /* 82 ** ldff1uw_gather_8_u64_offset: 83 ** ldff1w z0\.d, p0/z, \[z0\.d, #8\] 84 ** ret 85 */ 86 TEST_LOAD_GATHER_ZS (ldff1uw_gather_8_u64_offset, svuint64_t, svuint64_t, 87 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 8), 88 z0_res = svldff1uw_gather_offset_u64 (p0, z0, 8)) 89 90 /* 91 ** ldff1uw_gather_124_u64_offset: 92 ** ldff1w z0\.d, p0/z, \[z0\.d, #124\] 93 ** ret 94 */ 95 TEST_LOAD_GATHER_ZS (ldff1uw_gather_124_u64_offset, svuint64_t, svuint64_t, 96 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 124), 97 z0_res = svldff1uw_gather_offset_u64 (p0, z0, 124)) 98 99 /* 100 ** ldff1uw_gather_128_u64_offset: 101 ** mov (x[0-9]+), #?128 102 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 103 ** ret 104 */ 105 TEST_LOAD_GATHER_ZS (ldff1uw_gather_128_u64_offset, svuint64_t, svuint64_t, 106 z0_res = svldff1uw_gather_u64base_offset_u64 (p0, z0, 128), 107 z0_res = svldff1uw_gather_offset_u64 (p0, z0, 128)) 108 109 /* 110 ** ldff1uw_gather_x0_u64_index: 111 ** lsl (x[0-9]+), x0, #?2 112 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 113 ** ret 114 */ 115 TEST_LOAD_GATHER_ZS (ldff1uw_gather_x0_u64_index, svuint64_t, svuint64_t, 116 z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, x0), 117 z0_res = svldff1uw_gather_index_u64 (p0, z0, x0)) 118 119 /* 120 ** ldff1uw_gather_m1_u64_index: 121 ** mov (x[0-9]+), #?-4 122 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 123 ** ret 124 */ 125 TEST_LOAD_GATHER_ZS (ldff1uw_gather_m1_u64_index, svuint64_t, svuint64_t, 126 z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, -1), 127 z0_res = svldff1uw_gather_index_u64 (p0, z0, -1)) 128 129 /* 130 ** ldff1uw_gather_0_u64_index: 131 ** ldff1w z0\.d, p0/z, \[z0\.d\] 132 ** ret 133 */ 134 TEST_LOAD_GATHER_ZS (ldff1uw_gather_0_u64_index, svuint64_t, svuint64_t, 135 z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 0), 136 z0_res = svldff1uw_gather_index_u64 (p0, z0, 0)) 137 138 /* 139 ** ldff1uw_gather_5_u64_index: 140 ** ldff1w z0\.d, p0/z, \[z0\.d, #20\] 141 ** ret 142 */ 143 TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_u64_index, svuint64_t, svuint64_t, 144 z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 5), 145 z0_res = svldff1uw_gather_index_u64 (p0, z0, 5)) 146 147 /* 148 ** ldff1uw_gather_31_u64_index: 149 ** ldff1w z0\.d, p0/z, \[z0\.d, #124\] 150 ** ret 151 */ 152 TEST_LOAD_GATHER_ZS (ldff1uw_gather_31_u64_index, svuint64_t, svuint64_t, 153 z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 31), 154 z0_res = svldff1uw_gather_index_u64 (p0, z0, 31)) 155 156 /* 157 ** ldff1uw_gather_32_u64_index: 158 ** mov (x[0-9]+), #?128 159 ** ldff1w z0\.d, p0/z, \[\1, z0\.d\] 160 ** ret 161 */ 162 TEST_LOAD_GATHER_ZS (ldff1uw_gather_32_u64_index, svuint64_t, svuint64_t, 163 z0_res = svldff1uw_gather_u64base_index_u64 (p0, z0, 32), 164 z0_res = svldff1uw_gather_index_u64 (p0, z0, 32)) 165 166 /* 167 ** ldff1uw_gather_x0_u64_s64offset: 168 ** ldff1w z0\.d, p0/z, \[x0, z0\.d\] 169 ** ret 170 */ 171 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_s64offset, svuint64_t, uint32_t, svint64_t, 172 z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, z0), 173 z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0)) 174 175 /* 176 ** ldff1uw_gather_tied1_u64_s64offset: 177 ** ldff1w z0\.d, p0/z, \[x0, z0\.d\] 178 ** ret 179 */ 180 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_s64offset, svuint64_t, uint32_t, svint64_t, 181 z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, z0), 182 z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0)) 183 184 /* 185 ** ldff1uw_gather_untied_u64_s64offset: 186 ** ldff1w z0\.d, p0/z, \[x0, z1\.d\] 187 ** ret 188 */ 189 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_s64offset, svuint64_t, uint32_t, svint64_t, 190 z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, z1), 191 z0_res = svldff1uw_gather_offset_u64 (p0, x0, z1)) 192 193 /* 194 ** ldff1uw_gather_ext_u64_s64offset: 195 ** ldff1w z0\.d, p0/z, \[x0, z1\.d, sxtw\] 196 ** ret 197 */ 198 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_s64offset, svuint64_t, uint32_t, svint64_t, 199 z0_res = svldff1uw_gather_s64offset_u64 (p0, x0, svextw_s64_x (p0, z1)), 200 z0_res = svldff1uw_gather_offset_u64 (p0, x0, svextw_x (p0, z1))) 201 202 /* 203 ** ldff1uw_gather_x0_u64_u64offset: 204 ** ldff1w z0\.d, p0/z, \[x0, z0\.d\] 205 ** ret 206 */ 207 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_u64offset, svuint64_t, uint32_t, svuint64_t, 208 z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, z0), 209 z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0)) 210 211 /* 212 ** ldff1uw_gather_tied1_u64_u64offset: 213 ** ldff1w z0\.d, p0/z, \[x0, z0\.d\] 214 ** ret 215 */ 216 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_u64offset, svuint64_t, uint32_t, svuint64_t, 217 z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, z0), 218 z0_res = svldff1uw_gather_offset_u64 (p0, x0, z0)) 219 220 /* 221 ** ldff1uw_gather_untied_u64_u64offset: 222 ** ldff1w z0\.d, p0/z, \[x0, z1\.d\] 223 ** ret 224 */ 225 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_u64offset, svuint64_t, uint32_t, svuint64_t, 226 z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, z1), 227 z0_res = svldff1uw_gather_offset_u64 (p0, x0, z1)) 228 229 /* 230 ** ldff1uw_gather_ext_u64_u64offset: 231 ** ldff1w z0\.d, p0/z, \[x0, z1\.d, uxtw\] 232 ** ret 233 */ 234 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_u64offset, svuint64_t, uint32_t, svuint64_t, 235 z0_res = svldff1uw_gather_u64offset_u64 (p0, x0, svextw_u64_x (p0, z1)), 236 z0_res = svldff1uw_gather_offset_u64 (p0, x0, svextw_x (p0, z1))) 237 238 /* 239 ** ldff1uw_gather_x0_u64_s64index: 240 ** ldff1w z0\.d, p0/z, \[x0, z0\.d, lsl 2\] 241 ** ret 242 */ 243 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_s64index, svuint64_t, uint32_t, svint64_t, 244 z0_res = svldff1uw_gather_s64index_u64 (p0, x0, z0), 245 z0_res = svldff1uw_gather_index_u64 (p0, x0, z0)) 246 247 /* 248 ** ldff1uw_gather_tied1_u64_s64index: 249 ** ldff1w z0\.d, p0/z, \[x0, z0\.d, lsl 2\] 250 ** ret 251 */ 252 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_s64index, svuint64_t, uint32_t, svint64_t, 253 z0_res = svldff1uw_gather_s64index_u64 (p0, x0, z0), 254 z0_res = svldff1uw_gather_index_u64 (p0, x0, z0)) 255 256 /* 257 ** ldff1uw_gather_untied_u64_s64index: 258 ** ldff1w z0\.d, p0/z, \[x0, z1\.d, lsl 2\] 259 ** ret 260 */ 261 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_s64index, svuint64_t, uint32_t, svint64_t, 262 z0_res = svldff1uw_gather_s64index_u64 (p0, x0, z1), 263 z0_res = svldff1uw_gather_index_u64 (p0, x0, z1)) 264 265 /* 266 ** ldff1uw_gather_ext_u64_s64index: 267 ** ldff1w z0\.d, p0/z, \[x0, z1\.d, sxtw 2\] 268 ** ret 269 */ 270 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_s64index, svuint64_t, uint32_t, svint64_t, 271 z0_res = svldff1uw_gather_s64index_u64 (p0, x0, svextw_s64_x (p0, z1)), 272 z0_res = svldff1uw_gather_index_u64 (p0, x0, svextw_x (p0, z1))) 273 274 /* 275 ** ldff1uw_gather_x0_u64_u64index: 276 ** ldff1w z0\.d, p0/z, \[x0, z0\.d, lsl 2\] 277 ** ret 278 */ 279 TEST_LOAD_GATHER_SZ (ldff1uw_gather_x0_u64_u64index, svuint64_t, uint32_t, svuint64_t, 280 z0_res = svldff1uw_gather_u64index_u64 (p0, x0, z0), 281 z0_res = svldff1uw_gather_index_u64 (p0, x0, z0)) 282 283 /* 284 ** ldff1uw_gather_tied1_u64_u64index: 285 ** ldff1w z0\.d, p0/z, \[x0, z0\.d, lsl 2\] 286 ** ret 287 */ 288 TEST_LOAD_GATHER_SZ (ldff1uw_gather_tied1_u64_u64index, svuint64_t, uint32_t, svuint64_t, 289 z0_res = svldff1uw_gather_u64index_u64 (p0, x0, z0), 290 z0_res = svldff1uw_gather_index_u64 (p0, x0, z0)) 291 292 /* 293 ** ldff1uw_gather_untied_u64_u64index: 294 ** ldff1w z0\.d, p0/z, \[x0, z1\.d, lsl 2\] 295 ** ret 296 */ 297 TEST_LOAD_GATHER_SZ (ldff1uw_gather_untied_u64_u64index, svuint64_t, uint32_t, svuint64_t, 298 z0_res = svldff1uw_gather_u64index_u64 (p0, x0, z1), 299 z0_res = svldff1uw_gather_index_u64 (p0, x0, z1)) 300 301 /* 302 ** ldff1uw_gather_ext_u64_u64index: 303 ** ldff1w z0\.d, p0/z, \[x0, z1\.d, uxtw 2\] 304 ** ret 305 */ 306 TEST_LOAD_GATHER_SZ (ldff1uw_gather_ext_u64_u64index, svuint64_t, uint32_t, svuint64_t, 307 z0_res = svldff1uw_gather_u64index_u64 (p0, x0, svextw_u64_x (p0, z1)), 308 z0_res = svldff1uw_gather_index_u64 (p0, x0, svextw_x (p0, z1))) 309