Disp = isPlus ? ValExpr : MCConstantExpr::Create(0-Val, getContext());
} else
return ErrorOperand(PlusLoc, "unexpected token after +");
- } else if (getLexer().is(AsmToken::Identifier))
- ParseRegister(IndexReg, Start, End);
+ } else if (getLexer().is(AsmToken::Identifier)) {
+ // This could be an index registor or a displacement expression.
+ End = Parser.getTok().getLoc();
+ if (!IndexReg)
+ ParseRegister(IndexReg, Start, End);
+ else if (getParser().ParseExpression(Disp, End)) return 0;
+ }
}
if (getLexer().isNot(AsmToken::RBrac))
// CHECK: fld %st(0)
fld ST(0)
// CHECK: movl %fs:(%rdi), %eax
-mov EAX, DWORD PTR FS:[RDI]
+ mov EAX, DWORD PTR FS:[RDI]
// CHECK: leal (,%rdi,4), %r8d
-lea R8D, DWORD PTR [4*RDI]
+ lea R8D, DWORD PTR [4*RDI]
+// CHECK: movl _fnan(,%ecx,4), %ecx
+ mov ECX, DWORD PTR [4*ECX + _fnan]
ret