diff options
author | Tim Northover <tnorthover@apple.com> | 2014-04-24 12:56:27 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2014-04-24 12:56:27 +0000 |
commit | 597ccb200c06a76d2f9b337f20bcd24950d3135c (patch) | |
tree | b79f588897d68f956fd554fba25932aaffe2b3c8 /llvm/lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp | |
parent | 3f27673e40e500dab12f9ddd4079cfe1b05597e9 (diff) | |
download | bcm5719-llvm-597ccb200c06a76d2f9b337f20bcd24950d3135c.tar.gz bcm5719-llvm-597ccb200c06a76d2f9b337f20bcd24950d3135c.zip |
AArch64/ARM64: add support for :abs_gN_s: MOVZ modifiers
We only need assembly support, so it's fairly easy.
llvm-svn: 207108
Diffstat (limited to 'llvm/lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp')
-rw-r--r-- | llvm/lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp b/llvm/lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp index 7efc4572bda..f9d3c8b898a 100644 --- a/llvm/lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp +++ b/llvm/lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp @@ -610,6 +610,7 @@ public: bool isMovZSymbolG2() const { static ARM64MCExpr::VariantKind Variants[] = { ARM64MCExpr::VK_ABS_G2, + ARM64MCExpr::VK_ABS_G2_S, ARM64MCExpr::VK_TPREL_G2, ARM64MCExpr::VK_DTPREL_G2 }; return isMovWSymbol(Variants); @@ -617,6 +618,7 @@ public: bool isMovZSymbolG1() const { static ARM64MCExpr::VariantKind Variants[] = { ARM64MCExpr::VK_ABS_G1, + ARM64MCExpr::VK_ABS_G1_S, ARM64MCExpr::VK_GOTTPREL_G1, ARM64MCExpr::VK_TPREL_G1, ARM64MCExpr::VK_DTPREL_G1, }; @@ -625,11 +627,17 @@ public: bool isMovZSymbolG0() const { static ARM64MCExpr::VariantKind Variants[] = { ARM64MCExpr::VK_ABS_G0, + ARM64MCExpr::VK_ABS_G0_S, ARM64MCExpr::VK_TPREL_G0, ARM64MCExpr::VK_DTPREL_G0 }; return isMovWSymbol(Variants); } + bool isMovKSymbolG3() const { + static ARM64MCExpr::VariantKind Variants[] = { ARM64MCExpr::VK_ABS_G3 }; + return isMovWSymbol(Variants); + } + bool isMovKSymbolG2() const { static ARM64MCExpr::VariantKind Variants[] = { ARM64MCExpr::VK_ABS_G2_NC }; return isMovWSymbol(Variants); @@ -2985,10 +2993,13 @@ bool ARM64AsmParser::parseSymbolicImmVal(const MCExpr *&ImmVal) { .Case("lo12", ARM64MCExpr::VK_LO12) .Case("abs_g3", ARM64MCExpr::VK_ABS_G3) .Case("abs_g2", ARM64MCExpr::VK_ABS_G2) + .Case("abs_g2_s", ARM64MCExpr::VK_ABS_G2_S) .Case("abs_g2_nc", ARM64MCExpr::VK_ABS_G2_NC) .Case("abs_g1", ARM64MCExpr::VK_ABS_G1) + .Case("abs_g1_s", ARM64MCExpr::VK_ABS_G1_S) .Case("abs_g1_nc", ARM64MCExpr::VK_ABS_G1_NC) .Case("abs_g0", ARM64MCExpr::VK_ABS_G0) + .Case("abs_g0_s", ARM64MCExpr::VK_ABS_G0_S) .Case("abs_g0_nc", ARM64MCExpr::VK_ABS_G0_NC) .Case("dtprel_g2", ARM64MCExpr::VK_DTPREL_G2) .Case("dtprel_g1", ARM64MCExpr::VK_DTPREL_G1) |