[llvm-dev] TableGen GlobalISelEmitter unable to handle trivial pattern

Daniel Sanders via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 1 16:00:10 PDT 2019



> On Jul 1, 2019, at 13:17, Tom Stellard via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> On 06/30/2019 03:08 PM, Matt Arsenault via llvm-dev wrote:
>> Hi,
>> 
>> I’m looking at some patterns which failed to import, and when I reduced them I was surprised to find a variety of complicated patterns successfully import, but the most trivial patterns I can come up with fail. If I add this pattern to test/TableGen/GlobalISelEmitter.td:
>> 
>> def : Pat <
>>  (mul i32:$y, i32:$x),
>>  (MUL $x, $y)
>>> ;
>> 
>> test/TableGen/GlobalISelEmitter.td:1196:1: warning: Skipped pattern: Dst pattern child is an unsupported kind
>> def : Pat <
>> 
>> What am I missing?
> 
> I believe that the importer requires that you use register classes instead of types
> for the operands.
> 
> -Tom

That's right. It needs to figure out which register bank to check for in the matcher and it can infer this from the register classes but there isn't enough information if it's only given the type.

>> -Matt
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> 
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list