MC: Fix .octa output for APInts with BitWidth > 128

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200615 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Woodhouse 2014-02-01 16:52:33 +00:00
parent 075a90a913
commit 2d53a37573
2 changed files with 5 additions and 4 deletions

View File

@ -2335,7 +2335,8 @@ bool AsmParser::parseDirectiveOctaValue() {
hi = 0; hi = 0;
lo = IntValue.getZExtValue(); lo = IntValue.getZExtValue();
} else if (IntValue.isIntN(128)) { } 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(); lo = IntValue.getLoBits(64).getZExtValue();
} else } else
return Error(ExprLoc, "literal value out of range for directive"); return Error(ExprLoc, "literal value out of range for directive");

View File

@ -71,13 +71,13 @@ TEST8:
# CHECK: .long 2097153 # CHECK: .long 2097153
TEST9: TEST9:
.octa 0x1234567812345678abcdef, 12345678901234567890123456789 .octa 0x1234567812345678abcdef, 340282366920938463463374607431768211455
.octa 0b00111010010110100101101001011010010110100101101001011010010110100101101001011010010110100101101001011010010110100101101001011010 .octa 0b00111010010110100101101001011010010110100101101001011010010110100101101001011010010110100101101001011010010110100101101001011010
# CHECK: TEST9 # CHECK: TEST9
# CHECK: .quad 8652035380128501231 # CHECK: .quad 8652035380128501231
# CHECK: .quad 1193046 # CHECK: .quad 1193046
# CHECK: .quad 5097733592125636885 # CHECK: .quad -1
# CHECK: .quad 669260594 # CHECK: .quad -1
# CHECK: .quad 6510615555426900570 # CHECK: .quad 6510615555426900570
# CHECK: .quad 4204772546213206618 # CHECK: .quad 4204772546213206618