Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hi All,

Just a quick update on the Motorola 6800 backend: Based on the feedback, "M68k" (with lowercase "k") will now be the canonical target name and "m68k" be the target triple name. I've updated all the patches under review to reflect this change.

I'm also asking for everyone's help to review all the patches.
/* Target independent changes */
/* M68k CodeGen */
/* M68k Clang supports*/
Especially the Clang part, so far no one has given it a pass.

We also had a simple roadmap here:
Showing the prerequisites to become an experimental target and eventually, an official target. We're currently struggling on setting up the buildbot but I believe Adrian (CC-ed) is working on that. So I hope the patches can be sorted out while waiting for the buildbot.

CC-ing Craig here since he might able to give some feedbacks

Thank you!
-Min

--
Min-Yih Hsu
Ph.D Student in ICS Department, University of California, Irvine (UCI).

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hi Min!

On 11/3/20 6:10 PM, Min-Yih Hsu wrote:
> Showing the prerequisites to become an experimental target and eventually,
> an official target. We're currently struggling on setting up the buildbot
> but I believe Adrian (CC-ed) is working on that. So I hope the patches can
> be sorted out while waiting for the buildbot.

The m68k machine is actually already up and running, I just need to set up
a buildbot worker which I will do tomorrow or the day after tomorrow.

root@akiko:~# uname -a
Linux akiko 5.10.0-rc1-183617-gd7f4e16357f6 #1 Mon Nov 2 12:06:55 CET 2020 m68k GNU/Linux
root@akiko:~# cat /proc/cpuinfo
CPU:            68040
MMU:            68040
FPU:            68040
Clocking:       1085.6MHz
BogoMips:       723.76
Calibration:    3618816 loops
root@akiko:~# free -h
              total        used        free      shared  buff/cache   available
Mem:          3.2Gi        36Mi       3.1Gi       1.0Mi        53Mi       3.1Gi
Swap:         4.0Gi          0B       4.0Gi
root@akiko:~#

This new type of emulation was made by QEMU contributions of Laurent Vivier who is
going to give a talk on QEMU m68k this Friday at our next m68k meeting [1].

Adrian

> [1] http://m68k.info/

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hello Min!

On 11/3/20 7:38 PM, John Paul Adrian Glaubitz wrote:
> On 11/3/20 6:10 PM, Min-Yih Hsu wrote:
>> Showing the prerequisites to become an experimental target and eventually,
>> an official target. We're currently struggling on setting up the buildbot
>> but I believe Adrian (CC-ed) is working on that. So I hope the patches can
>> be sorted out while waiting for the buildbot.
>
> The m68k machine is actually already up and running, I just need to set up
> a buildbot worker which I will do tomorrow or the day after tomorrow.

I have requested the buildbot to be added now [1]. The worker is fully set up.

Adrian

> [1] https://reviews.llvm.org/D91031

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
In reply to this post by David Blaikie via cfe-dev
Hello!

On 11/3/20 6:10 PM, Min-Yih Hsu wrote:
> Just a quick update on the Motorola 6800 backend: Based on the feedback,
> "M68k" (with lowercase "k") will now be the canonical target name and
> "m68k" be the target triple name. I've updated all the patches under review
> to reflect this change.

Are there any news on this? The M68k buildbot is ready to be enabled. It will
be enabled once the backend has been merged [1].

Adrian

> [1] https://reviews.llvm.org/D91031

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hi All,

Another update on this topic: Currently three patches have been approved, thanks for all reviewers’ time and efforts :-)

Here are the remaining patches:
 - Patch 1/8 D88385: Got one LGTM, however I believe Jessica Clarke (jrtc27) (CC-ed here) is listed as blocker. Does anyone here know the best way to contact Jessica? Since the patch has been blocked for quite a long time and pinging @jrtc27 on Phab didn’t seem to work
 - Patch 3/8 D88389   (Basic .td files)
 - Patch 4/8 D88390   (MC layer)
 - Patch 5/8 D88391   (Target lowering)
 - Patch 6/8 D88392   (IR Tests)

Except Patch 6, which only has minor formatting issues to fix, I didn’t see any major objections or concerns on other patches at this time point.

In addition to the patch review, tomorrow Dec 18th 19:00 CET (10:00 AM PST), Nick Desaulniers is going to give a talk on compiling Linux Kernel for M68k using LLVM.
Please checkout http://m68k.info/ for more info about the live stream

Best,
-Min

On Dec 4, 2020, at 1:03 AM, John Paul Adrian Glaubitz <[hidden email]> wrote:

Hi Min!

On 12/4/20 8:32 AM, Min-Yih Hsu wrote:
Another major update on this topic: currently I’ve addressed most of the feedbacks
on the Phabricator patches. (I think only one was left and that’s related to Windows,
but since our own buildbots only run non-Windows system I think it’s fine for now)

More importantly, I’ve fixed rest of the test failures, so now except one XFAIL test
case, which takes more time to fix it, M68k passes all of its tests now :-)

Personally, I think the M68k backend is in good shape to become an experimental LLVM backend.

Currently only Patch 7 (D88393) has Renato’s semi-LGTM, and he was also asking other
people’s opinion and LGTM. It would be great if anyone can help reviewing and approving
these patches.

The journey of getting M68k backend upstream has gone pretty far and again, I really
appreciate feedbacks and helps from reviewers and everyone on this thread!

Congratulations on this important milestone and the fantastic work you delivered.

I would have never expected that this effort would ever get this far, so I'm more
than impressed and happy about the news.

The backend is also already actively being used in another project, namely a compiler
explorer instance which features various compilers for m68k including your LLVM
port [1].

And, secondly, Nick Desaulniers will be giving a short talk on December 18th, on our
monthly m68k online meeting [2] where he will be talking about compiling the Linux
kernel for m68k using your new LLVM backend :-).

Adrian

[1] http://brownbot.mooo.com/
[2] http://m68k.info/

--
.''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
 `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913



_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hi Min!

On 12/18/20 1:21 AM, Min-Yih Hsu wrote:
> Another update on this topic: Currently three patches have been approved, thanks for all reviewers’ time and efforts :-)

I've read the reviews. Awesome progress.

> Here are the remaining patches:
>  - Patch 1/8 D88385: Got one LGTM, however I believe Jessica Clarke (jrtc27) (CC-ed here) is listed as blocker.
     Does anyone here know the best way to contact Jessica? Since the patch has been blocked for quite a long time
     and pinging @jrtc27 on Phab didn’t seem to work

I pinged jrtc27 on IRC (OFTC) and will keep pinging until we get an answer.

>  - Patch 3/8 D88389   (Basic .td files)
>  - Patch 4/8 D88390   (MC layer)
>  - Patch 5/8 D88391   (Target lowering)
>  - Patch 6/8 D88392   (IR Tests)
>
> Except Patch 6, which only has minor formatting issues to fix, I didn’t see any major
> objections or concerns on other patches at this time point.

Sounds great.

> In addition to the patch review, tomorrow Dec 18th 19:00 CET (10:00 AM PST), Nick Desaulniers
> is going to give a talk on compiling Linux Kernel for M68k using LLVM.
> Please checkout http://m68k.info/ <http://m68k.info/> for more info about the live stream

Yep. I'm very exciting for this talk! And we're planning to put it on Youtube later.

Adrian

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hi All,

Happy New Year!

This is another update on the M68k backend.

Currently we still have 3 patches to review:
1. (1/8) TableGen changes https://reviews.llvm.org/D88385 
2. (4/8) MC layer changes https://reviews.llvm.org/D88390 
3. (5/8) Target Lowering https://reviews.llvm.org/D88391 

4th (D88390) and 5th (D88391) patches only have minor formatting issues. 

The biggest challenge now is in the first patch, D88385. Currently the patch proposed to add a new TableGen backend (CodeBeads) to generate auxiliary data structures for variable length encoding as well as complex addressing mode encodings. This is equivalent to X86’s usage of `MCInstrDesc::TSFlags` to carry their instruction encoding. However, TSFlags only has 64 bits, where M68k’s current design needs at least 24 bytes to encode all the instructions. While we might able to find an optimal way to fit M68k’s info into 64 bits in the future, the refactoring efforts to do it now is huge, especially on changing instructions definitions in TG files.

Jessica, who is listed in the blocker list of this patch, raised concerns about the necessity of this specialized TG backend, and proposed to re-use X86’s way to handle this problem. That is, put the M68k’s encoding info into MCInstrDesc with modifications in the InstrInfoEmitter TG backend.

Simon thought special handling in the InstrInfoEmitter/MCInstrDesc for M68k doesn’t have a huge difference with adding a specialized CodeBeads backend like the patch is doing now.

Renado preferred to keep the CodeBeads backend since it works well for M68k and later refactoring, if there is any, will probably only affect M68k. He also thought “where” to put this implementation - whether a TableGen or MCInstrDesc change - should come before asking “why” doing this change.

Personally, I also prefer to keep the current CodeBeads implementation and optimize it in the future. Since:
1. CodeBeads is an optional TG backend. It will not affect any existing Target. 
2. As mentioned earlier, it works well on M68k now. And if there is any changes on it or even removal on this TG backend in the future, the refactoring cost is pretty low.
3. We don’t have many resources to conduct large scale fixes in a short time (the longer this patch series diverged from upstream, the higher the rebasing cost for other parts of M68k backend) on this issue right now.

I would happy to hear if there is any suggestion on solving this challenge.

Thank you for the all the reviewing efforts!

Best,
-Min

On Dec 17, 2020, at 11:42 PM, John Paul Adrian Glaubitz <[hidden email]> wrote:

Hi Min!

On 12/18/20 1:21 AM, Min-Yih Hsu wrote:
Another update on this topic: Currently three patches have been approved, thanks for all reviewers’ time and efforts :-)

I've read the reviews. Awesome progress.

Here are the remaining patches:
- Patch 1/8 D88385: Got one LGTM, however I believe Jessica Clarke (jrtc27) (CC-ed here) is listed as blocker.
    Does anyone here know the best way to contact Jessica? Since the patch has been blocked for quite a long time
    and pinging @jrtc27 on Phab didn’t seem to work

I pinged jrtc27 on IRC (OFTC) and will keep pinging until we get an answer.

- Patch 3/8 D88389   (Basic .td files)
- Patch 4/8 D88390   (MC layer)
- Patch 5/8 D88391   (Target lowering)
- Patch 6/8 D88392   (IR Tests)

Except Patch 6, which only has minor formatting issues to fix, I didn’t see any major
objections or concerns on other patches at this time point.

Sounds great.

In addition to the patch review, tomorrow Dec 18th 19:00 CET (10:00 AM PST), Nick Desaulniers
is going to give a talk on compiling Linux Kernel for M68k using LLVM.
Please checkout http://m68k.info/ <http://m68k.info/> for more info about the live stream

Yep. I'm very exciting for this talk! And we're planning to put it on Youtube later.

Adrian

--
.''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
 `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913



_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hi All,

After nearly a year of efforts trying to bring the M68k LLVM backend upstream. I’m glad to see the goal is within our reach now :-)

Currently there are only two open patches: D88390 and D88391. They only received minor styling feedbacks in the past few days and I’ve already fixed them. I think they’re in good shape. After the `release/12.x` branch is cut (which is just couple of hours away) and all the patches are approved, I will commit all 9 patches to the ToT at once.

So I think this is good time to talk about some future plan about bringing M68k into an official target.

First of all, I would like to use bugzilla to track all the milestones in M68k target, in replacement of the Github Project (https://github.com/M680x0/M680x0-mono-repo/projects ) using now. In order to be more centralized and make it easier to notify people in this community for any updates. Currently there is an umbrella bug (Bug 48791) as the blocker of graduating M68k from experimental target. Any milestones will be depended by this bug. Feel free to link to this umbrella bug too if you feel a bug is crucial for M68k being a mature backend.

Second, I will collect more M68k toolchain use cases. On one hand they’re precious (compiler) test cases; on the other hand, we can get to know what are the most wanted features nowadays, in addition to those that are already in our mind.
Currently we already had connections with the M68k retro-computing community (m68k.info), Clang Built Linux (https://clangbuiltlinux.github.io/ ), and the project to bring Rust compiler — which uses LLVM under the hood — to M68k. Please spread the words if you know anyone that is interested in this topic!

These are basically my thoughts on the future plan. Last but not the least, this backend will never go this far without the helps from this community.

I especially want to shout out to people CC-ed in this email, they spent time reviewing the patches and discussing with us on how to make the backend better. Thank you very much!

Best,
-Min

On Jan 8, 2021, at 10:03 AM, Min-Yih Hsu <[hidden email]> wrote:

Hi All,

Happy New Year!

This is another update on the M68k backend.

Currently we still have 3 patches to review:
1. (1/8) TableGen changes https://reviews.llvm.org/D88385 
2. (4/8) MC layer changes https://reviews.llvm.org/D88390 
3. (5/8) Target Lowering https://reviews.llvm.org/D88391 

4th (D88390) and 5th (D88391) patches only have minor formatting issues. 

The biggest challenge now is in the first patch, D88385. Currently the patch proposed to add a new TableGen backend (CodeBeads) to generate auxiliary data structures for variable length encoding as well as complex addressing mode encodings. This is equivalent to X86’s usage of `MCInstrDesc::TSFlags` to carry their instruction encoding. However, TSFlags only has 64 bits, where M68k’s current design needs at least 24 bytes to encode all the instructions. While we might able to find an optimal way to fit M68k’s info into 64 bits in the future, the refactoring efforts to do it now is huge, especially on changing instructions definitions in TG files.

Jessica, who is listed in the blocker list of this patch, raised concerns about the necessity of this specialized TG backend, and proposed to re-use X86’s way to handle this problem. That is, put the M68k’s encoding info into MCInstrDesc with modifications in the InstrInfoEmitter TG backend.

Simon thought special handling in the InstrInfoEmitter/MCInstrDesc for M68k doesn’t have a huge difference with adding a specialized CodeBeads backend like the patch is doing now.

Renado preferred to keep the CodeBeads backend since it works well for M68k and later refactoring, if there is any, will probably only affect M68k. He also thought “where” to put this implementation - whether a TableGen or MCInstrDesc change - should come before asking “why” doing this change.

Personally, I also prefer to keep the current CodeBeads implementation and optimize it in the future. Since:
1. CodeBeads is an optional TG backend. It will not affect any existing Target. 
2. As mentioned earlier, it works well on M68k now. And if there is any changes on it or even removal on this TG backend in the future, the refactoring cost is pretty low.
3. We don’t have many resources to conduct large scale fixes in a short time (the longer this patch series diverged from upstream, the higher the rebasing cost for other parts of M68k backend) on this issue right now.

I would happy to hear if there is any suggestion on solving this challenge.

Thank you for the all the reviewing efforts!

Best,
-Min

On Dec 17, 2020, at 11:42 PM, John Paul Adrian Glaubitz <[hidden email]> wrote:

Hi Min!

On 12/18/20 1:21 AM, Min-Yih Hsu wrote:
Another update on this topic: Currently three patches have been approved, thanks for all reviewers’ time and efforts :-)

I've read the reviews. Awesome progress.

Here are the remaining patches:
- Patch 1/8 D88385: Got one LGTM, however I believe Jessica Clarke (jrtc27) (CC-ed here) is listed as blocker.
    Does anyone here know the best way to contact Jessica? Since the patch has been blocked for quite a long time
    and pinging @jrtc27 on Phab didn’t seem to work

I pinged jrtc27 on IRC (OFTC) and will keep pinging until we get an answer.

- Patch 3/8 D88389   (Basic .td files)
- Patch 4/8 D88390   (MC layer)
- Patch 5/8 D88391   (Target lowering)
- Patch 6/8 D88392   (IR Tests)

Except Patch 6, which only has minor formatting issues to fix, I didn’t see any major
objections or concerns on other patches at this time point.

Sounds great.

In addition to the patch review, tomorrow Dec 18th 19:00 CET (10:00 AM PST), Nick Desaulniers
is going to give a talk on compiling Linux Kernel for M68k using LLVM.
Please checkout http://m68k.info/ <http://m68k.info/> for more info about the live stream

Yep. I'm very exciting for this talk! And we're planning to put it on Youtube later.

Adrian

--
.''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
 `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913




_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
Hi Min!

On 1/26/21 6:37 AM, Min-Yih Hsu wrote:
> After nearly a year of efforts trying to bring the M68k LLVM backend upstream. I’m glad to see the goal is within our reach now :-)

Awesome news! Congrats and kudos for the very hatd work!

> Currently there are only two open patches: D88390 and D88391. They only received minor styling feedbacks in the past few days and
> I’ve already fixed them. I think they’re in good shape. After the `release/12.x` branch is cut (which is just couple of hours away)
> and all the patches are approved, I will commit all 9 patches to the ToT at once.

That's really exciting to hear. I can't wait to spread the news once the code has been merged.

> So I think this is good time to talk about some future plan about bringing M68k into an official target.
>
> First of all, I would like to use bugzilla to track all the milestones in M68k target, in replacement of the Github Project
> (https://github.com/M680x0/M680x0-mono-repo/projects <https://github.com/M680x0/M680x0-mono-repo/projects> ) using now. In
> order to be more centralized and make it easier to notify people in this community for any updates. Currently there is an
> umbrella bug (Bug 48791 <https://bugs.llvm.org/show_bug.cgi?id=48791>) as the blocker of graduating M68k from experimental
> target. Any milestones will be depended by this bug. Feel free to link to this umbrella bug too if you feel a bug is crucial
> for M68k being a mature backend.

That was my plan as well. I will create copies of the remaining issues from Github in Bugzilla once the 9 patches have been
merged.

> Second, I will collect more M68k toolchain use cases. On one hand they’re precious (compiler) test cases; on the other hand,
> we can get to know what are the most wanted features nowadays, in addition to those that are already in our mind.
> Currently we already had connections with the M68k retro-computing community (m68k.info <http://m68k.info/>), Clang Built Linux (https://clangbuiltlinux.github.io/ <https://clangbuiltlinux.github.io/> ), and the project to bring Rust compiler — which uses
> LLVM under the hood — to M68k. Please spread the words if you know anyone that is interested in this topic!

The NetBSD folks will certainly be interested. I'm CC'ing them in my answer. I'm very confident we will attract more developers
once the code has been merged. I'm very much looking forward to what the community will deliver. I know that people are very
enthusiastic in the community.

> These are basically my thoughts on the future plan. Last but not the least, this backend will never go this far without the helps
> from this community.
>
> I especially want to shout out to people CC-ed in this email, they spent time reviewing the patches and discussing with us on how
> to make the backend better. Thank you very much!

Thanks a lot for your work and don't forget to claim your Bounty once the code has been merged.

Also, let's discuss the Patreon later this week.

Adrian

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] [RFC] Backend for Motorola 6800 series CPU (M68k)

David Blaikie via cfe-dev
In reply to this post by David Blaikie via cfe-dev
Hi Min!

On 1/26/21 6:37 AM, Min-Yih Hsu wrote:
> Currently there are only two open patches: D88390 and D88391. They only received minor
> styling feedbacks in the past few days and I’ve already fixed them. I think they’re in
> good shape. After the `release/12.x` branch is cut (which is just couple of hours away)
> and all the patches are approved, I will commit all 9 patches to the ToT at once.

Seems the 12.x branch has happened now [1].

Adrian

> [1] https://github.com/llvm/llvm-project/tree/release/12.x

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev