@@ -125,6 +125,15 @@ namespace amdt
125125 const char * kPalMdTagUserDataRegMap = " .user_data_reg_map" ;
126126 const char * kPalMdTagUsesCps = " .uses_cps" ;
127127 const char * kPalMdTagThreadGroupDimensions = " .threadgroup_dimensions" ;
128+ const char * kPalMdTagComputeRegisters = " .compute_registers" ;
129+ const char * kPalMdTagDynamicVgprEn = " .dynamic_vgpr_en" ;
130+ const char * kPalMdTagTgSizeEn = " .tg_size_en" ;
131+ const char * kPalMdTagTgidXEn = " .tgid_x_en" ;
132+ const char * kPalMdTagTgidYEn = " .tgid_y_en" ;
133+ const char * kPalMdTagTgidZEn = " .tgid_z_en" ;
134+ const char * kPalMdTagTidigCompCnt = " .tidig_comp_cnt" ;
135+ const char * kPalMdTagXInterleave = " .x_interleave" ;
136+ const char * kPalMdTagYInterleave = " .y_interleave" ;
128137 // Graphics register metadata.
129138 const char * kPalMdTagGraphicsRegisters = " .graphics_registers" ;
130139 const char * kPalMdTagAaCoverageToShaderSelect = " .aa_coverage_to_shader_select" ;
@@ -804,6 +813,8 @@ namespace amdt
804813 }
805814 }
806815
816+ ExtractPalMDComputeRegisters (*pipeline_data, ppln);
817+
807818 // Uses CPS (Continuation Passing Shader).
808819 MDNode uses_cps = ppln[kPalMdTagUsesCps ];
809820 if (uses_cps.IsValid ())
@@ -2074,6 +2085,53 @@ namespace amdt
20742085 return true ;
20752086 }
20762087
2088+ bool CodeObj::ExtractPalMDComputeRegisters (Pipeline &md_pipeline_data, MDNode &ppln)
2089+ {
2090+ MDNode compute_registers = ppln[kPalMdTagComputeRegisters ];
2091+ auto &compute_registers_info = md_pipeline_data.compute_registers_info ;
2092+
2093+ if (!compute_registers.IsValid ())
2094+ {
2095+ ReportInvalidRequiredPalMDMapItem (compute_registers);
2096+ return false ;
2097+ }
2098+
2099+ MDNode dynamic_vgpr_en = compute_registers[kPalMdTagDynamicVgprEn ];
2100+ compute_registers_info.dynamic_vgpr_en = dynamic_vgpr_en.value <bool >();
2101+ dynamic_vgpr_en.Destroy ();
2102+
2103+ MDNode tg_size_en = compute_registers[kPalMdTagTgSizeEn ];
2104+ compute_registers_info.tg_size_en = tg_size_en.value <bool >();
2105+ tg_size_en.Destroy ();
2106+
2107+ MDNode tgid_x_en = compute_registers[kPalMdTagTgidXEn ];
2108+ compute_registers_info.tgid_x_en = tgid_x_en.value <bool >();
2109+ tgid_x_en.Destroy ();
2110+
2111+ MDNode tgid_y_en = compute_registers[kPalMdTagTgidYEn ];
2112+ compute_registers_info.tgid_y_en = tgid_y_en.value <bool >();
2113+ tgid_y_en.Destroy ();
2114+
2115+ MDNode tgid_z_en = compute_registers[kPalMdTagTgidZEn ];
2116+ compute_registers_info.tgid_z_en = tgid_z_en.value <bool >();
2117+ tgid_z_en.Destroy ();
2118+
2119+ MDNode tidig_comp_cnt = compute_registers[kPalMdTagTidigCompCnt ];
2120+ compute_registers_info.tidig_comp_cnt = tidig_comp_cnt.value <uint32_t >();
2121+ tidig_comp_cnt.Destroy ();
2122+
2123+ MDNode x_interleave = compute_registers[kPalMdTagXInterleave ];
2124+ compute_registers_info.x_interleave = x_interleave.value <uint32_t >();
2125+ x_interleave.Destroy ();
2126+
2127+ MDNode y_interleave = compute_registers[kPalMdTagYInterleave ];
2128+ compute_registers_info.y_interleave = y_interleave.value <uint32_t >();
2129+ y_interleave.Destroy ();
2130+
2131+ compute_registers.Destroy ();
2132+ return true ;
2133+ }
2134+
20772135 bool CodeObj::ExtractPalMdGraphicsRegisterInfo (Pipeline& md_pipeline_data, MDNode& pp_in)
20782136 {
20792137 MDNode graphics_registers = pp_in[kPalMdTagGraphicsRegisters ];
0 commit comments