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

Stepan Dyatkovskiy stpworld at narod.ru
Wed Aug 29 07:00:50 PDT 2012


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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr13617.patch
Type: text/x-patch
Size: 1862 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120829/3c7bb3d5/attachment.bin>


More information about the llvm-commits mailing list