[llvm-commits] [FIX+regression-test] PR13617: LLVM+Clang emits movw instrucionts with -march=armv6zk

Stepan Dyatkovskiy stpworld at narod.ru
Wed Sep 5 03:13:52 PDT 2012


ping.
Stepan Dyatkovskiy wrote:
> ping...
> Stepan Dyatkovskiy wrote:
>> ping.
>> Stepan Dyatkovskiy wrote:
>>> Hi all!
>>>
>>> The bug is fired when dag-to-dag isel meets 'add' instruction with
>>> second operand that is negative number less than -256. E.g.:
>>> add %var, -1000
>>>
>>> ARM dag-to-dag instruction selector matches the pattern that emits
>>> (sub %var (MOVi16 Rd, 1000))
>>>
>>> After fast TableGen learning, I found that it ignores instruction
>>> predicates for patterns (ARMPat, ARMV6Pat and so on) while generating
>>> MatcherTable. So it ignores restrictions defined for MOVi16 instruction
>>> (ARMv6t2 and higher).
>>>
>>> I also found that for several patterns this behaviour compensated by
>>> adding 'Requires' predicate explicitly. So, I did the same in this
>>> patch. Please find the patch in attachment for review.
>>>
>>> -Stepan.
>>
>




More information about the llvm-commits mailing list