/* { dg-require-effective-target int32plus } */ void sample_move_d32u24_sS (char *dst, float *src, unsigned long nsamples, unsigned long dst_skip) { long long y; while (nsamples--) { y = (long long) (*src * 8388608.0f) << 8; if (y > 2147483647) { *(int *) dst = 2147483647; } else if (y < -2147483647 - 1) { *(int *) dst = -2147483647 - 1; } else { *(int *) dst = (int) y; } dst += dst_skip; src++; } }