mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-29 07:53:33 +00:00
Added support symbolic floating point constants in the MC assembler for Infinity
and Nans with the same strings as GAS supports. rdar://8673024 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128488 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5726005e4f
commit
360d8d7a02
@ -1552,13 +1552,21 @@ bool AsmParser::ParseDirectiveRealValue(const fltSemantics &Semantics) {
|
||||
Lex();
|
||||
|
||||
if (getLexer().isNot(AsmToken::Integer) &&
|
||||
getLexer().isNot(AsmToken::Real))
|
||||
getLexer().isNot(AsmToken::Real) &&
|
||||
getLexer().isNot(AsmToken::Identifier))
|
||||
return TokError("unexpected token in directive");
|
||||
|
||||
// Convert to an APFloat.
|
||||
APFloat Value(Semantics);
|
||||
if (Value.convertFromString(getTok().getString(),
|
||||
APFloat::rmNearestTiesToEven) ==
|
||||
StringRef IDVal = getTok().getString();
|
||||
if (getLexer().is(AsmToken::Identifier)) {
|
||||
if (!IDVal.compare_lower("infinity") || !IDVal.compare_lower("inf"))
|
||||
Value = APFloat::getInf(Semantics);
|
||||
else if (!IDVal.compare_lower("nan"))
|
||||
Value = APFloat::getNaN(Semantics, false, ~0);
|
||||
else
|
||||
return TokError("invalid floating point literal");
|
||||
} else if (Value.convertFromString(IDVal, APFloat::rmNearestTiesToEven) ==
|
||||
APFloat::opInvalidOp)
|
||||
return TokError("invalid floating point literal");
|
||||
if (IsNeg)
|
||||
|
@ -6,6 +6,12 @@
|
||||
# CHECK: .long 1082549862
|
||||
.single 1.2455, +2.3, 3, + 4.2
|
||||
|
||||
# CHECK: .long 2139095040
|
||||
.single InFinIty
|
||||
|
||||
# CHECK: .long 2147483647
|
||||
.single nAN
|
||||
|
||||
# CHECK: .long 1067928519
|
||||
.float 1.307
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user