view gcc/testsuite/brig.dg/test/gimple/priv-array-offset-access.hsail @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line source

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