@@ -1303,10 +1303,8 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
1303
1303
unsigned NextFreeSGPR, SMRange SGPRRange,
1304
1304
unsigned &VGPRBlocks, unsigned &SGPRBlocks);
1305
1305
bool ParseDirectiveAMDGCNTarget();
1306
+ bool ParseDirectiveAMDHSACodeObjectVersion();
1306
1307
bool ParseDirectiveAMDHSAKernel();
1307
- bool ParseDirectiveMajorMinor(uint32_t &Major, uint32_t &Minor);
1308
- bool ParseDirectiveHSACodeObjectVersion();
1309
- bool ParseDirectiveHSACodeObjectISA();
1310
1308
bool ParseAMDKernelCodeTValue(StringRef ID, amd_kernel_code_t &Header);
1311
1309
bool ParseDirectiveAMDKernelCodeT();
1312
1310
// TODO: Possibly make subtargetHasRegister const.
@@ -5133,20 +5131,6 @@ bool AMDGPUAsmParser::ParseAsAbsoluteExpression(uint32_t &Ret) {
5133
5131
return false;
5134
5132
}
5135
5133
5136
- bool AMDGPUAsmParser::ParseDirectiveMajorMinor(uint32_t &Major,
5137
- uint32_t &Minor) {
5138
- if (ParseAsAbsoluteExpression(Major))
5139
- return TokError("invalid major version");
5140
-
5141
- if (!trySkipToken(AsmToken::Comma))
5142
- return TokError("minor version number required, comma expected");
5143
-
5144
- if (ParseAsAbsoluteExpression(Minor))
5145
- return TokError("invalid minor version");
5146
-
5147
- return false;
5148
- }
5149
-
5150
5134
bool AMDGPUAsmParser::ParseDirectiveAMDGCNTarget() {
5151
5135
if (getSTI().getTargetTriple().getArch() != Triple::amdgcn)
5152
5136
return TokError("directive only supported for amdgcn architecture");
@@ -5612,63 +5596,18 @@ bool AMDGPUAsmParser::ParseDirectiveAMDHSAKernel() {
5612
5596
}
5613
5597
}
5614
5598
5615
- getTargetStreamer().EmitAmdhsaKernelDescriptor(
5616
- getSTI(), KernelName, KD, NextFreeVGPR, NextFreeSGPR, ReserveVCC,
5617
- ReserveFlatScr, AMDGPU::getAmdhsaCodeObjectVersion());
5618
- return false;
5619
- }
5620
-
5621
- bool AMDGPUAsmParser::ParseDirectiveHSACodeObjectVersion() {
5622
- uint32_t Major;
5623
- uint32_t Minor;
5624
-
5625
- if (ParseDirectiveMajorMinor(Major, Minor))
5626
- return true;
5627
-
5628
- getTargetStreamer().EmitDirectiveHSACodeObjectVersion(Major, Minor);
5599
+ getTargetStreamer().EmitAmdhsaKernelDescriptor(getSTI(), KernelName, KD,
5600
+ NextFreeVGPR, NextFreeSGPR,
5601
+ ReserveVCC, ReserveFlatScr);
5629
5602
return false;
5630
5603
}
5631
5604
5632
- bool AMDGPUAsmParser::ParseDirectiveHSACodeObjectISA() {
5633
- uint32_t Major;
5634
- uint32_t Minor;
5635
- uint32_t Stepping;
5636
- StringRef VendorName;
5637
- StringRef ArchName;
5638
-
5639
- // If this directive has no arguments, then use the ISA version for the
5640
- // targeted GPU.
5641
- if (isToken(AsmToken::EndOfStatement)) {
5642
- AMDGPU::IsaVersion ISA = AMDGPU::getIsaVersion(getSTI().getCPU());
5643
- getTargetStreamer().EmitDirectiveHSACodeObjectISAV2(ISA.Major, ISA.Minor,
5644
- ISA.Stepping,
5645
- "AMD", "AMDGPU");
5646
- return false;
5647
- }
5648
-
5649
- if (ParseDirectiveMajorMinor(Major, Minor))
5650
- return true;
5651
-
5652
- if (!trySkipToken(AsmToken::Comma))
5653
- return TokError("stepping version number required, comma expected");
5654
-
5655
- if (ParseAsAbsoluteExpression(Stepping))
5656
- return TokError("invalid stepping version");
5657
-
5658
- if (!trySkipToken(AsmToken::Comma))
5659
- return TokError("vendor name required, comma expected");
5660
-
5661
- if (!parseString(VendorName, "invalid vendor name"))
5662
- return true;
5663
-
5664
- if (!trySkipToken(AsmToken::Comma))
5665
- return TokError("arch name required, comma expected");
5666
-
5667
- if (!parseString(ArchName, "invalid arch name"))
5605
+ bool AMDGPUAsmParser::ParseDirectiveAMDHSACodeObjectVersion() {
5606
+ uint32_t Version;
5607
+ if (ParseAsAbsoluteExpression(Version))
5668
5608
return true;
5669
5609
5670
- getTargetStreamer().EmitDirectiveHSACodeObjectISAV2(Major, Minor, Stepping,
5671
- VendorName, ArchName);
5610
+ getTargetStreamer().EmitDirectiveAMDHSACodeObjectVersion(Version);
5672
5611
return false;
5673
5612
}
5674
5613
@@ -5955,16 +5894,13 @@ bool AMDGPUAsmParser::ParseDirective(AsmToken DirectiveID) {
5955
5894
if (IDVal == ".amdhsa_kernel")
5956
5895
return ParseDirectiveAMDHSAKernel();
5957
5896
5897
+ if (IDVal == ".amdhsa_code_object_version")
5898
+ return ParseDirectiveAMDHSACodeObjectVersion();
5899
+
5958
5900
// TODO: Restructure/combine with PAL metadata directive.
5959
5901
if (IDVal == AMDGPU::HSAMD::V3::AssemblerDirectiveBegin)
5960
5902
return ParseDirectiveHSAMetadata();
5961
5903
} else {
5962
- if (IDVal == ".hsa_code_object_version")
5963
- return ParseDirectiveHSACodeObjectVersion();
5964
-
5965
- if (IDVal == ".hsa_code_object_isa")
5966
- return ParseDirectiveHSACodeObjectISA();
5967
-
5968
5904
if (IDVal == ".amd_kernel_code_t")
5969
5905
return ParseDirectiveAMDKernelCodeT();
5970
5906
@@ -8137,9 +8073,8 @@ void AMDGPUAsmParser::onBeginOfFile() {
8137
8073
return;
8138
8074
8139
8075
if (!getTargetStreamer().getTargetID())
8140
- getTargetStreamer().initializeTargetID(getSTI(), getSTI().getFeatureString(),
8141
- // TODO: Should try to check code object version from directive???
8142
- AMDGPU::getAmdhsaCodeObjectVersion());
8076
+ getTargetStreamer().initializeTargetID(getSTI(),
8077
+ getSTI().getFeatureString());
8143
8078
8144
8079
if (isHsaAbi(getSTI()))
8145
8080
getTargetStreamer().EmitDirectiveAMDGCNTarget();
0 commit comments