arm64/isel: Avoid signed overflow when handling immediates
[qbe.git] / test / max.ssa
blob27fa8ca3cee9695d766aec8d7998333db2fc20aa
1 # find the maximum value
2 # in a nul-terminated array
3 # of unsigned bytes
5 # the output is stored in $a
7 data $arr = { b 10, b -60, b 10, b 100, b 200, b 0 }
9 export
10 function $test() {
11 @start
12 @loop
13         %max =w phi @start -1, @new %byt, @old %max
14         %loc =l phi @start $arr,  @new %loc1, @old %loc1
15         %byt =w loadub %loc
16         %loc1 =l add 1, %loc
17         jnz %byt, @iter, @end
18 @iter
19         %cmp =w cslew %max, %byt
20         jnz %cmp, @new, @old
21 @new
22         jmp @loop
23 @old
24         jmp @loop
25 @end
26         storew %max, $a
27         ret
30 # >>> driver
31 # extern void test(void);
32 # int a;
33 # int main() { test(); return !(a == 200); }
34 # <<<