[llvm-commits] Release-blocker-fix: PR13617 : LLVM+Clang emits movw instructionts with -march=armv6zk

Stepan Dyatkovskiy stpworld at narod.ru
Wed Sep 12 00:23:34 PDT 2012


Take #2.

I relaunched the thread. This bug is marked as release blocker... and 
the patch is pretty simple and it sitting for a few weeks without review 
:-( Please find it in attachment.

Some notes:

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, -257

ARM dag-to-dag instruction selector matches the pattern that emits
(sub %var (MOVi16 Rd, 257))

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 in .td 
files by adding 'Requires' predicate explicitly. So, I did the same in 
this patch.

Thanks!

-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/20120912/504cb93c/attachment.bin>


More information about the llvm-commits mailing list