| module &__llvm_hsail_module:1:0:$full:$large:$near; |
| |
| /* Regression test for a private array access case which used to assert. */ |
| |
| /* { dg-do compile } */ |
| /* { dg-options "-fdump-tree-gimple" } */ |
| |
| decl prog function &vec_sum()( |
| arg_u32 %a, |
| arg_u32 %b, |
| arg_u32 %res, |
| arg_u32 %N); |
| |
| prog function &vec_sum()( |
| arg_u32 %a, |
| arg_u32 %b, |
| arg_u32 %res, |
| arg_u32 %N) |
| { |
| |
| ld_arg_align(4)_u32 $s0, [%N]; |
| ld_arg_align(4)_u32 $s1, [%res]; |
| ld_arg_align(4)_u32 $s2, [%b]; |
| ld_arg_align(4)_u32 $s3, [%a]; |
| cmp_le_b1_s32 $c0, $s0, 0; |
| cbr_b1 $c0, @BB0_2; |
| @BB0_1: |
| ld_private_align(4)_u32 $s4, [$s3]; |
| ld_private_align(4)_u32 $s5, [$s2]; |
| add_u32 $s4, $s5, $s4; |
| st_private_align(4)_u32 $s4, [$s1]; |
| add_u32 $s1, $s1, 4; |
| add_u32 $s2, $s2, 4; |
| add_u32 $s3, $s3, 4; |
| add_u32 $s0, $s0, 4294967295; |
| cmp_ne_b1_s32 $c0, $s0, 0; |
| cbr_b1 $c0, @BB0_1; |
| @BB0_2: |
| ret; |
| }; |
| |
| prog kernel &test( |
| kernarg_u64 %in, |
| kernarg_u64 %out) |
| { |
| |
| align(4) private_u8 %__privateStack[1200]; |
| mov_b64 $d1, 0; |
| /* This used to crash when gcc asserts enabled: */ |
| lda_private_u32 $s0, [%__privateStack][400]; |
| lda_private_u32 $s1, [%__privateStack]; |
| ld_kernarg_align(8)_width(all)_u64 $d0, [%out]; |
| ld_kernarg_align(8)_width(all)_u64 $d2, [%in]; |
| @BB1_1: |
| add_u64 $d3, $d2, $d1; |
| ld_global_align(4)_u32 $s2, [$d3]; |
| st_private_align(4)_u32 $s2, [$s0]; |
| st_private_align(4)_u32 $s2, [$s1]; |
| add_u32 $s1, $s1, 4; |
| add_u32 $s0, $s0, 4; |
| add_u64 $d1, $d1, 4; |
| cmp_ne_b1_s64 $c0, $d1, 400; |
| cbr_b1 $c0, @BB1_1; |
| mov_b32 $s1, 0; |
| lda_private_u32 $s0, [%__privateStack][800]; |
| @BB1_3: |
| ld_private_align(4)_u32 $s2, [%__privateStack][$s1]; |
| ld_private_align(4)_u32 $s3, [%__privateStack][$s1+400]; |
| add_u32 $s2, $s3, $s2; |
| st_private_align(4)_u32 $s2, [%__privateStack][$s1+800]; |
| add_u32 $s1, $s1, 4; |
| cmp_ne_b1_s32 $c0, $s1, 400; |
| cbr_b1 $c0, @BB1_3; |
| mov_b64 $d1, 0; |
| @BB1_5: |
| add_u64 $d2, $d0, $d1; |
| ld_private_align(4)_u32 $s1, [$s0]; |
| st_global_align(4)_u32 $s1, [$d2]; |
| add_u32 $s0, $s0, 4; |
| add_u64 $d1, $d1, 4; |
| cmp_ne_b1_s64 $c0, $d1, 400; |
| cbr_b1 $c0, @BB1_5; |
| ret; |
| }; |
| |
| /* br @skip converted to a goto */ |
| /* { dg-final { scan-tree-dump "= \\\(void \\\*\\\) priv_var_offset" "gimple"} } */ |