[Bug target/104440] nvptx: FAIL: gcc.c-torture/execute/pr53465.c execution test

vries at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Feb 17 07:37:21 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104440

--- Comment #9 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #1)
> Tentative patch that fixes example:
> ...
> diff --git a/gcc/config/nvptx/nvptx.cc b/gcc/config/nvptx/nvptx.cc
> index 5b26c0f4c7dd..4dc154434853 100644
> --- a/gcc/config/nvptx/nvptx.cc
> +++ b/gcc/config/nvptx/nvptx.cc
> @@ -1565,6 +1565,23 @@ nvptx_declare_function_name (FILE *file, const char
> *name, cons
> t_tree decl)
>           fprintf (file, "\t.reg%s ", nvptx_ptx_type_from_mode (mode, true));
>           output_reg (file, i, split, -2);
>           fprintf (file, ";\n");
> +         switch (mode)
> +           {
> +           case HImode:
> +             fprintf (file, "\tmov.u16 %%r%d, 0;\n", i);
> +             break;
> +           case SImode:
> +             fprintf (file, "\tmov.u32 %%r%d, 0;\n", i);
> +             break;
> +           case DImode:
> +             fprintf (file, "\tmov.u64 %%r%d, 0;\n", i);
> +             break;
> +           case BImode:
> +             fprintf (file, "\tsetp.ne.u32 %%r%d,0,0;\n", i);
> +             break;
> +           default:
> +             gcc_unreachable ();
> +           }
>         }
>      }
>  
> ...

FWIW, I've tested this patch (extended a bit to handle all cases) but ran into
trouble in the libgomp testsuite, with running out of resources.  So this
approach is too resource-hungry.


More information about the Gcc-bugs mailing list