handle large hfas correctly on arm64
[qbe.git] / test / isel4.ssa
blob874807ee08d77cd2123adddf0d8ca5ccf45e049e
1 # amd64 address-folding stress
3 export function w $f0(l %a, l %b) {
4 @start
5         %c =l add %b, 2
6         %d =l mul %c, 4
7         %e =l add %a, %d
8         %q =l loadw %e
9         ret %q
12 export function w $f1(l %a, l %b) {
13 @start
14         %c =l add 1, %b
15         %f =l add %c, 1
16         %d =l mul %f, 4
17         %e =l add %d, %a
18         %q =l loadw %e
19         ret %q
22 export function w $f2(l %a, l %b) {
23 @start
24         %l =l mul %b, 4
25         %d =l add 8, %l
26         %e =l add %a, %d
27         %q =l loadw %e
28         ret %q
31 # fixme: folding is not good here
32 export function w $f3(l %a, l %b) {
33 @start
34         %l =l mul %b, 4
35         %d =l add 4, %l
36         %f =l add 4, %d
37         %e =l add %a, %f
38         %q =l loadw %e
39         ret %q
42 export function w $f4(l %a, l %b) {
43 @start
44         %c =l add 1, %b
45         %d =l mul %c, 4
46         %e =l add 4, %d
47         %f =l add %e, %a
48         %q =l loadw %f
49         ret %q
52 # >>> driver
53 # int a[] = {1, 2, 3, 4};
54 # typedef int loadf(int *, long long);
55 # extern loadf f0, f1, f2, f3, f4;
56 # loadf *fns[] = {&f0, &f1, &f2, &f3, &f4, 0};
57 # int main() {
58 #       loadf **f;
59 #       int n;
60 #       for (n=1,f=fns; *f; f++,n++)
61 #               if ((*f)(a, 1) != 4) return n;
62 #       return 0;
63 # }
64 # <<<