diff options
| author | David Woodhouse <dwmw2@infradead.org> | 2014-02-01 16:52:33 +0000 |
|---|---|---|
| committer | David Woodhouse <dwmw2@infradead.org> | 2014-02-01 16:52:33 +0000 |
| commit | 6c9a6f9b3d82f041cc6ae3997775bac74df4cbc4 (patch) | |
| tree | 658ee663c0cccb3a7be3a66bea747874c3f3239a /llvm | |
| parent | d6de0d99c5878ab76e72b7d1fccdc25dda4b9623 (diff) | |
| download | bcm5719-llvm-6c9a6f9b3d82f041cc6ae3997775bac74df4cbc4.tar.gz bcm5719-llvm-6c9a6f9b3d82f041cc6ae3997775bac74df4cbc4.zip | |
MC: Fix .octa output for APInts with BitWidth > 128
llvm-svn: 200615
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 3 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/directive_values.s | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 37b759e64f5..63a00fedfa7 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -2335,7 +2335,8 @@ bool AsmParser::parseDirectiveOctaValue() { hi = 0; lo = IntValue.getZExtValue(); } else if (IntValue.isIntN(128)) { - hi = IntValue.getHiBits(64).getZExtValue(); + // It might actually have more than 128 bits, but the top ones are zero. + hi = IntValue.getHiBits(IntValue.getBitWidth() - 64).getZExtValue(); lo = IntValue.getLoBits(64).getZExtValue(); } else return Error(ExprLoc, "literal value out of range for directive"); diff --git a/llvm/test/MC/AsmParser/directive_values.s b/llvm/test/MC/AsmParser/directive_values.s index c4aea51ca50..6941a1a5940 100644 --- a/llvm/test/MC/AsmParser/directive_values.s +++ b/llvm/test/MC/AsmParser/directive_values.s @@ -71,13 +71,13 @@ TEST8: # CHECK: .long 2097153 TEST9: - .octa 0x1234567812345678abcdef, 12345678901234567890123456789 + .octa 0x1234567812345678abcdef, 340282366920938463463374607431768211455 .octa 0b00111010010110100101101001011010010110100101101001011010010110100101101001011010010110100101101001011010010110100101101001011010 # CHECK: TEST9 # CHECK: .quad 8652035380128501231 # CHECK: .quad 1193046 -# CHECK: .quad 5097733592125636885 -# CHECK: .quad 669260594 +# CHECK: .quad -1 +# CHECK: .quad -1 # CHECK: .quad 6510615555426900570 # CHECK: .quad 4204772546213206618 |

