[llvm-commits] [llvm] r141446 - in /llvm/trunk: lib/Target/ARM/ARMInstrFormats.td lib/Target/ARM/ARMInstrNEON.td lib/Target/ARM/AsmParser/ARMAsmParser.cpp lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp lib/Target/ARM/InstPrinter/ARMInstPrinter.h t

Jim Grosbach grosbach at apple.com
Thu Jan 26 08:00:53 PST 2012


On Jan 25, 2012, at 8:44 PM, NAKAMURA Takumi wrote:

> Jim, excuse me to comment to an old commit. ;)
> 
No problem at all.

> 2011/10/8 Jim Grosbach <grosbach at apple.com>:
>> Author: grosbach
>> Date: Fri Oct  7 18:56:00 2011
>> New Revision: 141446
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=141446&view=rev
>> Log:
>> ARM NEON assembly parsing and encoding for VDUP(scalar).
>> 
>> Modified:
>>    llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
>>    llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
>>    llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
>>    llvm/trunk/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
>>    llvm/trunk/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
>>    llvm/trunk/test/MC/ARM/neont2-dup-encoding.s
>>    llvm/trunk/utils/TableGen/EDEmitter.cpp
> 
>> --- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Fri Oct  7 18:56:00 2011
>> @@ -1815,6 +1903,37 @@
>>     Operands.push_back(ARMOperand::CreateToken(ExclaimTok.getString(),
>>                                                ExclaimTok.getLoc()));
>>     Parser.Lex(); // Eat exclaim token
>> +    return false;
>> +  }
>> +
>> +  // Also check for an index operand. This is only legal for vector registers,
>> +  // but that'll get caught OK in operand matching, so we don't need to
>> +  // explicitly filter everything else out here.
>> +  if (Parser.getTok().is(AsmToken::LBrac)) {
>> +    SMLoc SIdx = Parser.getTok().getLoc();
>> +    Parser.Lex(); // Eat left bracket token.
>> +
>> +    const MCExpr *ImmVal;
>> +    SMLoc ExprLoc = Parser.getTok().getLoc();
>> +    if (getParser().ParseExpression(ImmVal))
>> +      return MatchOperand_ParseFail;
>> +    const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(ImmVal);
>> +    if (!MCE) {
>> +      TokError("immediate value expected for vector index");
>> +      return MatchOperand_ParseFail;
>> +    }
>> +
>> +    SMLoc E = Parser.getTok().getLoc();
>> +    if (Parser.getTok().isNot(AsmToken::RBrac)) {
>> +      Error(E, "']' expected");
>> +      return MatchOperand_ParseFail;
>> +    }
>> +
>> +    Parser.Lex(); // Eat right bracket token.
>> +
>> +    Operands.push_back(ARMOperand::CreateVectorIndex(MCE->getValue(),
>> +                                                     SIdx, E,
>> +                                                     getContext()));
>>   }
>> 
>>   return false;
> 
> I think "MatchOperand_ParseFail" would be incompatible against "bool".
> I have found ms cl.exe warns about it.
> 

Ack! Absolutely right. Probably a copy/paste error. Fixed in r149062.

Thanks for the review!

> ...Takumi




More information about the llvm-commits mailing list