diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-01-05 03:13:10 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-01-05 03:13:10 +0000 |
| commit | d4d575b955ac75e0a2ee5fcc0110d2f2cfcd4a50 (patch) | |
| tree | 91386b890bc395297bff2eec336442e39abb9830 /llvm/lib/Target/AMDGPU | |
| parent | b2f3a81a92c43b9e3ef84e5d64a1db88b982061e (diff) | |
| download | bcm5719-llvm-d4d575b955ac75e0a2ee5fcc0110d2f2cfcd4a50.tar.gz bcm5719-llvm-d4d575b955ac75e0a2ee5fcc0110d2f2cfcd4a50.zip | |
Revert r291025 ("AMDGPU: Remove unneccessary intermediate vector")
This caused buildbot failures due to returning ArrayRefs referencing local
(temporary) objects.
llvm-svn: 291067
Diffstat (limited to 'llvm/lib/Target/AMDGPU')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp index 092feaf4ea5..a6c31629e7c 100644 --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -822,7 +822,6 @@ public: bool isForcedVOP3() const { return ForcedEncodingSize == 64; } bool isForcedDPP() const { return ForcedDPP; } bool isForcedSDWA() const { return ForcedSDWA; } - ArrayRef<unsigned> getMatchedVariants() const; std::unique_ptr<AMDGPUOperand> parseRegister(); bool ParseRegister(unsigned &RegNo, SMLoc &StartLoc, SMLoc &EndLoc) override; @@ -1631,34 +1630,31 @@ unsigned AMDGPUAsmParser::checkTargetMatchPredicate(MCInst &Inst) { return Match_Success; } -// What asm variants we should check -ArrayRef<unsigned> AMDGPUAsmParser::getMatchedVariants() const { - if (getForcedEncodingSize() == 32) - return {AMDGPUAsmVariants::DEFAULT}; - - if (isForcedVOP3()) - return {AMDGPUAsmVariants::VOP3}; - - if (isForcedSDWA()) - return {AMDGPUAsmVariants::SDWA}; - - if (isForcedDPP()) - return {AMDGPUAsmVariants::DPP}; - - return {AMDGPUAsmVariants::DEFAULT, - AMDGPUAsmVariants::VOP3, - AMDGPUAsmVariants::SDWA, - AMDGPUAsmVariants::DPP}; -} - bool AMDGPUAsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode, OperandVector &Operands, MCStreamer &Out, uint64_t &ErrorInfo, bool MatchingInlineAsm) { + // What asm variants we should check + std::vector<unsigned> MatchedVariants; + if (getForcedEncodingSize() == 32) { + MatchedVariants = {AMDGPUAsmVariants::DEFAULT}; + } else if (isForcedVOP3()) { + MatchedVariants = {AMDGPUAsmVariants::VOP3}; + } else if (isForcedSDWA()) { + MatchedVariants = {AMDGPUAsmVariants::SDWA}; + } else if (isForcedDPP()) { + MatchedVariants = {AMDGPUAsmVariants::DPP}; + } else { + MatchedVariants = {AMDGPUAsmVariants::DEFAULT, + AMDGPUAsmVariants::VOP3, + AMDGPUAsmVariants::SDWA, + AMDGPUAsmVariants::DPP}; + } + MCInst Inst; unsigned Result = Match_Success; - for (auto Variant : getMatchedVariants()) { + for (auto Variant : MatchedVariants) { uint64_t EI; auto R = MatchInstructionImpl(Operands, Inst, EI, MatchingInlineAsm, Variant); |

