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>