Commit Graph

64 Commits

Author SHA1 Message Date
Alex Rosenberg d558ffaf69 Assume code ownership for the PS4 to ensure patches get reviewed, per the Developer Policy.
llvm-svn: 227340
2015-01-28 18:33:39 +00:00
Alexei Starovoitov e4c8c807bb BPF backend
Summary:
V8->V9:
- cleanup tests

V7->V8:
- addressed feedback from David:
- switched to range-based 'for' loops
- fixed formatting of tests

V6->V7:
- rebased and adjusted AsmPrinter args
- CamelCased .td, fixed formatting, cleaned up names, removed unused patterns
- diffstat: 3 files changed, 203 insertions(+), 227 deletions(-)

V5->V6:
- addressed feedback from Chandler:
- reinstated full verbose standard banner in all files
- fixed variables that were not in CamelCase
- fixed names of #ifdef in header files
- removed redundant braces in if/else chains with single statements
- fixed comments
- removed trailing empty line
- dropped debug annotations from tests
- diffstat of these changes:
  46 files changed, 456 insertions(+), 469 deletions(-)

V4->V5:
- fix setLoadExtAction() interface
- clang-formated all where it made sense

V3->V4:
- added CODE_OWNERS entry for BPF backend

V2->V3:
- fix metadata in tests

V1->V2:
- addressed feedback from Tom and Matt
- removed top level change to configure (now everything via 'experimental-backend')
- reworked error reporting via DiagnosticInfo (similar to R600)
- added few more tests
- added cmake build
- added Triple::bpf
- tested on linux and darwin

V1 cover letter:
---------------------
recently linux gained "universal in-kernel virtual machine" which is called
eBPF or extended BPF. The name comes from "Berkeley Packet Filter", since
new instruction set is based on it.
This patch adds a new backend that emits extended BPF instruction set.

The concept and development are covered by the following articles:
http://lwn.net/Articles/599755/
http://lwn.net/Articles/575531/
http://lwn.net/Articles/603983/
http://lwn.net/Articles/606089/
http://lwn.net/Articles/612878/

One of use cases: dtrace/systemtap alternative.

bpf syscall manpage:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b4fc1a460f3017e958e6a8ea560ea0afd91bf6fe

instruction set description and differences vs classic BPF:
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/filter.txt

Short summary of instruction set:
- 64-bit registers
  R0      - return value from in-kernel function, and exit value for BPF program
  R1 - R5 - arguments from BPF program to in-kernel function
  R6 - R9 - callee saved registers that in-kernel function will preserve
  R10     - read-only frame pointer to access stack
- two-operand instructions like +, -, *, mov, load/store
- implicit prologue/epilogue (invisible stack pointer)
- no floating point, no simd

Short history of extended BPF in kernel:
interpreter in 3.15, x64 JIT in 3.16, arm64 JIT, verifier, bpf syscall in 3.18, more to come in the future.

It's a very small and simple backend.
There is no support for global variables, arbitrary function calls, floating point, varargs,
exceptions, indirect jumps, arbitrary pointer arithmetic, alloca, etc.
From C front-end point of view it's very restricted. It's done on purpose, since kernel
rejects all programs that it cannot prove safe. It rejects programs with loops
and with memory accesses via arbitrary pointers. When kernel accepts the program it is
guaranteed that program will terminate and will not crash the kernel.

This patch implements all 'must have' bits. There are several things on TODO list,
so this is not the end of development.
Most of the code is a boiler plate code, copy-pasted from other backends.
Only odd things are lack or < and <= instructions, specialized load_byte intrinsics
and 'compare and goto' as single instruction.
Current instruction set is fixed, but more instructions can be added in the future.

Signed-off-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>

Subscribers: majnemer, chandlerc, echristo, joerg, pete, rengolin, kristof.beyls, arsenm, t.p.northover, tstellarAMD, aemerson, llvm-commits

Differential Revision: http://reviews.llvm.org/D6494

llvm-svn: 227008
2015-01-24 17:51:26 +00:00
Ulrich Weigand 52cba39cb6 Add myself as SystemZ code owner
As agreed with Richard Sandiford, I'm taking over code ownership
for the SystemZ back end from him.

llvm-svn: 224535
2014-12-18 19:27:50 +00:00
Peter Collingbourne 93f6d6904f Tom Stellard is now the code owner for libclc.
llvm-svn: 224088
2014-12-12 01:11:48 +00:00
Justin Bogner 8cb0a28ce6 Try again at sorting entries in CODE_OWNERS
I apparently fail at the alphabet, E is not after G, and G isn't even
close to C. Sorry for the noise.

llvm-svn: 223990
2014-12-11 00:52:59 +00:00
Justin Bogner a3f7fe88b8 Fix some incorrectly sorted entries in CODE_OWNERS
llvm-svn: 223989
2014-12-11 00:41:15 +00:00
Justin Bogner 4d6dfde840 Add code owners for profiling and coverage
llvm-svn: 223988
2014-12-11 00:37:25 +00:00
Peter Collingbourne 567a1e579b Make myself the code owner for llgo.
llvm-svn: 223691
2014-12-08 20:30:39 +00:00
Joerg Sonnenberger 313f5e2f29 Add Tom Stellard's role as 3.5 release manager.
llvm-svn: 217659
2014-09-12 08:07:31 +00:00
Joerg Sonnenberger 906ae46d57 Add a sentence that all entries should include an email address.
Add one for Greg Clayton, Peter Collingbourne, Tobias Grosser and
Jakob Olesen based on recent commits.

llvm-svn: 214762
2014-08-04 19:33:25 +00:00
Hal Finkel 869b0a1fd4 Claim AA generally as code owner
As per nominations from Chandler and Arnold.

llvm-svn: 213955
2014-07-25 16:45:10 +00:00
Hal Finkel df14364f30 Add code owner of scoped-noalias metadata
Add myself as the code owner for the scoped-noalias metadata I've developed.

llvm-svn: 213950
2014-07-25 15:54:55 +00:00
Lang Hames 86aca19b1d Make myself code owner of MCJIT.
llvm-svn: 213302
2014-07-17 20:23:31 +00:00
Renato Golin 5aca76d57a ARM Linux support
llvm-svn: 205483
2014-04-02 23:03:28 +00:00
Tim Northover bc6d30f8f1 Update my e-mail address in CODE_OWNERS.TXT
llvm-svn: 203824
2014-03-13 18:04:41 +00:00
Marshall Clow 8e2403d8df Add myself as owner for libc++
llvm-svn: 201573
2014-02-18 14:03:17 +00:00
Howard Hinnant 314bb7d8eb Remove myself as owner of libc++
llvm-svn: 201432
2014-02-14 21:09:01 +00:00
Bill Wendling 50ad480241 Update email address.
llvm-svn: 196369
2013-12-04 09:42:49 +00:00
Daniel Sanders a3365ac962 As myself as code-owner of the MIPS backend (lib/Target/Mips/*)
llvm-svn: 195915
2013-11-28 09:36:44 +00:00
Hal Finkel 52261a6545 Add loop rerolling code owner
I am the code owner of the loop reroller.

llvm-svn: 195271
2013-11-20 20:54:33 +00:00
Chad Rosier 24def30af6 Update contact information.
llvm-svn: 194828
2013-11-15 17:35:29 +00:00
Peter Zotov de853be2ad Add myself to CODE_OWNERS for the OCaml bindings
Per discussion with Chris Lattner

llvm-svn: 194554
2013-11-13 04:24:13 +00:00
Kostya Serebryany 157abe9b1d Add more owners to CODE_OWNERS.TXT (Kostya Serebryany: AddressSanitizer and ThreadSanitizer; Evgeniy Stepanov: MemorySanitizer)
llvm-svn: 185064
2013-06-27 08:47:12 +00:00
Richard Sandiford 4307282de6 Add myself as SystemZ code owner
llvm-svn: 181434
2013-05-08 14:41:29 +00:00
Eric Christopher c9e6e9ed2a Fix random typo.
llvm-svn: 179663
2013-04-17 03:18:49 +00:00
Bill Wendling e3335039b6 Move info to CREDITS.TXT file.
llvm-svn: 179224
2013-04-10 21:56:52 +00:00
Bill Wendling c03998bdb5 Marking myself as release manager.
If anyone objects please let me know.

llvm-svn: 179212
2013-04-10 20:13:28 +00:00
Bill Wendling 4ac1218988 Update
llvm-svn: 177298
2013-03-18 17:47:33 +00:00
Bill Wendling b04d7fa463 Reflect reality.
llvm-svn: 176858
2013-03-12 10:38:39 +00:00
Tim Northover 70f77d6ff0 Add myself as code owner of AArch64 backend.
llvm-svn: 174056
2013-01-31 12:51:16 +00:00
Michael J. Spencer 3f32c1e860 Update CODE_OWNERS.TXT.
llvm-svn: 172525
2013-01-15 09:37:45 +00:00
Tom Stellard abdff2ba2d R600: Add entry in CODE_OWNERS.TXT
llvm-svn: 170594
2012-12-19 22:10:35 +00:00
Andrew Trick 44d1f2fedd Taking ownership of indvars/lsr.
Evan nominated me for this a while back, and no one has offered to
save me from it.

llvm-svn: 169447
2012-12-05 23:32:44 +00:00
Chris Lattner 309adbdd43 clarify that this isn't lld.
llvm-svn: 169130
2012-12-03 16:08:32 +00:00
Bill Wendling 414abc471c Be more clear on what parts of code I own.
llvm-svn: 169050
2012-11-30 23:00:25 +00:00
Bill Wendling d2901e94f1 Add me as LTO code owner.
llvm-svn: 169046
2012-11-30 22:15:08 +00:00
Richard Smith 8ec03f5b54 Remove some Clang-specific ownership roles.
llvm-svn: 168653
2012-11-27 00:48:36 +00:00
Richard Smith 92de14b86c Move Clang code owners list from llvm/ to cfe/.
llvm-svn: 168640
2012-11-27 00:39:52 +00:00
Venkatraman Govindaraju fee0e0f792 Added me as the owner of the Sparc backend
llvm-svn: 168504
2012-11-22 22:14:48 +00:00
Rafael Espindola 02ad0cb075 Mark me as the owner of the gold plugin.
llvm-svn: 168502
2012-11-22 16:43:44 +00:00
Anshuman Dasgupta 788957f03f Add myself as owner of the Hexagon backend.
llvm-svn: 168312
2012-11-19 15:40:22 +00:00
Richard Smith 6fd8c8d98f Per agreement with Doug, take ownership of Clang's libSema.
llvm-svn: 168244
2012-11-17 02:26:54 +00:00
Andrew Kaylor 04ee2ef32b Claim ownership of MCJIT
llvm-svn: 168225
2012-11-16 23:56:48 +00:00
Chad Rosier 3eae17e74d Claim the driver.
llvm-svn: 168215
2012-11-16 22:49:27 +00:00
Richard Osborne 75c894388c Add myself as owner of XCore Backend.
llvm-svn: 168201
2012-11-16 21:26:36 +00:00
Chandler Carruth 20cd2b402f Add myself as the code owner for a bunch of stuff.
Notably, I'm reviewing this stuff already, and this makes it clear I'm
on the hook for it.

I'm relying on Eric Christopher and Michael Spencer to help with Support
when there are platform specific issues, but Chris wants a single point
of contact, and I'm happy with that.

llvm-svn: 168164
2012-11-16 11:43:01 +00:00
Galina Kistanova 0608cd8bd4 Added myself as owner of LLVM Buildbot.
llvm-svn: 168111
2012-11-15 23:16:47 +00:00
Eric Christopher aa6df454df Clarify.
llvm-svn: 168110
2012-11-15 22:57:22 +00:00
Owen Anderson aebfacb008 Claim ownership of everyone's favorite part of the backend.
llvm-svn: 168109
2012-11-15 22:56:42 +00:00
Eric Christopher 4bb9c6c3b1 More ownership, no one likes these things anyways.
llvm-svn: 168104
2012-11-15 22:41:56 +00:00