[llvm] r328870 - [Hexagon] Recognize and handle :endloop01
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 30 08:29:47 PDT 2018
Author: kparzysz
Date: Fri Mar 30 08:29:47 2018
New Revision: 328870
URL: http://llvm.org/viewvc/llvm-project?rev=328870&view=rev
Log:
[Hexagon] Recognize and handle :endloop01
Modified:
llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
llvm/trunk/lib/Target/Hexagon/HexagonPseudo.td
llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp
llvm/trunk/test/MC/Hexagon/capitalizedEndloop.s
Modified: llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp?rev=328870&r1=328869&r2=328870&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp Fri Mar 30 08:29:47 2018
@@ -506,16 +506,19 @@ bool HexagonAsmParser::matchBundleOption
"supported with this architecture";
StringRef Option = Parser.getTok().getString();
auto IDLoc = Parser.getTok().getLoc();
- if (Option.compare_lower("endloop0") == 0)
+ if (Option.compare_lower("endloop01") == 0) {
HexagonMCInstrInfo::setInnerLoop(MCB);
- else if (Option.compare_lower("endloop1") == 0)
HexagonMCInstrInfo::setOuterLoop(MCB);
- else if (Option.compare_lower("mem_noshuf") == 0)
+ } else if (Option.compare_lower("endloop0") == 0) {
+ HexagonMCInstrInfo::setInnerLoop(MCB);
+ } else if (Option.compare_lower("endloop1") == 0) {
+ HexagonMCInstrInfo::setOuterLoop(MCB);
+ } else if (Option.compare_lower("mem_noshuf") == 0) {
if (getSTI().getFeatureBits()[Hexagon::FeatureMemNoShuf])
HexagonMCInstrInfo::setMemReorderDisabled(MCB);
else
return getParser().Error(IDLoc, MemNoShuffMsg);
- else
+ } else
return getParser().Error(IDLoc, llvm::Twine("'") + Option +
"' is not a valid bundle option");
Lex();
Modified: llvm/trunk/lib/Target/Hexagon/HexagonPseudo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonPseudo.td?rev=328870&r1=328869&r2=328870&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonPseudo.td (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonPseudo.td Fri Mar 30 08:29:47 2018
@@ -102,6 +102,13 @@ def ENDLOOP1 : Endloop<(outs), (ins b30_
[]>;
}
+let isBranch = 1, isTerminator = 1, hasSideEffects = 0,
+ Defs = [PC, LC0, LC1], Uses = [SA0, SA1, LC0, LC1] in {
+def ENDLOOP01 : Endloop<(outs), (ins b30_2Imm:$offset),
+ ":endloop01",
+ []>;
+}
+
let isExtendable = 1, isExtentSigned = 1, opExtentBits = 9, opExtentAlign = 2,
opExtendable = 0, hasSideEffects = 0 in
class LOOP_iBase<string mnemonic, InstHexagon rootInst>
Modified: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp?rev=328870&r1=328869&r2=328870&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp Fri Mar 30 08:29:47 2018
@@ -69,16 +69,17 @@ void HexagonInstPrinter::printInst(const
OS << "\n";
}
- auto Separator = "";
if (HexagonMCInstrInfo::isInnerLoop(*MI)) {
- OS << Separator;
- Separator = " ";
- MCInst ME;
- ME.setOpcode(Hexagon::ENDLOOP0);
- printInstruction(&ME, OS);
- }
- if (HexagonMCInstrInfo::isOuterLoop(*MI)) {
- OS << Separator;
+ if (HexagonMCInstrInfo::isOuterLoop(*MI)) {
+ MCInst ME;
+ ME.setOpcode(Hexagon::ENDLOOP01);
+ printInstruction(&ME, OS);
+ } else {
+ MCInst ME;
+ ME.setOpcode(Hexagon::ENDLOOP0);
+ printInstruction(&ME, OS);
+ }
+ } else if (HexagonMCInstrInfo::isOuterLoop(*MI)) {
MCInst ME;
ME.setOpcode(Hexagon::ENDLOOP1);
printInstruction(&ME, OS);
Modified: llvm/trunk/test/MC/Hexagon/capitalizedEndloop.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Hexagon/capitalizedEndloop.s?rev=328870&r1=328869&r2=328870&view=diff
==============================================================================
--- llvm/trunk/test/MC/Hexagon/capitalizedEndloop.s (original)
+++ llvm/trunk/test/MC/Hexagon/capitalizedEndloop.s Fri Mar 30 08:29:47 2018
@@ -11,6 +11,10 @@
{ R0 = mpyi(R0,R0) } : ENDLOOP1
{ R0 = mpyi(R0,R0) }:endloop1
+ { R0 = mpyi(R0,R0) } : endloop01
+ { R0 = mpyi(R0,R0) } : ENDLOOP01
+ { R0 = mpyi(R0,R0) }:endloop01
+
{ R0 = mpyi(R0,R0) } : endloop0 : endloop1
{ R0 = mpyi(R0,R0) } : ENDLOOP0 : ENDLOOP1
{ R0 = mpyi(R0,R0) }:endloop0:endloop1
@@ -22,8 +26,11 @@
# CHECK: :endloop1
# CHECK: :endloop1
# CHECK: :endloop1
-# CHECK: :endloop0 :endloop1
-# CHECK: :endloop0 :endloop1
-# CHECK: :endloop0 :endloop1
+# CHECK: :endloop01
+# CHECK: :endloop01
+# CHECK: :endloop01
+# CHECK: :endloop01
+# CHECK: :endloop01
+# CHECK: :endloop01
More information about the llvm-commits
mailing list