William Dillon via llvm-dev
2016-Jan-08 18:55 UTC
[llvm-dev] Diff to add ARMv6L to Target parser
Thanks for the clarifications, Bob!
I’ve spent some time with the head of the llvm.org repo, and I now understand a
lot better what Renato and Tim were talking about re. the architecture aliases.
The patch to add v6l, therefore, seems simple enough. I haven’t been able to
test it in my usual flow, because that involves the whole swift stack. I’m
considering creating a program that links to llvm to test the behavior.
Index: lib/Support/TargetParser.cpp
==================================================================---
lib/Support/TargetParser.cpp (revision 257090)
+++ lib/Support/TargetParser.cpp (working copy)
@@ -401,6 +401,7 @@
.Case("v5", "v5t")
.Case("v5e", "v5te")
.Case("v6j", "v6")
+ .Case("v6l", "v6")
.Case("v6hl", "v6k")
.Cases("v6m", "v6sm", "v6s-m",
"v6-m")
.Cases("v6z", "v6zk", "v6kz")
Index: unittests/ADT/TripleTest.cpp
==================================================================---
unittests/ADT/TripleTest.cpp (revision 257090)
+++ unittests/ADT/TripleTest.cpp (working copy)
@@ -851,6 +851,10 @@
EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
}
{
+ llvm::Triple Triple("armv6l-unknown-eabi");
+ EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
+ }
+ {
llvm::Triple Triple("armv6j-unknown-eabi");
EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
}
I looked into the tests (and unit tests), and found that perhaps the most
appropriate test to add is in the determination of the cpu type from the
architecture version. I verified that ARM1136 is the base for ARM11, which is
all that can be assumed given armv6. That jives with the existing armv6
architecture test. I added another copy of that for armv6l. I assume that this
will sufficiently test whether armv6l is aliasing correctly to armv6.
Anyway, thanks again.
- Will
> On Jan 8, 2016, at 10:16 AM, Bob Wilson <bob.wilson at apple.com>
wrote:
>
>
>> On Jan 7, 2016, at 2:21 PM, Eric Christopher <echristo at gmail.com
<mailto:echristo at gmail.com>> wrote:
>>
>>
>>
>> On Thu, Jan 7, 2016 at 2:17 PM William Dillon <william at
housedillon.com <mailto:william at housedillon.com>> wrote:
>> Yikes!!
>>
>> It looks like things have changed considerably! I’ll need to start
this from scratch. A few questions, though:
>>
>> I have a goal for this to be in the Swift 2.2 release, is that
feasible?
>
> Maybe. We’re using an older version of llvm/clang for Swift 2.2 to give us
a stable platform to work with, but if you get a change into trunk first, and if
it is relatively low-risk, we could consider back-porting it to the release
branch for Swift 2.2. We do want to be careful to avoid destabilizing the
branch, though, and the criteria for accepting changes will only get more strict
over time.
>
>> If so, will the current LLVM head end up in the branch for 2.2 when
that time comes?
>
> No. We already created the llvm/clang release branches to be used with
Swift 2.2 to give us a longer time to stabilize them. We do not plan to rebranch
again from trunk for Swift 2.2.
>
>>
>> Given that the coordination costs to attempt any kind of change in
swift that requires a change in LLVM are so high, I’m tempted to keep the logic
of stripping the ‘l’s from armv7l and armv6l inside swift itself. It really
seems like the wrong approach, but sometimes the wrong answer is the best
answer, depending on the circumstances.
>>
>>
>> For all of these questions you should talk to Bob Wilson who is the
llvm release manager for the swift project.
>>
>> -eric
>>
>> - Will
>>
>>> On Jan 7, 2016, at 10:05 AM, Eric Christopher <echristo at
gmail.com <mailto:echristo at gmail.com>> wrote:
>>>
>>> The swift repository is old and many thousand revisions behind
llvm. Please don't use it as a base when submitting to the llvm project.
>>>
>>>
>>> On Thu, Jan 7, 2016, 10:02 AM William Dillon <william at
housedillon.com <mailto:william at housedillon.com>> wrote:
>>> Oops, I neglected to reply-all….
>>>
>>> The current stable branch at github still has it:
>>>
>>>
https://github.com/apple/swift-llvm/blob/stable/include/llvm/Support/ARMTargetParser.def#L106
<https://github.com/apple/swift-llvm/blob/stable/include/llvm/Support/ARMTargetParser.def#L106>
>>>
>>> Should I get the head of the non-swift repository and generate a
new diff?
>>>
>>> Also, I suspect that it’s not a good idea to have armv6l map to
armv6k, because that seems like quite an assumption to make. Clearly, armv6 sub
architectures that aren’t v6k will still be v6l in linux. (provided they’re
little-endian).
>>> I’ve already made that change, and it would be included in any
revised diff that I send out.
>>>
>>> Thanks,
>>> - Will
>>>
>>>> On Jan 6, 2016, at 10:02 AM, Artyom Skrobov <Artyom.Skrobov
at arm.com <mailto:Artyom.Skrobov at arm.com>> wrote:
>>>>
>>>> William, what revision of LLVM is your patch based on?
>>>>
>>>> The trunk hasn't had ARM_ARCH("armv6hl") since
r252903 (Nov 12th)
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: William Dillon [mailto:william at housedillon.com
<mailto:william at housedillon.com>]
>>>> Sent: 06 January 2016 17:55
>>>> To: Renato Golin
>>>> Cc: Tim Northover; LLVM Dev; nd; Artyom Skrobov; Daniel
Sanders; Eric Christopher
>>>> Subject: Re: [llvm-dev] Diff to add ARMv6L to Target parser
>>>>
>>>> Taking the suggestions of the group under consideration, I’ve
generated a new diff. The thing to note is that armv6l is now treated
identically to armv6hl. I’ve also added a unit test.
>>>> This seems to me to be the least invasive method, and holds to
existing conventions as closely as possible.
>>>>
>>>> Thoughts?
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20160108/973da779/attachment.html>
Artyom Skrobov via llvm-dev
2016-Jan-11 09:37 UTC
[llvm-dev] Diff to add ARMv6L to Target parser
Hello William – I have a minor comment on your patch:
.Case("v6j", "v6")
.Case("v6l", "v6")
may be written more concisely as
.Cases("v6j", "v6l", "v6")
From: William Dillon [mailto:william at housedillon.com]
Sent: 08 January 2016 18:56
To: Bob Wilson
Cc: Eric Christopher; Artyom Skrobov; Renato Golin; Tim Northover; LLVM Dev; nd;
Daniel Sanders; Frederic Riss
Subject: Re: [llvm-dev] Diff to add ARMv6L to Target parser
Thanks for the clarifications, Bob!
I’ve spent some time with the head of the llvm.org<http://llvm.org> repo,
and I now understand a lot better what Renato and Tim were talking about re. the
architecture aliases. The patch to add v6l, therefore, seems simple enough. I
haven’t been able to test it in my usual flow, because that involves the whole
swift stack. I’m considering creating a program that links to llvm to test the
behavior.
Index: lib/Support/TargetParser.cpp
==================================================================---
lib/Support/TargetParser.cpp (revision 257090)
+++ lib/Support/TargetParser.cpp (working copy)
@@ -401,6 +401,7 @@
.Case("v5", "v5t")
.Case("v5e", "v5te")
.Case("v6j", "v6")
+ .Case("v6l", "v6")
.Case("v6hl", "v6k")
.Cases("v6m", "v6sm", "v6s-m",
"v6-m")
.Cases("v6z", "v6zk", "v6kz")
Index: unittests/ADT/TripleTest.cpp
==================================================================---
unittests/ADT/TripleTest.cpp (revision 257090)
+++ unittests/ADT/TripleTest.cpp (working copy)
@@ -851,6 +851,10 @@
EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
}
{
+ llvm::Triple Triple("armv6l-unknown-eabi");
+ EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
+ }
+ {
llvm::Triple Triple("armv6j-unknown-eabi");
EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
}
I looked into the tests (and unit tests), and found that perhaps the most
appropriate test to add is in the determination of the cpu type from the
architecture version. I verified that ARM1136 is the base for ARM11, which is
all that can be assumed given armv6. That jives with the existing armv6
architecture test. I added another copy of that for armv6l. I assume that this
will sufficiently test whether armv6l is aliasing correctly to armv6.
Anyway, thanks again.
- Will
On Jan 8, 2016, at 10:16 AM, Bob Wilson <bob.wilson at
apple.com<mailto:bob.wilson at apple.com>> wrote:
On Jan 7, 2016, at 2:21 PM, Eric Christopher <echristo at
gmail.com<mailto:echristo at gmail.com>> wrote:
On Thu, Jan 7, 2016 at 2:17 PM William Dillon <william at
housedillon.com<mailto:william at housedillon.com>> wrote:
Yikes!!
It looks like things have changed considerably! I’ll need to start this from
scratch. A few questions, though:
I have a goal for this to be in the Swift 2.2 release, is that feasible?
Maybe. We’re using an older version of llvm/clang for Swift 2.2 to give us a
stable platform to work with, but if you get a change into trunk first, and if
it is relatively low-risk, we could consider back-porting it to the release
branch for Swift 2.2. We do want to be careful to avoid destabilizing the
branch, though, and the criteria for accepting changes will only get more strict
over time.
If so, will the current LLVM head end up in the branch for 2.2 when that time
comes?
No. We already created the llvm/clang release branches to be used with Swift 2.2
to give us a longer time to stabilize them. We do not plan to rebranch again
from trunk for Swift 2.2.
Given that the coordination costs to attempt any kind of change in swift that
requires a change in LLVM are so high, I’m tempted to keep the logic of
stripping the ‘l’s from armv7l and armv6l inside swift itself. It really seems
like the wrong approach, but sometimes the wrong answer is the best answer,
depending on the circumstances.
For all of these questions you should talk to Bob Wilson who is the llvm release
manager for the swift project.
-eric
- Will
On Jan 7, 2016, at 10:05 AM, Eric Christopher <echristo at
gmail.com<mailto:echristo at gmail.com>> wrote:
The swift repository is old and many thousand revisions behind llvm. Please
don't use it as a base when submitting to the llvm project.
On Thu, Jan 7, 2016, 10:02 AM William Dillon <william at
housedillon.com<mailto:william at housedillon.com>> wrote:
Oops, I neglected to reply-all….
The current stable branch at github still has it:
https://github.com/apple/swift-llvm/blob/stable/include/llvm/Support/ARMTargetParser.def#L106
Should I get the head of the non-swift repository and generate a new diff?
Also, I suspect that it’s not a good idea to have armv6l map to armv6k, because
that seems like quite an assumption to make. Clearly, armv6 sub architectures
that aren’t v6k will still be v6l in linux. (provided they’re little-endian).
I’ve already made that change, and it would be included in any revised diff that
I send out.
Thanks,
- Will
On Jan 6, 2016, at 10:02 AM, Artyom Skrobov <Artyom.Skrobov at
arm.com<mailto:Artyom.Skrobov at arm.com>> wrote:
William, what revision of LLVM is your patch based on?
The trunk hasn't had ARM_ARCH("armv6hl") since r252903 (Nov 12th)
-----Original Message-----
From: William Dillon [mailto:william at housedillon.com]
Sent: 06 January 2016 17:55
To: Renato Golin
Cc: Tim Northover; LLVM Dev; nd; Artyom Skrobov; Daniel Sanders; Eric
Christopher
Subject: Re: [llvm-dev] Diff to add ARMv6L to Target parser
Taking the suggestions of the group under consideration, I’ve generated a new
diff. The thing to note is that armv6l is now treated identically to armv6hl.
I’ve also added a unit test.
This seems to me to be the least invasive method, and holds to existing
conventions as closely as possible.
Thoughts?
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20160111/0feef7c6/attachment-0001.html>
William Dillon via llvm-dev
2016-Jan-11 20:01 UTC
[llvm-dev] Diff to add ARMv6L to Target parser
Good catch, Thanks.
Here’s the updated patch:
Index: lib/Support/TargetParser.cpp
==================================================================---
lib/Support/TargetParser.cpp (revision 257090)
+++ lib/Support/TargetParser.cpp (working copy)
@@ -400,7 +400,7 @@
return StringSwitch<StringRef>(Arch)
.Case("v5", "v5t")
.Case("v5e", "v5te")
- .Case("v6j", "v6")
+ .Case("v6j", "v6l", "v6")
.Case("v6hl", "v6k")
.Cases("v6m", "v6sm", "v6s-m",
"v6-m")
.Cases("v6z", "v6zk", "v6kz")
Index: unittests/ADT/TripleTest.cpp
==================================================================---
unittests/ADT/TripleTest.cpp (revision 257090)
+++ unittests/ADT/TripleTest.cpp (working copy)
@@ -851,6 +851,10 @@
EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
}
{
+ llvm::Triple Triple("armv6l-unknown-eabi");
+ EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
+ }
+ {
llvm::Triple Triple("armv6j-unknown-eabi");
EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
}
> On Jan 11, 2016, at 1:37 AM, Artyom Skrobov <Artyom.Skrobov at
arm.com> wrote:
>
> Hello William – I have a minor comment on your patch:
>
> .Case("v6j", "v6")
> .Case("v6l", "v6")
>
> may be written more concisely as
>
> .Cases("v6j", "v6l", "v6")
>
>
> From: William Dillon [mailto:william at housedillon.com]
> Sent: 08 January 2016 18:56
> To: Bob Wilson
> Cc: Eric Christopher; Artyom Skrobov; Renato Golin; Tim Northover; LLVM
Dev; nd; Daniel Sanders; Frederic Riss
> Subject: Re: [llvm-dev] Diff to add ARMv6L to Target parser
>
> Thanks for the clarifications, Bob!
>
> I’ve spent some time with the head of the llvm.org <http://llvm.org/>
repo, and I now understand a lot better what Renato and Tim were talking about
re. the architecture aliases. The patch to add v6l, therefore, seems simple
enough. I haven’t been able to test it in my usual flow, because that involves
the whole swift stack. I’m considering creating a program that links to llvm to
test the behavior.
>
> Index: lib/Support/TargetParser.cpp
> ==================================================================> ---
lib/Support/TargetParser.cpp (revision 257090)
> +++ lib/Support/TargetParser.cpp (working copy)
> @@ -401,6 +401,7 @@
> .Case("v5", "v5t")
> .Case("v5e", "v5te")
> .Case("v6j", "v6")
> + .Case("v6l", "v6")
> .Case("v6hl", "v6k")
> .Cases("v6m", "v6sm", "v6s-m",
"v6-m")
> .Cases("v6z", "v6zk", "v6kz")
> Index: unittests/ADT/TripleTest.cpp
> ==================================================================> ---
unittests/ADT/TripleTest.cpp (revision 257090)
> +++ unittests/ADT/TripleTest.cpp (working copy)
> @@ -851,6 +851,10 @@
> EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
> }
> {
> + llvm::Triple Triple("armv6l-unknown-eabi");
> + EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
> + }
> + {
> llvm::Triple Triple("armv6j-unknown-eabi");
> EXPECT_EQ("arm1136jf-s", Triple.getARMCPUForArch());
> }
>
>
> I looked into the tests (and unit tests), and found that perhaps the most
appropriate test to add is in the determination of the cpu type from the
architecture version. I verified that ARM1136 is the base for ARM11, which is
all that can be assumed given armv6. That jives with the existing armv6
architecture test. I added another copy of that for armv6l. I assume that this
will sufficiently test whether armv6l is aliasing correctly to armv6.
>
> Anyway, thanks again.
> - Will
>
> On Jan 8, 2016, at 10:16 AM, Bob Wilson <bob.wilson at apple.com
<mailto:bob.wilson at apple.com>> wrote:
>
>
> On Jan 7, 2016, at 2:21 PM, Eric Christopher <echristo at gmail.com
<mailto:echristo at gmail.com>> wrote:
>
>
>
> On Thu, Jan 7, 2016 at 2:17 PM William Dillon <william at
housedillon.com <mailto:william at housedillon.com>> wrote:
> Yikes!!
>
> It looks like things have changed considerably! I’ll need to start this
from scratch. A few questions, though:
>
> I have a goal for this to be in the Swift 2.2 release, is that feasible?
>
> Maybe. We’re using an older version of llvm/clang for Swift 2.2 to give us
a stable platform to work with, but if you get a change into trunk first, and if
it is relatively low-risk, we could consider back-porting it to the release
branch for Swift 2.2. We do want to be careful to avoid destabilizing the
branch, though, and the criteria for accepting changes will only get more strict
over time.
>
>
> If so, will the current LLVM head end up in the branch for 2.2 when that
time comes?
>
> No. We already created the llvm/clang release branches to be used with
Swift 2.2 to give us a longer time to stabilize them. We do not plan to rebranch
again from trunk for Swift 2.2.
>
>
>
> Given that the coordination costs to attempt any kind of change in swift
that requires a change in LLVM are so high, I’m tempted to keep the logic of
stripping the ‘l’s from armv7l and armv6l inside swift itself. It really seems
like the wrong approach, but sometimes the wrong answer is the best answer,
depending on the circumstances.
>
>
> For all of these questions you should talk to Bob Wilson who is the llvm
release manager for the swift project.
>
> -eric
>
> - Will
>
> On Jan 7, 2016, at 10:05 AM, Eric Christopher <echristo at gmail.com
<mailto:echristo at gmail.com>> wrote:
>
> The swift repository is old and many thousand revisions behind llvm. Please
don't use it as a base when submitting to the llvm project.
>
> On Thu, Jan 7, 2016, 10:02 AM William Dillon <william at housedillon.com
<mailto:william at housedillon.com>> wrote:
> Oops, I neglected to reply-all….
>
> The current stable branch at github still has it:
>
>
https://github.com/apple/swift-llvm/blob/stable/include/llvm/Support/ARMTargetParser.def#L106
<https://github.com/apple/swift-llvm/blob/stable/include/llvm/Support/ARMTargetParser.def#L106>
>
> Should I get the head of the non-swift repository and generate a new diff?
>
> Also, I suspect that it’s not a good idea to have armv6l map to armv6k,
because that seems like quite an assumption to make. Clearly, armv6 sub
architectures that aren’t v6k will still be v6l in linux. (provided they’re
little-endian).
> I’ve already made that change, and it would be included in any revised diff
that I send out.
>
> Thanks,
> - Will
>
> On Jan 6, 2016, at 10:02 AM, Artyom Skrobov <Artyom.Skrobov at arm.com
<mailto:Artyom.Skrobov at arm.com>> wrote:
>
> William, what revision of LLVM is your patch based on?
>
> The trunk hasn't had ARM_ARCH("armv6hl") since r252903 (Nov
12th)
>
>
> -----Original Message-----
> From: William Dillon [mailto:william at housedillon.com <mailto:william
at housedillon.com>]
> Sent: 06 January 2016 17:55
> To: Renato Golin
> Cc: Tim Northover; LLVM Dev; nd; Artyom Skrobov; Daniel Sanders; Eric
Christopher
> Subject: Re: [llvm-dev] Diff to add ARMv6L to Target parser
>
> Taking the suggestions of the group under consideration, I’ve generated a
new diff. The thing to note is that armv6l is now treated identically to
armv6hl. I’ve also added a unit test.
> This seems to me to be the least invasive method, and holds to existing
conventions as closely as possible.
>
> Thoughts?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20160111/d29e5757/attachment.html>