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"} } */