/* Set in gcn_option_override. */
extern enum gcn_isa {
ISA_UNKNOWN,
- ISA_GCN3,
ISA_GCN5,
ISA_RDNA2,
ISA_RDNA3,
ISA_CDNA2
} gcn_isa;
-#define TARGET_GCN3 (gcn_isa == ISA_GCN3)
-#define TARGET_GCN3_PLUS (gcn_isa >= ISA_GCN3)
#define TARGET_GCN5 (gcn_isa == ISA_GCN5)
#define TARGET_GCN5_PLUS (gcn_isa >= ISA_GCN5)
#define TARGET_CDNA1 (gcn_isa == ISA_CDNA1)
#define TARGET_RDNA3 (gcn_isa == ISA_RDNA3)
-#define TARGET_M0_LDS_LIMIT (TARGET_GCN3)
#define TARGET_PACKED_WORK_ITEMS (TARGET_CDNA2_PLUS || TARGET_RDNA3)
#define TARGET_XNACK (flag_xnack != HSACO_ATTR_OFF)
#define TARGET_11BIT_GLOBAL_OFFSET TARGET_RDNA2_PLUS
/* The work item details are all encoded into v0. */
//#define TARGET_PACKED_WORK_ITEMS TARGET_PACKED_WORK_ITEMS
-/* m0 must be initialized in order to use LDS. */
-//#define TARGET_M0_LDS_LIMIT TARGET_M0_LDS_LIMIT
/* CDNA2 load/store costs are reduced.
* TODO: what does this mean? */
#define TARGET_CDNA2_MEM_COSTS TARGET_CDNA2_PLUS
(mem:BLK (scratch))]
UNSPEC_GATHER))]
"(AS_FLAT_P (INTVAL (operands[3]))
- && ((TARGET_GCN3 && INTVAL(operands[2]) == 0)
- || ((unsigned HOST_WIDE_INT)INTVAL(operands[2]) < 0x1000)))
- || (AS_GLOBAL_P (INTVAL (operands[3]))
- && (((unsigned HOST_WIDE_INT)INTVAL(operands[2]) + 0x1000) < 0x2000))"
+ && ((unsigned HOST_WIDE_INT)INTVAL(operands[2]) < 0x1000))
+ || (AS_GLOBAL_P (INTVAL (operands[3]))
+ && (((unsigned HOST_WIDE_INT)INTVAL(operands[2]) + 0x1000) < 0x2000))"
{
addr_space_t as = INTVAL (operands[3]);
const char *glc = INTVAL (operands[4]) ? " glc" : "";
(match_operand:V_1REG 2 "register_operand" "v")
(match_operand:SI 3 "const_int_operand" "n")]
REDUC_UNSPEC))]
- ; GCN3 requires a carry out, GCN5 not
- "!(TARGET_GCN3 && SCALAR_INT_MODE_P (<SCALAR_MODE>mode)
- && <reduc_unspec> == UNSPEC_PLUS_DPP_SHR)
- && TARGET_DPP_FULL"
+ "TARGET_DPP_FULL"
{
return gcn_expand_dpp_shr_insn (<MODE>mode, "<reduc_insn>",
<reduc_unspec>, INTVAL (operands[3]));
/* Holds the ISA variant, derived from the command line parameters. */
-enum gcn_isa gcn_isa = ISA_GCN3; /* Default to GCN3. */
+enum gcn_isa gcn_isa = ISA_GCN5; /* Default to GCN5. */
/* Reserve this much space for LDS (for propagating variables from
worker-single mode to worker-partitioned mode), per workgroup. Global
/* Ensure that the scheduler doesn't do anything unexpected. */
emit_insn (gen_blockage ());
- if (TARGET_M0_LDS_LIMIT)
- {
- /* m0 is initialized for the usual LDS DS and FLAT memory case.
- The low-part is the address of the topmost addressable byte, which is
- size-1. The high-part is an offset and should be zero. */
- emit_move_insn (gen_rtx_REG (SImode, M0_REG),
- gen_int_mode (LDS_SIZE, SImode));
-
- emit_insn (gen_prologue_use (gen_rtx_REG (SImode, M0_REG)));
- }
-
if (cfun && cfun->machine && !cfun->machine->normal_function && flag_openmp)
{
/* OpenMP kernels have an implicit call to gomp_gcn_enter_kernel. */
|| unspec == UNSPEC_UMAX_DPP_SHR);
bool use_plus_carry = unspec == UNSPEC_PLUS_DPP_SHR
&& GET_MODE_CLASS (mode) == MODE_VECTOR_INT
- /* FIXME: why GCN3? */
- && (TARGET_GCN3 || scalar_mode == DImode);
+ && scalar_mode == DImode;
if (use_plus_carry)
unspec = UNSPEC_PLUS_CARRY_DPP_SHR;
do \
{ \
builtin_define ("__AMDGCN__"); \
- if (TARGET_GCN3) \
- builtin_define ("__GCN3__"); \
- else if (TARGET_GCN5) \
+ if (TARGET_GCN5) \
builtin_define ("__GCN5__"); \
else if (TARGET_CDNA1) \
builtin_define ("__CDNA1__"); \