1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3 /* { dg-final { scan-assembler-not "\[us\]xtw\t" } } */
4 /* { dg-final { scan-assembler-not "\[us\]bfiz\t" } } */
5 /* { dg-final { scan-assembler-not "lsl\t" } } */
6
7 int
8 load_scaled_sxtw (int *arr, int i)
9 {
10 return arr[arr[i]];
11 }
12
13 unsigned int
14 load_scaled_uxtw (unsigned int *arr, unsigned int i)
15 {
16 return arr[arr[i]];
17 }
18
19 void
20 store_scaled_sxtw (int *arr, int i)
21 {
22 arr[arr[i]] = 0;
23 }
24
25 void
26 store_scaled_uxtw (unsigned int *arr, unsigned int i)
27 {
28 arr[arr[i]] = 0;
29 }
30
31 int
32 load_unscaled_sxtw (signed char *arr, int i)
33 {
34 return arr[arr[i]];
35 }
36
37 unsigned int
38 load_unscaled_uxtw (unsigned char *arr, unsigned int i)
39 {
40 return arr[arr[i]];
41 }
42
43 void
44 store_unscaled_sxtw (signed char *arr, int i)
45 {
46 arr[arr[i]] = 0;
47 }
48
49 void
50 store_unscaled_uxtw (unsigned char *arr, unsigned int i)
51 {
52 arr[arr[i]] = 0;
53 }
54
55
56
57 int
58 load_scaled_tmp_sxtw (int *arr, int i)
59 {
60 int j = arr[i];
61 return arr[j];
62 }
63
64 unsigned int
65 load_scaled_tmp_uxtw (unsigned int *arr, unsigned int i)
66 {
67 unsigned int j = arr[i];
68 return arr[j];
69 }
70
71 void
72 store_scaled_tmp_sxtw (int *arr, int i)
73 {
74 int j = arr[i];
75 arr[j] = 0;
76 }
77
78 void
79 store_scaled_tmp_uxtw (unsigned int *arr, unsigned int i)
80 {
81 unsigned int j = arr[i];
82 arr[j] = 0;
83 }
84
85 int
86 load_unscaled_tmp_sxtw (signed char *arr, int i)
87 {
88 signed char j = arr[i];
89 return arr[j];
90 }
91
92 unsigned int
93 load_unscaled_tmp_uxtw (unsigned char *arr, unsigned int i)
94 {
95 unsigned char j = arr[i];
96 return arr[j];
97 }
98
99 void
100 store_unscaled_tmp_sxtw (signed char *arr, int i)
101 {
102 signed char j = arr[i];
103 arr[j] = 0;
104 }
105
106 void
107 store_unscaled_tmp_uxtw (unsigned char *arr, unsigned int i)
108 {
109 unsigned char j = arr[i];
110 arr[j] = 0;
111 }