blob: 41e8230cefbc78db2b9dd0ae487c0c1a249ff486 [file] [log] [blame]
<!--#include virtual="../../header.incl" -->
<div class="www_sectiontitle">2014 LLVM Developers' Meeting</div>
<table>
<tr><td valign="top">
<ol>
<li><a href="#about">About</a></li>
<li><a href="#agenda1">October 28 - Meeting Agenda</a></li>
<li><a href="#agenda2">October 29 - Meeting Agenda</a></li>
<li><a href="#abstracts">Talk Abstracts</a></li>
<li><a href="#light">Lightning Talk Abstracts</a></li>
<li><a href="#tutorials">Tutorial Abstracts</a></li>
<li><a href="#bof">BoF Abstracts</a></li>
<li><a href="#poster">Poster Abstracts</a></li>
<li><a href="#logistics">Logistics</a></li>
</ol>
</td><td>
<ul>
<li><b>What</b>: The eighth meeting of LLVM Developers and Users.</li>
<li><b>When</b>: October 28-29, 2014</li>
<li><b>Where</b>: DoubleTree by Hilton - San Jose, CA</li>
</ul>
</td></tr></table>
<p>A huge thank you to our sponsors!</p>
<p><h1>Diamond Sponsors:</h1>
<h1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.apple.com">Apple</a></h1>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="quic_web_logo.jpg">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.quicinc.com">QuIC</a></h1>
</p>
<p><h1>Platinum Sponsors:</h1>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img width="18%" src="Google-logo_420_color_2x.png">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://google.com">Google</a>
</p><p>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img width="13%" src="SCE_C_pos.jpg">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://us.playstation.com/corporate/about/">Sony Computer Entertainment America</a>
<h1>Gold Sponsors:</h1>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Interested in being a Gold Level Sponsor? See <a href="#sponsor">below.</a></p>
<h1>Silver Sponsors: </h1>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img width="18%" src="HSAFoundation-FINAL.PNG">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.hsafoundation.com">HSA Foundation</a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img width="20%" src="MentorEmbedded_brand_legal.png">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.mentor.com/embedded">Mentor Embedded</a></p>
<h1>Bronze Sponsors:</h1>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img width="17%" src="ARMCompanyLogo.jpg">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.arm.com">ARM</a>
</p>
<div class="www_sectiontitle" id="about">About</div>
<p>The LLVM Foundation announces the eighth annual bay area LLVM Developers' Meeting will be held October 28th and 29th in San Jose, CA.</p>
<p>
This year the conference will be 2 full days that include technical talks, BoFs, hacker’s lab, tutorials, and a poster session. Attendance will be capped at 300.</p>
<p>The meeting serves as a forum for <a href="http://llvm.org">LLVM</a>,
<a href="http://clang.llvm.org">Clang</a>, <a href="http://lldb.llvm.org">LLDB</a> and
other LLVM project developers and users to get acquainted, learn how LLVM is used, and
exchange ideas about LLVM and its (potential) applications. More broadly, we
believe the event will be of particular interest to the following people:</p>
<ul>
<li>Active developers of projects in the LLVM Umbrella
(LLVM core, Clang, LLDB, libc++, compiler_rt, klee, dragonegg, lld, etc).</li>
<li>Anyone interested in using these as part of another project.</li>
<li>Compiler, programming language, and runtime enthusiasts.</li>
<li>Those interested in using compiler and toolchain technology in novel
and interesting ways.</li>
</ul>
<div class="www_sectiontitle" id="agenda1">October 28 - Meeting Agenda</div>
<p>
<table id="devmtg">
<tr><th>Media</th><th>Talk</th></tr>
<tr><td><a href="Slides/2014WelcomeTalk.pdf">Slides</a><br><a href="Videos/Welcome-720.mov">Video</a> (Computer)<br><a href="Videos/Welcome-360.mov">Video</a> (Mobile)</td><td><b>Welcome</b><br>Tanya Lattner, <i>LLVM Foundation</i></td></tr>
<tr><td><a href="Slides/Bataev-OpenMP.pdf">Slides</a><br><a href="Videos/OpenMP Support in Clang and LLVM-720.mov">Video</a> (Computer)<br><a href="Videos/OpenMP Support in Clang and LLVM-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk1">OpenMP Support in Clang/LLVM: Status Update and Future Directions</a></b><br>Alexey Bataev, <i>Intel</i></td></tr>
<tr><td><a href="Slides/Menendez-Alive.pdf">Slides</a><br><a href="Videos/Alive_InstCombine Optimization-720.mov">Video</a> (Computer)<br><a href="Videos/Alive_InstCombine Optimization-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk2">Alive: Provably Correct InstCombine Optimizations
</a></b><br>David Menendez, <i>Rutgers University</i></td></tr>
<tr><td><a href="Slides/Stellard-llvm-stable-releases2014.pdf">Slides</a><br><a href="Videos/LLVM Stable Releases-720.mov">Video</a> (Computer)<br><a href="Videos/LLVM Stable Releases-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk3">LLVM Stable Releases</a></b><br>Tom Stellard, <i>Advanced Micro Devices</i></td></tr>
<tr><td><a href="Slides/Reames-GarbageCollection.pdf">Slides</a><br><a href="Videos/Practically Fully Relocating Garbage Collection in LLVM-720.mov">Video</a> (Computer)<br><a href="Videos/Practically Fully Relocating Garbage Collection in LLVM-360.mov">Video</a> (Mobile)</td><td>
<b><a href="#talk4">Supporting Precise Relocating Garbage Collection in LLVM</a></b><br>Philip Reames, <i>Azul Systems</i><br>Sanjoy Das, <i>Azul Systems</i></td></tr>
<tr><td><a href="Slides/Zhao-SourceCodeAnalysisforSecurity.pdf">Slides</a><br><a href="Videos/Source Code Analysis For Security-720.mov">Video</a> (Computer)<br><a href="Videos/Source Code Analysis For Security-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk5">Source Code Analysis for Security through LLVM</a></b><br>Lu Zhao, <i>HP Fortify</i></td></tr>
<tr><td><a href="Slides/Trick-FTL.pdf">Slides</a><br><a href="Videos/FTL - WebKit LLVM based JIT-720.mov">Video</a> (Computer)<br><a href="Videos/FTL - WebKit LLVM based JIT-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk6">FTL: WebKit’s LLVM based JIT</a></b><br>Andrew Trick, <i>Apple</i><br>Juergen Ributzka, <i>Apple</i></td></tr>
<tr><td><a href="Slides/Criswell-VirtualGhost.pdf">Slides</a><br><a href="Videos/Virtual Ghost-720.mov">Video</a> (Computer)<br><a href="Videos/Virtual Ghost-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk7">Virtual Ghost: Using LLVM to Protect Applications from a Compromised Operating System</a></b><br>John Criswell, <i>University of Rochester</i></td></tr>
<tr><td><a href="Slides/Cormack-BuildingAnLLVMBackend.pdf">Slides</a><br><a href="Videos/Building an LLVM backend-720.mov">Video</a> (Computer)<br><a href="Videos/Building an LLVM backend-360.mov">Video</a> (Mobile)</td><td><b><a href="#tutorial1">Building an LLVM Backend</a></b><br>Fraser Cormack, <i>Codeplay Software</i><br>Pierre-André Saulais, <i>Codeplay Software</i></td></tr>
<tr><td><a href="Slides/Estes-MISchedulerTutorial.pdf">Slides</a><br><a href="Videos/Adding and Optimizing a Subtarget for MIScheduler-720.mov">Video</a> (Computer)<br><a href="Videos/Adding and Optimizing a Subtarget for MIScheduler-360.mov">Video</a> (Mobile)</td><td><b><a href="#tutorial2">Adding and Optimizing a Subtarget for MIScheduler</a></b><br>Dave Estes, <i>QuIC</i></td></tr>
<tr><td><a href="Slides/Christopher-DebugInfoTutorial.pdf">Slides</a><br><a href="Videos/Debug Info Tutorial-720.mov">Video</a> (Computer)<br><a href="Videos/Debug Info Tutorial-360.mov">Video</a> (Mobile)</td><td><b><a href="#tutorial3">Debug Info Tutorial</a></b><br>Eric Christopher, <i>Google</i><br>David Blaikie, <i>Google</i></td></tr>
</table>
</p>
<div class="www_sectiontitle" id="agenda2">October 29 - Meeting Agenda</div>
<p>
<table id="devmtg">
<tr><th>Media</th><th>Talk</th></tr>
<tr><td><a href="Slides/Carruth-TheLLVMPassManagerPart2.pdf">Slides</a><br><a href="Videos/The LLVM Pass Manager Part 2-720.mov">Video</a> (Computer)<br><a href="Videos/The LLVM Pass Manager Part 2-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk11">The LLVM Pass Manager, Part 2</a></b><br>Chandler Carruth, <i>Google</i></td></tr>
<tr><td><a href="Slides/Molloy-LLVM-Performant-As-GCC-llvm-dev-2014.pdf">Slides</a><br><a href="Videos/What Does It take to Get LLVM as Performant as GCC-720.mov">Video</a> (Computer)<br><a href="Videos/What Does It take to Get LLVM as Performant as GCC-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk9">What does it take to get LLVM as performant as GCC</a></b><br>James Molloy, <i>ARM</i><br>Ana Pazos, <i>QuIC</i></td></tr>
<tr><td><a href="Slides/Morisset-AtomicsPresentation.pdf">Slides</a><br><a href="Videos/Blowing up the Atomic Barrier-720.mov">Video</a> (Computer)<br><a href="Videos/Blowing up the Atomic Barrier-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk10">Blowing up the Atomic Barrier</a></b><br>Robin Morisset, <i>Google</i></td></tr>
<tr><td><a href="Slides/Skip the FFI.pdf">Slides</a><br><a href="Videos/Skip The FFI! Embedding Clang for C-720.mov">Video</a> (Computer)<br><a href="Videos/Skip The FFI! Embedding Clang for C-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk18">
Skip the FFI: Embedding Clang for C Interoperability</a></b><br>Jordan Rose, <i>Apple</i><br>John McCall, <i>Apple</i></td></tr>
<tr><td><a href="Slides/Schmidt-SupportingVectorProgramming.pdf">Slides</a><br><a href="Videos/Supporting Vector Programming on a Bi-Endian Processor Architecture-720.mov">Video</a> (Computer)<br><a href="Videos/Supporting Vector Programming on a Bi-Endian Processor Architecture-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk12">Supporting Vector Programming on a Bi-Endian Processor Architecture</a></b><br>Bill Schmidt, <i>IBM</i></td></tr>
<tr><td><a href="Slides/Finkel-IntrinsicsMetadataAttributes.pdf">Slides</a><br><a href="Videos/Intrinsics, Metadata, and Attributes-720.mov">Video</a> (Computer)<br><a href="Videos/Intrinsics, Metadata, and Attributes-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk13">Intrinsics, Metadata and Attributes: Now, more than ever!
</a></b><br>Hal Finkel, <i>Argonne National Laboratory</i></td></tr>
<tr><td><a href="Slides/Prashanth-DLO.pdf">Slides</a><br><a href="Videos/Implementing Data Layout Optimizations in LLVM Framework-720.mov">Video</a> (Computer)<br><a href="Videos/Implementing Data Layout Optimizations in LLVM Framework-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk14">Implementing Data Layout Optimizations in LLVM Framework</a></b><br>Prashantha NR, <i>Compiler Tree Technologies</i></td></tr>
<tr><td><a href="Slides/Majnemer-FuzzingClang.pdf">Slides</a><br><a href="Videos/Fuzzing Clang to Find ABI Bugs-720.mov">Video</a> (Computer)<br><a href="Videos/Fuzzing Clang to Find ABI Bugs-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk15">Fuzzing Clang to Find ABI Bugs</a></b><br>David Majnemer, <i>Google</i></td></tr>
<tr><td><a href="Slides/Scheller-ARMCodeQuality.pdf">Slides</a><br><a href="Videos/A Closer Look at ARM code Quality-720.mov">Video</a> (Computer)<br><a href="Videos/A Closer Look at ARM code Quality-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk16">A closer look at ARM code quality</a></b><br>Tilmann Scheller, <i>Samsung Electronics</i></td></tr>
<tr><td><a href="Slides/Larin-GlobalInstructionScheduling.pdf">Slides</a><br><a href="Videos/Global Instruction Scheduling-720.mov">Video</a> (Computer)<br><a href="Videos/Global Instruction Scheduling-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk17">Implementation of global instruction scheduling in LLVM infrastructure</a></b><br>Sergei Larin, <i>QuIC</i><br>Aditya Kumar, <i>QuIC</i></td></tr>
<tr><td><a href="#light">Slides</a><br><a href="Videos/Lightning Talks-720.mov">Video</a> (Computer)<br><a href="Videos/Lightning Talks-720.mov">Video</a> (Mobile)</td><td><b><a href="#light">Lightning Talks</a></b></td></tr>
<tr><td><a href="Slides/Baker-CustomHardwareStateMachines.pdf">Slides</a><br><a href="Videos/Custom Hardware State-Machines and Datapaths-720.mov">Video</a> (Computer)<br><a href="Videos/Custom Hardware State-Machines and Datapaths-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk19">Custom Hardware State-Machines and Datapaths: Using LLVM to Generate FPGA Accelerators</a></b><br>Alan Baker, <i>Altera Corporation</i></td></tr>
<tr><td><a href="Slides/Baev-Controlling_VRP.pdf">Slides</a><br><a href="Videos/Controlling Virtual Register Pressure-720.mov">Video</a> (Computer)<br><a href="Videos/Controlling Virtual Register Pressure-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk20">Controlling Virtual Register Pressure in LLVM Middle-End</a></b><br>Ivan Baev, <i>QuIC</i></td></tr>
<tr><td><a href="Slides/Zarko-IndexingLargeMixedLang.pdf">Slides</a><br><a href="Videos/Indexing Large, Mixed-Languages Codebases-720.mov">Video</a> (Computer)<br><a href="Videos/Indexing Large, Mixed-Languages Codebases-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk21">Indexing Large, Mixed-Language Codebases</a></b><br>Luke Zarko, <i>Google</i></td></tr>
<tr><td><a href="Slides/Christopher-Function Multiversioning Talk.pdf">Slides</a><br><a href="Videos/Architecture Specific Code Generation-720.mov">Video</a> (Computer)<br><a href="Videos/Architecture Specific Code Generation-360.mov">Video</a> (Mobile)</td><td><a href="#talk22"><b>Architecture Specific Code Generation and Function Multiversioning</a></b><br>Eric Christopher, <i>Google</i></td></tr>
<tr><td><a href="Slides/Hawes-Frappe.pdf">Slides</a><br><a href="Videos/Using Clang to Query Codebases-720.mov">Video</a> (Computer)<br><a href="Videos/Using Clang to Query Codebases-360.mov">Video</a> (Mobile)</td><td><b><a href="#talk23">Frappé: Using Clang to Query and Visualize Large Codebases</a></b><br>Nathan Hawes, <i>Oracle</i><br>Ben Barham, <i>Oracle</i></td></tr>
</table>
</p>
<div class="www_sectiontitle" id="abstracts">Talk Abstracts</div>
<p>
<b><a id="talk1">OpenMP Support in Clang/LLVM: Status Update and Future Directions
</a></b><br>
<i>Alexey Bataev (Speaker) - Intel, Zinovy Nis (Speaker) - Intel</i><br>
<a href="Slides/Bataev-OpenMP.pdf">Slides</a><br>
<a href="Videos/OpenMP Support in Clang and LLVM-720.mov">Video</a> (Computer) <a href="Videos/OpenMP Support in Clang and LLVM-360.mov">Video</a> (Mobile)
<br>
OpenMP is a well-known and widely used API for shared-memory parallelism. Support for OpenMP in Clang/LLVM compiler is currently under development. In this talk, we will present current status of OpenMP support, what is done and what remains to be done, technical details behind OpenMP implementation. Also, we will elaborate on accelerators and pragma-assisted SIMD vectorization, introduced in the latest 4.0 edition of the OpenMP standard.
</p>
<p>
<b><a id="talk2">Alive: Provably Correct InstCombine Optimizations
</a></b><br>
<i>Nuno Lopes - Microsoft Research, David Menendez (Speaker) - Rutgers University, Santosh Nagarakatte - Rutgers University
John Regehr - University of Utah
</i><br>
<a href="Slides/Menendez-Alive.pdf">Slides</a><br>
<a href="Videos/Alive_InstCombine Optimization-720.mov">Video</a> (Computer) <a href="Videos/Alive_InstCombine Optimization-360.mov">Video</a> (Mobile)
<br>
Optimizations are hard to get right. Even seemingly innocuous transformations in InstCombine can miss important corner cases. With Alive, you can specify peephole optimizations in a friendly, LLVM-like language, automatically determine their correctness, and generate the corresponding C++ code. 
</p>
<p>
<b><a id="talk3">LLVM Stable Releases
</a></b><br>
<i>Tom Stellard - Advanced Micro Devices</i><br>
<a href="Slides/Stellard-llvm-stable-releases2014.pdf">Slides</a><br>
<a href="Videos/Alive_InstCombine Optimization-720.mov">Video</a> (Computer)
<a href="Videos/LLVM Stable Releases-360.mov">Video</a> (Mobile)
<br>
This talk will cover LLVM stable releases, how they work, who uses them,
and how we can make them better.
</p>
<p>
<b><a id="talk4">Supporting Precise Relocating Garbage Collection in LLVM
</a></b><br>
<i>Philip Reames (Speaker) - Azul Systems, Sanjoy Das - Azul Systems (Speaker) </i><br>
<a href="Slides/Reames-GarbageCollection.pdf">Slides</a><br>
<a href="Videos/Source Code Analysis For Security-720.mov">Video</a> (Computer)
<a href="Videos/Practically Fully Relocating Garbage Collection in LLVM-360.mov">Video</a> (Mobile)
<br>
Generating efficient code that is compatible with common high performance garbage collector implementations will strengthen LLVM's ability to support languages with managed runtime environments. To support this common use case, we have built and are in the process of contributing a safepoint insertion pass which can rewrite optimized IR into a form which respects the invariants required by a fully relocating garbage collector, and a set of intrinsics which enable work towards efficient lowering of safepoints. We'll cover the motivation, high level design, and show off some examples.
</p>
<p>
<b><a id="talk5">Source Code Analysis for Security through LLVM
</a></b><br>
<i>Lu Zhao - HP Fortify</i><br>
<a href="Slides/Zhao-SourceCodeAnalysisforSecurity.pdf">Slides</a><br>
<a href="Videos/Source Code Analysis For Security-720.mov">Video</a> (Computer)
<a href="Videos/Source Code Analysis For Security-360.mov">Video</a> (Mobile)
<br>
We added a new debug mode for the Clang compiler which emits extra metadata in the LLVM bitcode. The metadata has turned the bitcode into a useful vehicle from which an intermediate representation for secure source code analysis can be derived. We have used this approach to find security vulnerabilities in the Objective-C source code.
</p>
<p>
<b><a id="talk6">FTL: WebKit’s LLVM based JIT
</a></b><br>
<i>Andrew Trick (Speaker) - Apple, Juergen Ributzka (Speaker) - Apple</i><br>
<a href="Slides/Trick-FTL.pdf">Slides</a><br>
<a href="Videos/FTL - WebKit LLVM based JIT-720.mov">Video</a> (Computer)
<a href="Videos/FTL - WebKit LLVM based JIT-360.mov">Video</a> (Mobile)
<br>
FTL is the fourth-tier LLVM JIT that powers JavaScript in WebKit. We will talk about our experiences using LLVM to build this high-performance JIT. We will explain the motivation for new LLVM features, including patchpoints and a new form of stack maps, and will share our vision on future work and the direction we would like LLVM move to become a better platform for JIT clients.
</p>
<p>
<b><a id="talk7">Virtual Ghost: Using LLVM to Protect Applications from a Compromised Operating System
</a></b><br>
<i>John Criswell - University of Rochester</i><br>
<a href="Slides/Criswell-VirtualGhost.pdf">Slides</a><br>
<a href="Videos/Virtual Ghost-720.mov">Video</a> (Computer)
<a href="Videos/Virtual Ghost-360.mov">Video</a> (Mobile)
<br>
This talk presents an LLVM-based system named Virtual Ghost that protects applications from a compromised operating system kernel.  Virtual Ghost uses compiler instrumentation to protect application data from spying and corruption from the operating system kernel.  It also uses an extended version of the LLVM instruction set to restrict how the operating system kernel can interact with the hardware, preventing the operating system kernel from using hardware configuration to corrupt application control-flow or to bypass the application data protection guarantees.
</p>
<p>
<b><a id="talk9">What does it take to make LLVM as performant as GCC
</a></b><br>
<i>James Molloy (Speaker) - ARM,
Ana Pazos (Speaker) - QuIC,
Yin Ma - QuIC
</i><br>
<a href="Slides/Molloy-LLVM-Performant-As-GCC-llvm-dev-2014.pdf">Slides</a><br>
<a href="Videos/What Does It take to Get LLVM as Performant as GCC-720.mov">Video</a> (Computer)
<a href="Videos/What Does It take to Get LLVM as Performant as GCC-360.mov">Video</a> (Mobile)
<br>
For the past 7 months Qualcomm and ARM have jointly been analyzing and improving performance for the AArch64 architecture in LLVM, based on a differential analysis against GCC. This talk aims to provide information on the areas that we're currently lacking compared to GCC, along with the progress that we've made so far.
</p>
<p>
<b><a id="talk10">Blowing up the Atomic Barrier
</a></b><br>
<i>Robin Morisset (Speaker) - Google,
JF Bastien - Google</i><br>
<a href="Slides/Morisset-AtomicsPresentation.pdf">Slides</a><br>
<a href="Videos/Blowing up the Atomic Barrier-720.mov">Video</a> (Computer)
<a href="Videos/Blowing up the Atomic Barrier-360.mov">Video</a> (Mobile)
<br>
Atomics in C11 and C++11 let the programmer express the guarantees needed for racy accesses in lock-free code, in theory bringing a zero-cost abstraction for parallelism to the language. This talk will showcase how you can use atomics today and where the abstraction breaks down. We’ll focus on LLVM’s recent improvements for atomics that provide significant performance gains on ARMv7, Power and x86. Finally we’ll discuss some extremely non-intuitive behaviors of atomics, how atomics in C++ may evolve, and how it may impact LLVM.
</p>
<p>
<b><a id="talk11">The LLVM Pass Manager, Part 2
</a></b><br>
<i>Chandler Carruth - Google</i><br>
<a href="Slides/Carruth-TheLLVMPassManagerPart2.pdf">Slides</a><br>
<a href="Videos/The LLVM Pass Manager Part 2-720.mov">Video</a> (Computer)
<a href="Videos/The LLVM Pass Manager Part 2-360.mov">Video</a> (Mobile)
<br>
I will present a new design and implementation of the LLVM pass manager that is currently being developed in the tree. I will cover how it differs from the previous implementation and how those differences allow it to solve many of the long-standing limitations of the current implementation. I will discuss in depth how the new system supports richer analysis dependencies, flexible composition of function-level analyses and module- or call-graph-level transformations. The new pass manager also introduces a caching-based scheduling model which is substantially different from the prior ones and critical to understanding the impact of transitioning. And as I go through these topics I will introduce how to write a pass suitable for the new infrastructure and how to port an existing pass to live happily in both.
<br>
Finally, I will show a specific new call-graph analysis used by the new pass manager and discuss how these two components can be used to parallelize the entire LLVM compilation pipeline. I will mention some of the basic correctness and efficiency challenges faced when running in parallel and detail the specific challenges and constraints pursuing this path would impose on analysis and optimization passes.
</p>
<p>
<b><a id="talk12">Supporting Vector Programming on a Bi-Endian Processor Architecture
</a></b><br>
<i>Bill Schmidt (Speaker) - IBM,
Michael Gschwind - IBM</i><br>
<a href="Slides/Schmidt-SupportingVectorProgramming.pdf">Slides</a><br>
<a href="Videos/Supporting Vector Programming on a Bi-Endian Processor Architecture-720.mov">Video</a> (Computer)
<a href="Videos/Supporting Vector Programming on a Bi-Endian Processor Architecture-360.mov">Video</a> (Mobile)
<br>
The POWER instruction set architecture is designed to support both
big-endian and little-endian memory models.  However, many of the
instructions designed for vector support assume that vector elements in
registers appear in big endian order, that is, with the lowest-numbered
vector element in the most significant portion of the register.  This
talk will outline some of the issues faced in designing a sensible
vector programming model on a bi-endian architecture with a big-endian
bias, and how we've addressed them.  We will also discuss the current
status of implementation in the GCC and Clang/LLVM compilers.
</p>
<p>
<b><a id="talk13">Intrinsics, Metadata and Attributes: Now, more than ever!
</a></b><br>
<i>Hal Finkel - Argonne National Laboratory</i><br>
<a href="Slides/Finkel-IntrinsicsMetadataAttributes.pdf">Slides</a><br>
<a href="Videos/Intrinsics, Metadata, and Attributes-720.mov">Video</a> (Computer)
<a href="Videos/Intrinsics, Metadata, and Attributes-360.mov">Video</a> (Mobile)
<br>
Over the past year, LLVM has grown several new ways to communicate important information to the optimizer: An @llvm.assume intrinsic function to provided additional truths, scoped-noalias metadata to provided explicit pointer aliasing sets, and parameter attributes that specify pointer alignment, dereferenceability, and more. I'll explain the semantics of many of these new features, their intended uses, and a few ways they shouldn't be used. Finally, I'll discuss how Clang exposes and leverages these new features to encourage the generation of higher-performance code.
</p>
<p>
<b><a id="talk14">Implementing Data Layout Optimizations in LLVM Framework
</a></b><br>
<i>Prashantha NR (Speaker) - Compiler Tree Technologies, Vikram TV - Compiler Tree Technologies,
   Vaivaswatha N - Compiler Tree Technologies</i><br>
<a href="Slides/Prashanth-DLO.pdf">Slides</a><br>
<a href="Videos/Implementing Data Layout Optimizations in LLVM Framework-720.mov">Video</a> (Computer)
<a href="Videos/Implementing Data Layout Optimizations in LLVM Framework-360.mov">Video</a> (Mobile)
<br>
Modern server workloads are limited by memory bandwidth. For regular accesses like loops, people change the loop iterations to change the access pattern; thereby gaining locality. Another way to alleviate the memory bottleneck is to change the data layout organization for better locality. In this talk we will speak about memory layout optimizations like Structure Splitting, Instance Interleaving, Struct Array copy, Array Remapping in LLVM compiler framework.
</p>
<p>
<b><a id="talk15">Fuzzing Clang to Find ABI Bugs
</a></b><br>
<i>David Majnemer - Google</i><br>
<a href="Slides/Majnemer-FuzzingClang.pdf">Slides</a><br>
<a href="Videos/Fuzzing Clang to Find ABI Bugs-720.mov">Video</a> (Computer)
<a href="Videos/Fuzzing Clang to Find ABI Bugs-360.mov">Video</a> (Mobile)
<br>
Correctly implementing C++ is very hard, bugs can arise from incredibly subtle interactions of different language features.
In this talk, we will discuss how we used fuzzing to dramatically increase the reliability of Clang's ABI-specific code.
</p>
<p>
<b><a id="talk16">A closer look at ARM code quality
</a></b><br>
<i>Tilmann Scheller - Samsung Electronics</i><br>
<a href="Slides/Scheller-ARMCodeQuality.pdf">Slides</a><br>
<a href="Videos/A Closer Look at ARM code Quality-720.mov">Video</a> (Computer)
<a href="Videos/A Closer Look at ARM code Quality-360.mov">Video</a> (Mobile)
<br>
This talk presents current performance numbers for the SPEC CPU benchmark
suites on ARM, comparing the performance of LLVM and GCC, with the main
focus on the SPEC CPU integer benchmarks.
To dive a little bit deeper, we will also have a closer look at the
generated assembly code of selected benchmarks where LLVM is performing
worse than GCC.
We will use the results of this performance analysis to point out potential
code generation opportunities for LLVM.
</p>
<p>
<b><a id="talk17">Implementation of global instruction scheduling in LLVM infrastructure
</a></b><br>
<i>Sergei Larin (Speaker) - QuIC,  Aditya Kumar (Speaker) - QuIC</i><br>
<a href="Slides/Larin-GlobalInstructionScheduling.pdf">Slides</a><br>
<a href="Videos/Global Instruction Scheduling-720.mov">Video</a> (Computer)
<a href="Videos/Global Instruction Scheduling-360.mov">Video</a> (Mobile)
<br>
Discuss perspectives and tradeoffs in implementation of global instruction scheduling and support for it in the LLVM infrastructure. Present and discuss relative QuIC experience.
</p>
<p>
<b><a id="talk18">Skip the FFI: Embedding Clang for C Interoperability
</a></b><br>
<i>Jordan Rose (Speaker) - Apple,
John McCall (Speaker) - Apple</i><br>
<a href="Slides/Skip the FFI.pdf">Slides</a><br>
<a href="Videos/Skip The FFI! Embedding Clang for C-720.mov">Video</a> (Computer)
<a href="Videos/Skip The FFI! Embedding Clang for C-360.mov">Video</a> (Mobile)
<br>
Most languages that aren't a superset of C provide a Foreign Function Interface (FFI) that allows one to interface with existing C libraries. FFIs are often an afterthought, requiring manual or source-to-source translation from C header files to a subset of the target language, resulting in complicated build processes, frequent manual tweaking, and numerous implementation challenges. 
<br>
This talk will discuss an alternative approach that embeds Clang into an LLVM-based compiler front end to provide C compatibility without the traditional FFI. Embedding Clang provides seamless access to C APIs, moving the translation of APIs from external tools into the compiler itself. Moreover, one can leverage Clang's deep knowledge of C record layout and calling conventions to simplify the C interface and make both bring up and porting of a new compiler front end simpler.
</p>
<p>
<b><a id="talk19">Custom Hardware State-Machines and Datapaths: Using LLVM to Generate FPGA Accelerators
</a></b><br>
<i>Alan Baker - Altera Corporation</i><br>
<a href="Slides/Baker-CustomHardwareStateMachines.pdf">Slides</a><br>
<a href="Videos/Custom Hardware State-Machines and Datapaths-720.mov">Video</a> (Computer)
<a href="Videos/Custom Hardware State-Machines and Datapaths-360.mov">Video</a> (Mobile)
<br>
Altera Corporation’s OpenCL compiler uses LLVM to generate FPGA accelerators. In order to generate efficient hardware, many transformations were implemented. The key transformations will be discussed, emphasizing the FPGA vs CPU architectural differences that motivate them.
</p>
<p>
<b><a id="talk20">Controlling Virtual Register Pressure in LLVM Middle-End
</a></b><br>
<i>Ivan Baev - QuIC</i><br>
<a href="Slides/Baev-Controlling_VRP.pdf">Slides</a><br>
<a href="Videos/Controlling Virtual Register Pressure-720.mov">Video</a> (Computer)
<a href="Videos/Controlling Virtual Register Pressure-360.mov">Video</a> (Mobile)
<br>
Enabling new compiler optimizations or compiling at higher optimization levels do not necessarily improve performance. One common reason is the increased register pressure that results in an increased amount of spill code. We analyze several LLVM target-independent optimizations with respect to register pressure. We then describe algorithms for controlling register pressure in LICM and GVN and report their positive impact on run-time performance. A discussion on how to control register pressure in the inliner concludes the talk.
</p>
<p>
<b><a id="talk21">Indexing Large, Mixed-Language Codebases
</a></b><br>
<i>James Dennett - Google,
Luke Zarko (Speaker) - Google</i><br>
<a href="Slides/Zarko-IndexingLargeMixedLang.pdf">Slides</a><br>
<a href="Videos/Indexing Large, Mixed-Languages Codebases-720.mov">Video</a> (Computer)
<a href="Videos/Indexing Large, Mixed-Languages Codebases-360.mov">Video</a> (Mobile)
<br>
The Kythe project aims to establish open data formats and protocols for
interoperable developer tools. In this talk, we will introduce the Kythe
model as it applies to C++14, concentrating on features required for generating
cross-references. In the process, we will discuss how the Clang front-end
was instrumental in developing an indexing tool that produces Kythe data
describing C++ source code.
</p>
<p>
<b><a id="talk22">Architecture Specific Code Generation and Function Multiversioning
</a></b><br>
<i>Eric Christopher - Google</i><br>
<a href="Slides/Christopher-Function Multiversioning Talk.pdf">Slides</a><br>
<a href="Videos/Architecture Specific Code Generation-720.mov">Video</a> (Computer)
<a href="Videos/Architecture Specific Code Generation-360.mov">Video</a> (Mobile)
<br>
A talk on microarchitecture dependent optimization and code generation
for individual functions, the changes that have been necessary to
enable it, and function multiversioning as the next step.
</p>
<p>
<b><a id="talk23">Frappé: Using Clang to Query and Visualize Large Codebases
</a></b><br>
<i>Nathan Hawes (Speaker) - Oracle,
Ben Barham (Speaker) - Oracle</i><br>
<a href="Slides/Hawes-Frappe.pdf">Slides</a><br>
<a href="Videos/Using Clang to Query Codebases-720.mov">Video</a> (Computer)
<a href="Videos/Using Clang to Query Codebases-360.mov">Video</a> (Mobile)
<br>
Frappé is a new tool to support developers with a range of code comprehension queries in multi-million line codebases, from "Does function X or something it calls write to global variable Y?" to "How much code could be affected if I change this macro?".  Results are overlaid on a visualisation of the code based on a cartographic map, where the continent/country/state hierarchy corresponds to the code equivalent: high-level architectural components down to individual files and functions. This allows users to visually filter results based on their location and more immediately guage their number and locality.
</p>
<div class="www_sectiontitle" id="light">Lightning Talk Abstracts</div>
<p>
<b>Automatic Loop Diagonalization with LLVM
</a></b><br>
<i>Vedant Kumar - UC Berkeley</i><br>
<a href="Slides/Kumar-LoopDiagonalization.pdf">Slides</a>
<br>
The effects of some loops can be captured by matrices. This talk shows how to take advantage of this fact to optimize away entire loops.
</p>
<p>
<b>PBQP register allocation
</a></b><br>
<i>Arnaud de Grandmaison - ARM,
 Lang Hames - Apple</i><br>
<a href="Slides/PBQP-update-and-in-the-wild.pdf">Slides</a>
<br>
The PBQP register allocator has been part of the LLVM source code for a long time. This talk will present a high level overview of the PBQP allocator principles, as well as its status and future work.
</p>
<p>
<b>PBQP register allocation in the wild
</a></b><br>
<i>Arnaud de Grandmaison - ARM,
 Lang Hames - Apple</i><br>
<a href="Slides/PBQP-update-and-in-the-wild.pdf">Slides</a>
<br>
This talk will present how the PBQP is used with 2 real world processors and report some performance numbers.
</p>
<p>
<b>Link-Time Optimization on PlayStation(R)4
</a></b><br>
<i>Yunzhong Gao - Sony Computer Entertainment America</i><br>
<a href="Slides/Gao-LTO-lightning-talk.pdf">Slides</a>
<br>
As a follow-up to last year's presentation, this is a talk on our experience implementing LTO on
PlayStation(R)4’s proprietary linker, including some of the challenges and results we see in the games.
</p>
<p>
<b>Software Visualizer (SWViz): A tool for visually exploring Linux kernel
with Clang
</a></b><br>
<i>Harsh Vardhan Dwivedi - QuIC</i><br>
<a href="Slides/Dwivedi-SWViz.pdf">Slides</a>
<br>
What is SWviz and why should I care about it anyway?
SWViz is a tool to explore the call graph of a program. It’s chief advantage being able to leverage the linker and compiler (Clang) to generate accurate call-graphs. Through use of Swviz one can quickly gain an understanding of how a program is working. This leads to a massive cutdown in number of hours spent understanding the call-flow of any mature codebase. We’ll demonstrate use of SWViz with Linux Kernel.
</p>
<p>
<b>LLVM for Interactive Modeling and High Performance Simulation
</a></b><br>
<i>Peng Cheng - The MathWorks, Inc.</i><br>
<a href="Slides/Cheng-InteractiveModeling.pdf">Slides</a>
<br>
At MathWorks, LLVM has been used to create multi-thread JIT engines for
interactive modeling and high performance simulation.  This talk will present
why and how LLVM is used to implement the JIT engines as well as some
challenges.
</p>
<p>
<b>AddressSanitizer for Windows
</a></b><br>
<i>Timur Iskhodzhanov - Google</i><br>
<a href="Slides/ASan for Windows.pdf">Slides</a><br>
A fast memory error detector, now available to try on Windows.
Brief overview of the internals and some initial deployment results.
</p>
<div class="www_sectiontitle" id="tutorials">Tutorial Abstracts</div>
<p>
<b><a id="tutorial1">Building an LLVM Backend
</a></b><br>
<i>Fraser Cormack (Speaker) - Codeplay Software, Pierre-André Saulais (Speaker) - Codeplay Software</i><br>
<a href="Slides/Cormack-BuildingAnLLVMBackend.pdf">Slides</a><br>
<a href="Videos/Building an LLVM backend-720.mov">Video</a> (Computer)
<a href="Videos/Building an LLVM backend-360.mov">Video</a> (Mobile)
<br>
This talk explains how to get started with building a LLVM backend for a new architecture. It shows how LLVM transforms programs through the back-end compilation pipeline and what needs implementing for a new target. Practical debugging tips, as well as solutions to common issues are given. No LLVM backend experience is needed, but experience with LLVM IR is recommended.
</p>
<p>
<b><a id="tutorial2">Adding and Optimizing a Subtarget for MIScheduler
</a></b><br>
<i>Dave Estes (Tutorial) - QuIC</i><br>
<a href="Slides/Estes-MISchedulerTutorial.pdf">Slides</a><br>
<a href="Videos/Adding and Optimizing a Subtarget for MIScheduler-720.mov">Video</a> (Computer)
<a href="Videos/Adding and Optimizing a Subtarget for MIScheduler-360.mov">Video</a> (Mobile)
<br>
Tutorial for adding a subtarget to an existing backend for use with the MIScheduler. Will cover TableGen basics insofar as understanding the records used for the MachineSchedModel. Will provide strategies on how to best model some basic machine architectures.
</p>
<p>
<b><a id="tutorial3">Debug Info Tutorial
</a></b><br>
<i>Eric Christopher (Speaker) - Google,
David Blaikie (Speaker) - Google</i><br>
<a href="Slides/Christopher-DebugInfoTutorial.pdf">Slides</a><br>
<a href="Videos/Debug Info Tutorial-720.mov">Video</a> (Computer)
<a href="Videos/Debug Info Tutorial-360.mov">Video</a> (Mobile)
<br>
Take a walk through the DWARF debug information format and the llvm
APIs that serve as an interface to emitting debug information for your
language.
</p>
<div class="www_sectiontitle" id="bof">BoF Abstracts</div>
<p>
<b><a id="bof1">JIT Support in LLVM
</a></b><br>
<i>Lang Hames - Apple</i><br>
A forum for clients and developers of LLVM's JIT infrastructure to discuss APIs, features, and intrinsic support (the stackmap and patchpoint intrinsics).
</p>
<p>
<b><a id="bof2">Performance tracking & benchmarking infrastructure
</a></b><br>
<i>Kristof Beyls - ARM,
Chad Rosier - QuIC,
Chris Matthew - Apple,
Tobias Grosser - ETH,
Renato Golin - Linaro
</i><br>
Having at least some public performance tracking that the majority of the community cares about would make it easier to collaborate for all developers improving the quality of LLVM-generated code. During last year’s BoF, we identified some key shortcomings in LNT to be able to produce low-noise performance numbers on the test-suite and most of them have been fixed recently. In this BoF, we wish to mainly talk about what is needed and missing for the produced compile and execution time numbers to be quickly and easily interpreted and acted upon.
</p>
<p>
<b><a id="bof3">Debug Info BOF
</a></b><br>
<i>Eric Christopher, Google</i><br>
There's been quite a bit of interest in a Debug Info BOF following the one we had last year at the 2013 Developer Conference. This BOF will cover everything from scaling our current handling of debug information, to ongoing work on debug information correctness, and future proposals for DWARF standardization.
</p>
<p>
<b><a id="bof4">Improving LLVM for remote test execution
</a></b><br>
<i>Brian Rzycki - Samsung Austin R&D Center</i><br>
Today's LLVM testing frameworks focus on testing native compilers on the same host where the test is compiled. The goal of this BoF is to examine the components necessary for change and to discuss potential solutions that allow for running tests on remote hosts in a way that best benefits the overall community.
</p>
<p>
<b><a id="bof5">Future directions and features for LLDB
</a></b><br>
<i>Deepak Mathews Panickal - Codeplay Software</i><br>
I propose to organize a BoF to discuss mainly the following topics:
<ul>
<li> As a variety of new targets are being added that form parts of widely used heterogeneous devices, LLDB should develop a system to allow for Simultaneous Multiple Target Debugging. This would allow for the definition of behaviours for how heterogeneous systems are debugged in a single instance.
</li>
<li>Future advances of LLDB tools such as the MI interface and lldb-gdbserver, NativeProcess, NativeThread etc.
</li></ul>
</p>
<p>
<b><a id="bof6">GPU Implementers BoF
</a></b><br>
<i>Tom Stellard - AMD,
Owen Anderson - Apple</i><br>
LLVM is rapidly gaining popularity as a compilation framework for graphics processors.  This Birds of a Feather session will focus on issues of interest to implementers of GPU targets in LLVM.  Topics of discussion may include:
<ul>
<li>Techniques for overcoming common challenges in adapting LLVM to GPU targets</li>
<li>Future directions in LLVM to benefit GPU targets</li>
<li>Opportunities for different GPU targets to share infrastructure and/or optimizations</li>
</ul>
Audience participation is encouraged.  Bring your own questions and ideas!
</p>
<p>
<b><a id="bof7">LLVM Inliner Improvements
</a></b><br>
<i>Yin Ma - QuIC,
Ana Pazos - QuIC,
Jiangling Liu - ARM</i><br>
Discuss the opportunities to extend the LLVM inliner and our work greedy inliner.
</p>
<p>
<b><a id="bof8">LTO
</a></b><br>
<i>Tony Linthicum - QuIC,
Dan Palermo - QuIC</i><br>
Discuss LTO’s current state and potential future improvements.  Potential topics include, but are not limited to, the following:   passing command line arguments to LTO,  profile driven LTO optimizations,  compile time improvements and  performance improvements.
</p>
<p>
<b><a id="bof9">Lld
</a></b><br>
<i>Shankar Easwaran - QuIC,
Daniel Stewart - QuIC</i><br>
The lld linker is a solid foundation for a general-purpose linker, as well as a set of libraries for creating linker-like tools. We will talk about the current status of lld, what the shortcomings are for a production linker, and what major areas need to be implemented, such as LTO support, diagnostics, extensibility. We will also discuss the feasibility of targeting an initial set of features so that lld can be made the default linker for linking the LLVM tools
</p>
<div class="www_sectiontitle" id="poster">Poster Abstracts</div>
<p>
<b>LLVM for Interactive Modeling and High Performance Simulation
</b><br>
<i>Peng Cheng, Nathan Brewton, Dale Martin - The MathWorks, Inc.</i><br>
<a href="Slides/Cheng-InteractiveModelingPoster.pdf">Poster</a><br>
To enable inter-module optimization during interactive modeling for high
performance simulation of Simulink models, LLVM based JIT compilers have been
developed at MathWorks.  These JIT compilers support multiple threads on major
platforms, including win32, win64, glnax64, and maci64, and achieve superior
running time performance compared with previous shared library based compilers.
This talk will present why and how LLVM is used to implement the JIT compilers
as well as some challenges.
</p>
<p>
<b>ISPC: clang-based front-end
</b><br>
<i>Dmitry Babokin - Intel Corporation
James Brodman - Intel Corporation</i><br>
<a href="Slides/Babokin-ISPC_clang.pdf">Poster</a><br>
ISPC is a C-based language based on the SPMD (single program, multiple data) programming model that generates efficient SIMD code for modern processors without the need for complex analysis and autovectorization. The project uses the LLVM infrastructure for optimization and code generation but originally used a custom front-end. The poster describes our experience with building a clang-based front-end and the engineering problems we have encountered introducing the concept of “varying” types to clang.
</p>
<p>
<b>A C++ ABI Test Suite
</b><br>
<i>Sunil Srivastava - Sony Computer Entertainment</i><br>
<a href="Slides/Srivastava-ABI-testsuite_poster.pdf">Poster</a><br>
This poster describes the design of an Itanium C++ ABI Test Suite that verifies a compiler’s compliance against the ABI specification to ensure link compatibility.
</p>
<p>
<b>Software Visualizer (SWViz): A tool for visually exploring Linux kernel
with Clang
</b><br>
<i>Harsh Vardhan Dwivedi - QuIC</i><br>
<a href="Slides/Dwivdei-SWVizPoster.pdf">Poster</a><br>
What is SWviz and why should I care about it anyway?
SWViz is a tool to explore the call graph of a program. It’s chief advantage being able to leverage the linker and compiler (Clang) to generate accurate call-graphs. Through use of Swviz one can quickly gain an understanding of how a program is working. This leads to a massive cutdown in number of hours spent understanding the call-flow of any mature codebase. We’ll demonstrate use of SWViz with Linux Kernel.
</p>
<p>
<b>Machine Guided Compilation and Compiling to Minimize Energy Usage
</b><br>
<i>Simon Cook - Embecosm, Ed Jones - Embecosm</i><br>
<a href="Slides/Cook-mageecPoster.pdf">Poster</a><br>
Today we need compilers to optimize for energy rather than just size or speed. In this poster we present the results of integrating machine learning with LLVM, so the compiler can be trained on which optimizations minimize energy. As a side effect of energy optimization we also see significant performance benefits - nearly doubling performance compared to -O3 in some cases.
</p>
<p>
<b>Translating Java into LLVM IR to Detect Security Vulnerabilities
</b><br>
<i>Cristina Cifuentes - Oracle Labs Australia, Oracle, Nathan Keynes - Parfait, Oracle, John Gough - Oracle Labs Australia, Oracle, Diane Corney - Oracle Labs Australia, Oracle, Lin Gao - Parfait, Oracle, Manuel Valdiviezo - Parfait, Oracle, Andrew Gross - Java Security, Oracle
</i><br>
<a href="Slides/Cifuentes-TranslatingJava.pdf">Poster</a><br>
This poster describes one of several new Java security vulnerabilities and how we reused and extended LLVM’s IR in order to detect such vulnerability.  One year later, full support for Java 7 and 8 are in place, along with various analyses that detect Java platform vulnerabilities.
</p>
<p>
<b>Intel® AVX-512 architecture evolution and support in Clang/LLVM
</b><br>
<i>Zinovy Nis - Intel Corporation, Robert Khasanov - Intel Corporation</i><br>
<a href="Slides/Nis-AVX-512ArchPoster.pdf">Poster</a>
Intel® AVX-512 vector ISA continues to evolve. It has recently been enriched with new groups of instructions operating on different vector lengths and different vector element sizes. We’ll present the current status of new AVX-512 features enabling in CLANG/LLVM  and show how these features can be exploited for performance improvements particularly by vectorizer.
</p>
<p>
<b>mcsema
</b><br>
<i>Artem Dinaburg - Trail of Bits, Inc.
Andrew Ruef - Trail of Bits, Inc.
Jay Little - Trail of Bits, Inc.</i><br>
<a href="Slides/McSemaPoster.pdf">Poster</a><br>
mcsema is a framework for analyzing and transforming machine-code programs to LLVM bitcode. It supports translation of x86 machine code, including integer, floating point, and SSE instructions.
</p>
<p>
<b>Carte++: A LLVM-Based Compiler Targeting FPGAs
</b><br>
<i>Jeffrey Hammes, Lisa Krause , Matthew O’Connor, Jon Steidel - SRC Computers, LLC
</i><br>
<a href="Slides/Krause-CartePoster.pdf">Poster</a><br>
SRC Computers, LLC is presenting a poster on its upcoming Carte++ compiler release showing how the Clang/LLVM infrastructure has provided full language support and a rich set of compiler optimizations upon which to build the Carte++ code generator. The poster will illustrate specific optimizations and compiler challenges unique to SRC's FPGA-based hardware.
</p>
<div class="www_sectiontitle" id="logistics">Logistics</div>
<p>
<a href="http://doubletree3.hilton.com/en/hotels/california/doubletree-by-hilton-hotel-san-jose-JOSE-DT/index.html">DoubleTree by Hilton San Jose</a>
<br>2050 Gateway Place
<br>San Jose, CA 95110
</p><p>
You may book their hotel stay by using this <a href="https://resweb.passkey.com/go/LLVM2014">link</a>.</p>
<p>Rate: $209 plus local taxes for superior double queen or superior king rooms
</p>
<p>Self Parking is $19 per day.</p>
<!-- *********************************************************************** -->
<hr>
<!--#include virtual="../../footer.incl" -->