On Wednesday, 10 February 2016 at 17:03:35 UTC, Dan Olson wrote:
I noticed that even thumb-1 has different instruction set based on arm architecture.
Yes. I did a little more research into this, as it peeked my curiosity. Take a look at this Wikipedia entry (https://en.wikipedia.org/wiki/ARM_Cortex-M#Instruction_sets). I haven't verified this information independently, but there you can see that although the M0 and M1 support Thumb-1, they don't support all of it. And worse still, they additionally support some of Thumb-2. So "Thumb", "Thumb-1", and "Thumb-2" without the architecture/profile are all ambiguous. As far as I can tell the only true indication of the supported instruction set is the architecture (ARMv6, ARMv7, ARMv8, etc...), the profile (A, R, and M) etc.. AND the target instruction set (ARM "A32", Thumb "T32", or A64) -- all three of them together.
Probably best approach for me is to just define ARM_Thumb1 on the command line for my current project.
If you make versions for the architecture/profile (ARMv6, ARMv7-A, ARMv7-M, ARMv7E-M, etc...) I think you only need to disambiguate the cases where an architecture/profile supports both Thumb and ARM -- like the A profile, if I remember correctly.
So, I still only see the need for one ARM_Thumb instruction set identifier, but that could very well be a limitation of my own understanding, and a lack of knowledge about your current project.
Mike