+2019-11-22 Andrew Stubbs <ams@codesourcery.com>
+
+ * config/gcn/gcn.c (gcn_hsa_declare_function_name): Calculate
+ granulated_sgprs according to architecture.
+
2019-11-22 Jan Hubicka <jh@suse.cz>
* ggc-page.c (ggc_collect): Call memory_block_pool::trim.
sgpr = MAX_NORMAL_SGPR_COUNT - extra_regs;
}
+ /* GFX8 allocates SGPRs in blocks of 8.
+ GFX9 uses blocks of 16. */
+ int granulated_sgprs;
+ if (TARGET_GCN3)
+ granulated_sgprs = (sgpr + extra_regs + 7) / 8 - 1;
+ else if (TARGET_GCN5)
+ granulated_sgprs = 2 * ((sgpr + extra_regs + 15) / 16 - 1);
+
fputs ("\t.align\t256\n", file);
fputs ("\t.type\t", file);
assemble_name (file, name);
"\t\tcompute_pgm_rsrc2_excp_en = 0\n",
(vgpr - 1) / 4,
/* Must match wavefront_sgpr_count */
- (sgpr + extra_regs + 7) / 8 - 1,
+ granulated_sgprs,
/* The total number of SGPR user data registers requested. This
number must match the number of user data registers enabled. */
cfun->machine->args.nsgprs);