diff options
author | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2014-01-08 06:14:52 +0000 |
---|---|---|
committer | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2014-01-08 06:14:52 +0000 |
commit | b3b7c389831d063c2f3058ac272517b2d68962b9 (patch) | |
tree | 4f4866810894dfe819777c5fbdd9363fcf3f15b9 /llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp | |
parent | 173c69f2267594d2dbba0bde2a81e55c8e494987 (diff) | |
download | bcm5719-llvm-b3b7c389831d063c2f3058ac272517b2d68962b9.tar.gz bcm5719-llvm-b3b7c389831d063c2f3058ac272517b2d68962b9.zip |
[Sparc] Add support for parsing branch instructions and conditional moves.
llvm-svn: 198738
Diffstat (limited to 'llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp')
-rw-r--r-- | llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp index 8ae10c801cd..cc6c983f585 100644 --- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp +++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp @@ -537,9 +537,29 @@ SparcAsmParser::parseSparcAsmOperand(SparcOperand *&Op) Parser.Lex(); // Eat the '%'. unsigned RegNo; if (matchRegisterName(Parser.getTok(), RegNo, false, false)) { + StringRef name = Parser.getTok().getString(); Parser.Lex(); // Eat the identifier token. E = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1); - Op = SparcOperand::CreateReg(RegNo, SparcOperand::rk_None, S, E); + switch (RegNo) { + default: + Op = SparcOperand::CreateReg(RegNo, SparcOperand::rk_None, S, E); + break; + case Sparc::Y: + Op = SparcOperand::CreateToken("%y", S); + break; + + case Sparc::ICC: + if (name == "xcc") + Op = SparcOperand::CreateToken("%xcc", S); + else + Op = SparcOperand::CreateToken("%icc", S); + break; + + case Sparc::FCC: + assert(name == "fcc0" && "Cannot handle %fcc other than %fcc0 yet"); + Op = SparcOperand::CreateToken("%fcc0", S); + break; + } break; } if (matchSparcAsmModifiers(EVal, E)) { |