/* { dg-do compile } */ /* { dg-options "-O2" } */ /* { dg-final { scan-assembler-not "\[us\]xtw\t" } } */ /* { dg-final { scan-assembler-not "\[us\]bfiz\t" } } */ /* { dg-final { scan-assembler-not "lsl\t" } } */ int load_scaled_sxtw (int *arr, int i) { return arr[arr[i]]; } unsigned int load_scaled_uxtw (unsigned int *arr, unsigned int i) { return arr[arr[i]]; } void store_scaled_sxtw (int *arr, int i) { arr[arr[i]] = 0; } void store_scaled_uxtw (unsigned int *arr, unsigned int i) { arr[arr[i]] = 0; } int load_unscaled_sxtw (signed char *arr, int i) { return arr[arr[i]]; } unsigned int load_unscaled_uxtw (unsigned char *arr, unsigned int i) { return arr[arr[i]]; } void store_unscaled_sxtw (signed char *arr, int i) { arr[arr[i]] = 0; } void store_unscaled_uxtw (unsigned char *arr, unsigned int i) { arr[arr[i]] = 0; } int load_scaled_tmp_sxtw (int *arr, int i) { int j = arr[i]; return arr[j]; } unsigned int load_scaled_tmp_uxtw (unsigned int *arr, unsigned int i) { unsigned int j = arr[i]; return arr[j]; } void store_scaled_tmp_sxtw (int *arr, int i) { int j = arr[i]; arr[j] = 0; } void store_scaled_tmp_uxtw (unsigned int *arr, unsigned int i) { unsigned int j = arr[i]; arr[j] = 0; } int load_unscaled_tmp_sxtw (signed char *arr, int i) { signed char j = arr[i]; return arr[j]; } unsigned int load_unscaled_tmp_uxtw (unsigned char *arr, unsigned int i) { unsigned char j = arr[i]; return arr[j]; } void store_unscaled_tmp_sxtw (signed char *arr, int i) { signed char j = arr[i]; arr[j] = 0; } void store_unscaled_tmp_uxtw (unsigned char *arr, unsigned int i) { unsigned char j = arr[i]; arr[j] = 0; }