PATCH for PR18045 (X86 inst selection failure)

Stepan Dyatkovskiy stpworld at narod.ru
Tue Dec 17 11:38:00 PST 2013


r197492
-Stepan
Quentin Colombet wrote:
> LGTM.
>
> Thanks,
> -Quentin
>
> On Dec 16, 2013, at 3:22 AM, Stepan Dyatkovskiy <stpworld at narod.ru
> <mailto:stpworld at narod.ru>> wrote:
>
>> ping
>> Stepan Dyatkovskiy wrote:
>>> Hello,
>>>
>>> Please find fix + test-case in attachment.
>>>
>>> Short description of PR18045 issue:
>>> For X86 machines with sse < sse4.1 we got failures for some
>>> particular load/store vector sequences:
>>>
>>> $ clang-trunk -m32 -O2 test-case.c
>>> fatal error: error in backend: Cannot select: 0x4200920: v4i32,ch = load
>>> 0x41d6ab0, 0x4205850,
>>>       0x41dcb10<LD16[getelementptr inbounds ([4 x i32]* @e, i32 0, i32
>>> 0)](align=4)> [ORD=82]
>>>       [ID=58]
>>>   0x4205850: i32 = X86ISD::Wrapper 0x41d5490 [ORD=26] [ID=43]
>>>     0x41d5490: i32 = TargetGlobalAddress<[4 x i32]* @e> 0 [ORD=26]
>>> [ID=23]
>>>   0x41dcb10: i32 = undef [ID=2]
>>>
>>> The reason is that EltsFromConsecutiveLoads could emit such load
>>> instruction both before and after legalize stage. Though this
>>> instruction is not legal for machines with SSSE3 and lower.
>>>
>>> The fix: In EltsFromConsecutiveLoads, if we have passed legalize stage,
>>> we check whether nodes it emits are legal.
>>>
>>> -Stepan
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>




More information about the llvm-commits mailing list