| 400 | } |
| 401 | inline void helper_float_7_recursive(float *buf, int depth); |
| 402 | inline void helper_float_7_recursive(float *buf, int depth) { |
| 403 | if (depth == 7) { |
| 404 | for (int j = 0; j < 128; j += 64) { |
| 405 | for (int k = 0; k < 8; k += 8) { |
| 406 | __asm__ volatile ( |
| 407 | "vmovups (%0), %%ymm0\n" |
| 408 | "vmovups (%1), %%ymm1\n" |
| 409 | "vmovups (%2), %%ymm2\n" |
| 410 | "vmovups (%3), %%ymm3\n" |
| 411 | "vmovups (%4), %%ymm4\n" |
| 412 | "vmovups (%5), %%ymm5\n" |
| 413 | "vmovups (%6), %%ymm6\n" |
| 414 | "vmovups (%7), %%ymm7\n" |
| 415 | "vpermilps $160, %%ymm0, %%ymm8\n" |
| 416 | "vpermilps $245, %%ymm0, %%ymm9\n" |
| 417 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 418 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 419 | "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" |
| 420 | "vpermilps $160, %%ymm1, %%ymm8\n" |
| 421 | "vpermilps $245, %%ymm1, %%ymm9\n" |
| 422 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 423 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 424 | "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" |
| 425 | "vpermilps $160, %%ymm2, %%ymm8\n" |
| 426 | "vpermilps $245, %%ymm2, %%ymm9\n" |
| 427 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 428 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 429 | "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" |
| 430 | "vpermilps $160, %%ymm3, %%ymm8\n" |
| 431 | "vpermilps $245, %%ymm3, %%ymm9\n" |
| 432 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 433 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 434 | "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" |
| 435 | "vpermilps $160, %%ymm4, %%ymm8\n" |
| 436 | "vpermilps $245, %%ymm4, %%ymm9\n" |
| 437 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 438 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 439 | "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" |
| 440 | "vpermilps $160, %%ymm5, %%ymm8\n" |
| 441 | "vpermilps $245, %%ymm5, %%ymm9\n" |
| 442 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 443 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 444 | "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" |
| 445 | "vpermilps $160, %%ymm6, %%ymm8\n" |
| 446 | "vpermilps $245, %%ymm6, %%ymm9\n" |
| 447 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 448 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 449 | "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" |
| 450 | "vpermilps $160, %%ymm7, %%ymm8\n" |
| 451 | "vpermilps $245, %%ymm7, %%ymm9\n" |
| 452 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 453 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 454 | "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" |
| 455 | "vpermilps $68, %%ymm0, %%ymm8\n" |
| 456 | "vpermilps $238, %%ymm0, %%ymm9\n" |
| 457 | "vxorps %%ymm10, %%ymm10, %%ymm10\n" |
| 458 | "vsubps %%ymm9, %%ymm10, %%ymm11\n" |
| 459 | "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" |