gcc/configure.ac: fix register issue for global_load assembler functions
gcc/ChangeLog:
* config.in: Regenerate.
* config/gcn/gcn.c (print_operand_address): Fix for global_load assembler
functions.
* configure: Regenerate.
* configure.ac: Fix for global_load assembler functions.
(cherry picked from commit cfa1f8226f
)
This commit is contained in:
parent
64b2bd684f
commit
e85d6ef1c4
@ -1438,6 +1438,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* Define if your assembler has fixed global_load functions. */
|
||||
#ifndef USED_FOR_TARGET
|
||||
#undef HAVE_GCN_ASM_GLOBAL_LOAD_FIXED
|
||||
#endif
|
||||
|
||||
|
||||
/* Define to 1 if you have the `getchar_unlocked' function. */
|
||||
#ifndef USED_FOR_TARGET
|
||||
#undef HAVE_GETCHAR_UNLOCKED
|
||||
|
@ -5481,13 +5481,22 @@ print_operand_address (FILE *file, rtx mem)
|
||||
if (vgpr_offset == NULL_RTX)
|
||||
/* In this case, the vector offset is zero, so we use the first
|
||||
lane of v1, which is initialized to zero. */
|
||||
fprintf (file, "v[1:2]");
|
||||
{
|
||||
if (HAVE_GCN_ASM_GLOBAL_LOAD_FIXED)
|
||||
fprintf (file, "v1");
|
||||
else
|
||||
fprintf (file, "v[1:2]");
|
||||
}
|
||||
else if (REG_P (vgpr_offset)
|
||||
&& VGPR_REGNO_P (REGNO (vgpr_offset)))
|
||||
{
|
||||
fprintf (file, "v[%d:%d]",
|
||||
REGNO (vgpr_offset) - FIRST_VGPR_REG,
|
||||
REGNO (vgpr_offset) - FIRST_VGPR_REG + 1);
|
||||
if (HAVE_GCN_ASM_GLOBAL_LOAD_FIXED)
|
||||
fprintf (file, "v%d",
|
||||
REGNO (vgpr_offset) - FIRST_VGPR_REG);
|
||||
else
|
||||
fprintf (file, "v[%d:%d]",
|
||||
REGNO (vgpr_offset) - FIRST_VGPR_REG,
|
||||
REGNO (vgpr_offset) - FIRST_VGPR_REG + 1);
|
||||
}
|
||||
else
|
||||
output_operand_lossage ("bad ADDR_SPACE_GLOBAL address");
|
||||
|
27
gcc/configure
vendored
27
gcc/configure
vendored
@ -28891,6 +28891,33 @@ case "$target" in
|
||||
;;
|
||||
esac
|
||||
|
||||
# This tests if the assembler supports two registers for global_load functions
|
||||
# (like in LLVM versions <12) or one register (like in LLVM 12).
|
||||
case "$target" in
|
||||
amdgcn-* | gcn-*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler fix for global_load functions" >&5
|
||||
$as_echo_n "checking assembler fix for global_load functions... " >&6; }
|
||||
gcc_cv_as_gcn_global_load_fixed=yes
|
||||
if test x$gcc_cv_as != x; then
|
||||
cat > conftest.s <<EOF
|
||||
global_store_dwordx2 v[1:2], v[4:5], s[14:15]
|
||||
EOF
|
||||
if $gcc_cv_as -triple=amdgcn--amdhsa -filetype=obj -mcpu=gfx900 -o conftest.o conftest.s > /dev/null 2>&1; then
|
||||
gcc_cv_as_gcn_global_load_fixed=no
|
||||
fi
|
||||
rm -f conftest.s conftest.o conftest
|
||||
fi
|
||||
global_load_fixed=`if test x$gcc_cv_as_gcn_global_load_fixed = xyes; then echo 1; else echo 0; fi`
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_GCN_ASM_GLOBAL_LOAD_FIXED $global_load_fixed
|
||||
_ACEOF
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_gcn_global_load_fixed" >&5
|
||||
$as_echo "$gcc_cv_as_gcn_global_load_fixed" >&6; }
|
||||
;;
|
||||
esac
|
||||
|
||||
# ??? Not all targets support dwarf2 debug_line, even within a version
|
||||
# of gas. Moreover, we need to emit a valid instruction to trigger any
|
||||
# info to the output file. So, as supported targets are added to gas 2.11,
|
||||
|
@ -5348,6 +5348,28 @@ case "$target" in
|
||||
;;
|
||||
esac
|
||||
|
||||
# This tests if the assembler supports two registers for global_load functions
|
||||
# (like in LLVM versions <12) or one register (like in LLVM 12).
|
||||
case "$target" in
|
||||
amdgcn-* | gcn-*)
|
||||
AC_MSG_CHECKING(assembler fix for global_load functions)
|
||||
gcc_cv_as_gcn_global_load_fixed=yes
|
||||
if test x$gcc_cv_as != x; then
|
||||
cat > conftest.s <<EOF
|
||||
global_store_dwordx2 v[[1:2]], v[[4:5]], s[[14:15]]
|
||||
EOF
|
||||
if $gcc_cv_as -triple=amdgcn--amdhsa -filetype=obj -mcpu=gfx900 -o conftest.o conftest.s > /dev/null 2>&1; then
|
||||
gcc_cv_as_gcn_global_load_fixed=no
|
||||
fi
|
||||
rm -f conftest.s conftest.o conftest
|
||||
fi
|
||||
global_load_fixed=`if test x$gcc_cv_as_gcn_global_load_fixed = xyes; then echo 1; else echo 0; fi`
|
||||
AC_DEFINE_UNQUOTED(HAVE_GCN_ASM_GLOBAL_LOAD_FIXED, $global_load_fixed,
|
||||
[Define if your assembler has fixed global_load functions.])
|
||||
AC_MSG_RESULT($gcc_cv_as_gcn_global_load_fixed)
|
||||
;;
|
||||
esac
|
||||
|
||||
# ??? Not all targets support dwarf2 debug_line, even within a version
|
||||
# of gas. Moreover, we need to emit a valid instruction to trigger any
|
||||
# info to the output file. So, as supported targets are added to gas 2.11,
|
||||
|
Loading…
Reference in New Issue
Block a user