[PATCH] Add support for armv6k subtarget

Vinicius Tinti viniciustinti at gmail.com
Sat Mar 7 19:36:36 PST 2015

In http://reviews.llvm.org/D8126#135991, @rengolin wrote:

> Apart from my silly comment, looks good. I'd like Tim to have a look as well, since he has a better eye than I do for these things.

Right. I believe that there is more things to do but I would prefer to make small steps first and fix other things later.

For now this patch fixes arm1176jz-s, arm1176jzf-s and armv6k.

Comment at: include/llvm/Support/ARMBuildAttributes.h:102
@@ -101,4 +101,3 @@
   v6       = 6,   // e.g. ARM1136J_S
-  v6KZ     = 7,   // e.g. ARM1176JZ_S
-  v6T2     = 8,   // e.g. ARM1156T2F_S
-  v6K      = 9,   // e.g. ARM1136J_S
+  v6KZ     = 7,   // e.g. -
+  v6T2     = 8,   // e.g. ARM1156T2_S
rengolin wrote:
> That's actually ARM1176JZ_S, pure ARMv6K is more like MPCore. Ie. keep the comment. :)
The problem is that we have many subtargets and many processors and it is still fuzzy how to link them:

Processors (ARM11):
- arm1126j (never seen but there is one reference on ARM11 manual)
- arm1136j-s (revision 0)
- arm1136jf-s (revision 0)
- arm1136j-s (revision 1)
- arm1136jf-s (revision 1)
- arm1156t2-s
- arm1156t2f-s
- arm1176jz-s
- arm1176jzf-s
- mpcorenovfp
- mpcore

- v6
- v6j
- v6k
- v6z
- v6kz
- v6t2
- v6core <== guessing a name

My guess of the best map:
- v6 -> arm1126j arm1136j-s (r0) arm1136jf-s (r0)
- v6j -> alias for v6
- v6k -> arm1136j-s (r1) arm1136jf-s (r1); inherits v6; adds HINT 
- v6z -> arm1176jz-s arm1176jzf-s; inherits v6k; adds TRUSTZONE
- v6kz -> alias for v6z
- v6t2 -> arm1156t2-s arm1156t2f-s; inherits v6k; adds THUMB2
- v6core -> mpcorenovfp mpcore; inherits v6k; adds MULTICORE

This does not reflect this patch because:

- I'm ignoring that a arm1136 revisions can be v6k. Hence I'm being really strict in keeping the old behavior of LLVM that is to not allow HINT on this arm1136.
- There is no support for MULTICORE and TRUSTZONE on the backend or I am afraid to use them and break things. Therefore I am merging mpcore and arm1176 as one being.

What do you think? For now I will do as you suggested but would be great to organize this later.



More information about the llvm-commits mailing list