@@ -4560,7 +4560,7 @@ case "${target}" in
for which in arch tune; do
eval "val=\$with_$which"
case ${val} in
- "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030 | gfx1100)
+ "" | fiji | gfx900 | gfx906 | gfx908 | gfx90a | gfx1030 | gfx1100 | gfx1103)
# OK
;;
*)
@@ -4576,7 +4576,7 @@ case "${target}" in
TM_MULTILIB_CONFIG=
;;
xdefault | xyes)
- TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1100" | sed "s/${with_arch},\?//;s/,$//"`
+ TM_MULTILIB_CONFIG=`echo "gfx900,gfx906,gfx908,gfx90a,gfx1030,gfx1100,gfx1103" | sed "s/${with_arch},\?//;s/,$//"`
;;
*)
TM_MULTILIB_CONFIG="${with_multilib_list}"
@@ -90,7 +90,7 @@ extern unsigned int gcn_local_sym_hash (const char *name);
the ELF flags (e_flags) of that generated file must be identical to those
generated by the compiler. */
-#define NO_XNACK "march=fiji:;march=gfx1030:;march=gfx1100:;" \
+#define NO_XNACK "march=fiji:;march=gfx1030:;march=gfx1100:;march=gfx1103:;" \
/* These match the defaults set in gcn.cc. */ \
"!mxnack*|mxnack=default:%{march=gfx900|march=gfx906|march=gfx908:-mattr=-xnack};"
#define NO_SRAM_ECC "!march=*:;march=fiji:;march=gfx900:;march=gfx906:;"
@@ -106,8 +106,8 @@ extern unsigned int gcn_local_sym_hash (const char *name);
"%{" ABI_VERSION_SPEC "} " \
"%{" NO_XNACK XNACKOPT "} " \
"%{" NO_SRAM_ECC SRAMOPT "} " \
- "%{march=gfx1030|march=gfx1100:-mattr=+wavefrontsize64} " \
- "%{march=gfx1030|march=gfx1100:-mattr=+cumode} " \
+ "%{march=gfx1030|march=gfx1100|march=gfx1103:-mattr=+wavefrontsize64} " \
+ "%{march=gfx1030|march=gfx1100|march=gfx1103:-mattr=+cumode} " \
"-filetype=obj"
#define LINK_SPEC "--pie --export-dynamic"
#define LIB_SPEC "-lc"
@@ -26,7 +26,8 @@ enum processor_type
PROCESSOR_GFX908,
PROCESSOR_GFX90a,
PROCESSOR_GFX1030,
- PROCESSOR_GFX1100
+ PROCESSOR_GFX1100,
+ PROCESSOR_GFX1103
};
#define TARGET_FIJI (gcn_arch == PROCESSOR_FIJI)
@@ -36,6 +37,7 @@ enum processor_type
#define TARGET_GFX90a (gcn_arch == PROCESSOR_GFX90a)
#define TARGET_GFX1030 (gcn_arch == PROCESSOR_GFX1030)
#define TARGET_GFX1100 (gcn_arch == PROCESSOR_GFX1100)
+#define TARGET_GFX1103 (gcn_arch == PROCESSOR_GFX1103)
/* Set in gcn_option_override. */
extern enum gcn_isa {
@@ -140,6 +140,7 @@ gcn_option_override (void)
: gcn_arch == PROCESSOR_GFX90a ? ISA_CDNA2
: gcn_arch == PROCESSOR_GFX1030 ? ISA_RDNA2
: gcn_arch == PROCESSOR_GFX1100 ? ISA_RDNA3
+ : gcn_arch == PROCESSOR_GFX1103 ? ISA_RDNA3
: ISA_UNKNOWN);
gcc_assert (gcn_isa != ISA_UNKNOWN);
@@ -164,13 +165,15 @@ gcn_option_override (void)
/* gfx803 "Fiji", gfx1030 and gfx1100 do not support XNACK. */
if (gcn_arch == PROCESSOR_FIJI
|| gcn_arch == PROCESSOR_GFX1030
- || gcn_arch == PROCESSOR_GFX1100)
+ || gcn_arch == PROCESSOR_GFX1100
+ || gcn_arch == PROCESSOR_GFX1103)
{
if (flag_xnack == HSACO_ATTR_ON)
error ("%<-mxnack=on%> is incompatible with %<-march=%s%>",
(gcn_arch == PROCESSOR_FIJI ? "fiji"
: gcn_arch == PROCESSOR_GFX1030 ? "gfx1030"
: gcn_arch == PROCESSOR_GFX1100 ? "gfx1100"
+ : gcn_arch == PROCESSOR_GFX1103 ? "gfx1103"
: NULL));
/* Allow HSACO_ATTR_ANY silently because that's the default. */
flag_xnack = HSACO_ATTR_OFF;
@@ -3048,6 +3051,8 @@ gcn_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
return gcn_arch == PROCESSOR_GFX1030;
if (strcmp (name, "gfx1100") == 0)
return gcn_arch == PROCESSOR_GFX1100;
+ if (strcmp (name, "gfx1103") == 0)
+ return gcn_arch == PROCESSOR_GFX1103;
return 0;
default:
gcc_unreachable ();
@@ -6558,6 +6563,11 @@ output_file_start (void)
xnack = "";
sram_ecc = "";
break;
+ case PROCESSOR_GFX1103:
+ cpu = "gfx1103";
+ xnack = "";
+ sram_ecc = "";
+ break;
default: gcc_unreachable ();
}
@@ -6705,7 +6715,7 @@ gcn_hsa_declare_function_name (FILE *file, const char *name,
xnack_enabled,
LDS_SIZE);
/* Not supported with 'architected flat scratch'. */
- if (gcn_arch != PROCESSOR_GFX1100)
+ if (!TARGET_RDNA3)
fprintf (file,
"\t .amdhsa_reserve_flat_scratch\t0\n");
if (gcn_arch == PROCESSOR_GFX90a)
@@ -51,6 +51,8 @@
builtin_define ("__gfx1030"); \
else if (TARGET_GFX1100) \
builtin_define ("__gfx1100__"); \
+ else if (TARGET_GFX1103) \
+ builtin_define ("__gfx1103__"); \
else \
gcc_unreachable (); \
} while (0)
@@ -46,6 +46,9 @@ Enum(gpu_type) String(gfx1030) Value(PROCESSOR_GFX1030)
EnumValue
Enum(gpu_type) String(gfx1100) Value(PROCESSOR_GFX1100)
+EnumValue
+Enum(gpu_type) String(gfx1103) Value(PROCESSOR_GFX1103)
+
march=
Target RejectNegative Negative(march=) Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI)
Specify the name of the target GPU.
@@ -61,6 +61,8 @@
#define EF_AMDGPU_MACH_AMDGCN_GFX1030 0x36
#undef EF_AMDGPU_MACH_AMDGCN_GFX1100
#define EF_AMDGPU_MACH_AMDGCN_GFX1100 0x41
+#undef EF_AMDGPU_MACH_AMDGCN_GFX1103
+#define EF_AMDGPU_MACH_AMDGCN_GFX1103 0x44
#define EF_AMDGPU_FEATURE_XNACK_V4 0x300 /* Mask. */
#define EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4 0x000
@@ -971,6 +973,8 @@ main (int argc, char **argv)
elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX1030;
else if (strcmp (argv[i], "-march=gfx1100") == 0)
elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX1100;
+ else if (strcmp (argv[i], "-march=gfx1103") == 0)
+ elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX1103;
#define STR "-mstack-size="
else if (startswith (argv[i], STR))
gcn_stack_size = atoi (argv[i] + strlen (STR));
@@ -1013,6 +1017,7 @@ main (int argc, char **argv)
case EF_AMDGPU_MACH_AMDGCN_GFX803:
case EF_AMDGPU_MACH_AMDGCN_GFX1030:
case EF_AMDGPU_MACH_AMDGCN_GFX1100:
+ case EF_AMDGPU_MACH_AMDGCN_GFX1103:
SET_XNACK_UNSET (elf_flags);
SET_SRAM_ECC_UNSET (elf_flags);
break;
@@ -1,4 +1,4 @@
omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.cc
echo kind: gpu > $@
echo arch: amdgcn gcn >> $@
- echo isa: fiji gfx803 gfx900 gfx906 gfx908 gfx90a gfx1030 gfx1100 >> $@
+ echo isa: fiji gfx803 gfx900 gfx906 gfx908 gfx90a gfx1030 gfx1100 gfx1103 >> $@
@@ -1266,11 +1266,11 @@ default set of libraries is selected based on the value of
@item amdgcn*-*-*
@var{list} is a comma separated list of ISA names (allowed values: @code{fiji},
@code{gfx900}, @code{gfx906}, @code{gfx908}, @code{gfx90a}, @code{gfx1030},
-@code{gfx1100}). It ought not include the name of the default ISA, specified
-via @option{--with-arch}. If @var{list} is empty, then there will be no
-multilibs and only the default run-time library will be built. If @var{list}
-is @code{default} or @option{--with-multilib-list=} is not specified, then
-the default set of libraries is selected.
+@code{gfx1100}, @code{gfx1103}). It ought not include the name of the default
+ISA, specified via @option{--with-arch}. If @var{list} is empty, then there
+will be no multilibs and only the default run-time library will be built. If
+@var{list} is @code{default} or @option{--with-multilib-list=} is not
+specified, then the default set of libraries is selected.
@item arm*-*-*
@var{list} is a comma separated list of @code{aprofile} and
@@ -3940,7 +3940,8 @@ Instead of GNU Binutils, you will need to install LLVM 15, or later, and copy
@file{bin/llvm-nm} to @file{amdgcn-amdhsa/bin/nm}, and
@file{bin/llvm-ar} to both @file{bin/amdgcn-amdhsa-ar} and
@file{bin/amdgcn-amdhsa-ranlib}. Note that LLVM 13.0.1 or LLVM 14 can be used
-by specifying a @code{--with-multilib-list=} that does not list @code{gfx1100}.
+by specifying a @code{--with-multilib-list=} that does not list @code{gfx1100}
+and @code{gfx1103}.
Use Newlib (4.3.0 or newer; 4.4.0 or later is recommended).
@@ -21795,6 +21795,9 @@ Compile for RDNA2 gfx1030 devices (GFX10 series).
@item gfx1100
Compile for RDNA3 gfx1100 devices (GFX11 series).
+@item gfx1103
+Compile for RDNA3 gfx1103 devices (GFX11 series).
+
@end table
@opindex msram-ecc
@@ -391,7 +391,8 @@ typedef enum {
EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030,
EF_AMDGPU_MACH_AMDGCN_GFX90a = 0x03f,
EF_AMDGPU_MACH_AMDGCN_GFX1030 = 0x036,
- EF_AMDGPU_MACH_AMDGCN_GFX1100 = 0x041
+ EF_AMDGPU_MACH_AMDGCN_GFX1100 = 0x041,
+ EF_AMDGPU_MACH_AMDGCN_GFX1103 = 0x044
} EF_AMDGPU_MACH;
const static int EF_AMDGPU_MACH_MASK = 0x000000ff;
@@ -1677,6 +1678,7 @@ const static char *gcn_gfx908_s = "gfx908";
const static char *gcn_gfx90a_s = "gfx90a";
const static char *gcn_gfx1030_s = "gfx1030";
const static char *gcn_gfx1100_s = "gfx1100";
+const static char *gcn_gfx1103_s = "gfx1103";
const static int gcn_isa_name_len = 7;
/* Returns the name that the HSA runtime uses for the ISA or NULL if we do not
@@ -1700,6 +1702,8 @@ isa_hsa_name (int isa) {
return gcn_gfx1030_s;
case EF_AMDGPU_MACH_AMDGCN_GFX1100:
return gcn_gfx1100_s;
+ case EF_AMDGPU_MACH_AMDGCN_GFX1103:
+ return gcn_gfx1103_s;
}
return NULL;
}
@@ -1745,6 +1749,9 @@ isa_code(const char *isa) {
if (!strncmp (isa, gcn_gfx1100_s, gcn_isa_name_len))
return EF_AMDGPU_MACH_AMDGCN_GFX1100;
+ if (!strncmp (isa, gcn_gfx1103_s, gcn_isa_name_len))
+ return EF_AMDGPU_MACH_AMDGCN_GFX1103;
+
return EF_AMDGPU_MACH_UNSUPPORTED;
}
@@ -1765,6 +1772,7 @@ max_isa_vgprs (int isa)
case EF_AMDGPU_MACH_AMDGCN_GFX1030:
return 512; /* 512 SIMD32 = 256 wavefrontsize64. */
case EF_AMDGPU_MACH_AMDGCN_GFX1100:
+ case EF_AMDGPU_MACH_AMDGCN_GFX1103:
return 1536; /* 1536 SIMD32 = 768 wavefrontsize64. */
}
GOMP_PLUGIN_fatal ("unhandled ISA in max_isa_vgprs");