Compare commits

..

No commits in common. "master" and "15.0-hardknott-3.3" have entirely different histories.

208 changed files with 25475 additions and 3832 deletions

87
CHANGELOG Normal file
View File

@ -0,0 +1,87 @@
This file will only list major changes that occur within a release.
For a full list of changes, view the git log of the repository.
Rocko Release 11/2017
=====================
Moved qat support to separate layer
-----------------------------------
Quick Assist Technology (QAT) is more middleware and should not be part of the
core BSP. The new layer can be found here:
https://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-qat/
Moved dpdk support to separate layer
------------------------------------
We had some requests to make DPDK standalone so that it could be included
without bringing in anything else from meta-intel, as it is not specific to
Intel(R) hardware. The new layer is located here:
https://git.yoctoproject.org/cgit/cgit.cgi/meta-dpdk/
Added support for out-of-tree iwlwifi drivers
---------------------------------------------
Backport-iwlwifi out-of-tree wifi modules are now available via meta-intel.
Backport-iwlwifi brings the latest iwlwifi drivers to almost any kernel
Note that mac80211 and cfg80211 backports are also necessary, which will most
likely cause incompatibility with other in-tree wifi drivers.
See https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi for more info.
Added support for out-of-tree ixgbe drivers
-------------------------------------------
The out-of-tree ixgbe drivers bring ixgbe support to nearly any kernel. See
here: http://www.intel.com/network/connectivity/products/server_adapters.htm
Added an implementation of Secure Boot
--------------------------------------
meta-intel now supports a simple Secure Boot implementation. This implementation
consists of a single binary consisting of an EFI stub, the kernel, an
initrd, and a kernel command line. The binary is then signed via keys defined by
the variables SECUREBOOT_SIGNING_KEY and SECUREBOOT_SIGNING_CERT. These keys
should match the keys embedded in your hardware's firmware.
See documentation/secureboot/README for more information on this feature.
Improved Yocto Project Compatibility status
-------------------------------------------
The common layer should now be considered Yocto Project compatible - it should
no longer modify OE-core values when adding the layer to your bblayers.conf.
The meta-tlk layer is still not Yocto Project compatible, however.
Pyro Release 5/2017
===================
Changed default kernel provider from linux-yocto to linux-intel.
----------------------------------------------------------------
Linux-intel is an Intel(R)-maintained kernel based on the latest stable
branch, along with backports from upstream to better support Intel(R)
hardware. The intel-linux kernel also has a branch with the preempt-rt
patches applied, providing a preempt-rt kernel with no additional work.
Added QEMU support.
-------------------
We now build several virtio drivers into the kernel by default, and
have qemuboot.conf files for intel-corei7-64 and intel-core2-32
targets. This allows one to do basic testing on meta-intel images
without having to use hardware. The virtio drivers are added via
KERNEL_FEATURES_INTEL_COMMON. This prevents them from being added to
custom kernels by default. They can be removed by adding the
following to a conf or kernel bbappend file:
KERNEL_FEATURES_INTEL_COMMON_remove = “cfg/virtio.scc”
OVMF firmware is also built and can be used in order to emulate a UEFI
environment. A full runqemu command line for intel-corei7-64 could look
like this:
runqemu core-image-minimal intel-corei7-64 wic ovmf
Musl support
------------
Meta-intel is now compatible with the musl C library. You can specify musl
As your C library by adding the following to your local.conf:
TCLIBC = “musl”
Note: there is a known failure with DPDK.
X32 support
-----------
The meta-intel layer can now build with the x32 tune settings in a multi-lib
setting, it will not work in as the primary MACHINE tune as the bootloader needs
to be built as a 64bit binary. The setup for this would be as follows:
require conf/multilib.conf
MULTILIBS = "multilib:libx32
DEFAULTTUNE_virtclass-multilib-libx32 = "corei7-64-x32"

32
MAINTAINERS Normal file
View File

@ -0,0 +1,32 @@
This file contains a list of BSP maintainers for the BSPs contained in
the meta-intel repository.
The purpose of this file is to provide contact information for
specific BSPs and other code contained within meta-intel. You should
address questions and patches for a particular BSP or other code to
the appropriate maintainer listed in this file, cc'ing the meta-intel
mailing list. This ensures that your question or patch will be
addressed by the appropriate person, and that it will be seen by other
users who may be facing similar problems or questions.
Please see the top-level README file for guidelines relating to the
details of submitting patches, reporting problems, or asking questions
about any of the BSPs or other recipes contained within meta-intel.
Descriptions of section entries:
M: Mail patches to: FullName <address@domain>
F: Files and directories with wildcard patterns.
A trailing slash includes all files and subdirectory files.
F: common/ all files in and below common
F: common/* all files in common, but not below
One pattern per line. Multiple F: lines acceptable.
Please keep this list in alphabetical order.
Maintainers List (try to look for most precise areas first)
-----------------------------------
M: Anuj Mittal <anuj.mittal@intel.com>
F: *

459
README Normal file
View File

@ -0,0 +1,459 @@
meta-intel
==========
This README file contains information on building and booting
meta-intel BSP layers. Please see the corresponding sections below
for details.
Yocto Project Compatible
========================
The BSPs contained in this layer are compatible with the Yocto Project
as per the requirements listed here:
https://www.yoctoproject.org/webform/yocto-project-compatible-registration
Dependencies
============
This layer depends on:
URI: git://git.openembedded.org/bitbake
URI: git://git.openembedded.org/openembedded-core
layers: meta
branch: master
Table of Contents
=================
I. Overview
II. Building and booting meta-intel BSP layers
a. Building the intel-common BSP layers
b. Booting the intel-common BSP images
c. Building the installer image
III. Technical Miscellany
Benefits of using meta-intel
The intel-common kernel package architecture
Intel-specific machine features
IV. Tested Hardware
V. Guidelines for submitting patches
I. Overview
===========
This is the location for Intel-maintained BSPs.
For details on the intel-common, see the information below.
For all others, please see the README files contained in the
individual BSP layers for BSP-specific information.
If you have problems with or questions about a particular BSP, please
contact the maintainer listed in the MAINTAINERS file directly (cc:ing
the Yocto mailing list puts it in the archive and helps other people
who might have the same questions in the future), but please try to do
the following first:
- look in the Yocto Project Bugzilla
(http://bugzilla.yoctoproject.org/) to see if a problem has
already been reported
- look through recent entries of the meta-intel
(https://lists.yoctoproject.org/pipermail/meta-intel/) and Yocto
(https://lists.yoctoproject.org/pipermail/yocto/) mailing list
archives to see if other people have run into similar problems or
had similar questions answered.
If you believe you have encountered a bug, you can open a new bug and
enter the details in the Yocto Project Bugzilla
(http://bugzilla.yoctoproject.org/). If you're relatively certain
that it's a bug against the BSP itself, please use the 'Yocto Project
Components: BSPs | meta-intel' category for the bug; otherwise, please
submit the bug against the most likely category for the problem - if
you're wrong, it's not a big deal and the bug will be recategorized
upon triage.
II. Building and booting meta-intel BSP layers
==============================================
The following sections contain information on building and booting the
BSPs contained in the meta-intel layer.
Note that these instructions specifically cover the intel-common, which
may or may not be applicable to other BSPs contained in this layer - if
a given BSP contains its own README, that version should be used instead,
and these instructions can be ignored.
a. Building the intel-common BSP layers
-------------------------------------------------
In order to build an image with BSP support for a given release, you
need to download the corresponding BSP tarball from the 'Board Support
Package (BSP) Downloads' page of the Yocto Project website (or
equivalently, check out the appropriate branch from the meta-intel git
repository, see below). For the intel-common BSPs, those tarballs would
correspond to the following choices in the BSP downloads section:
- Intel-core2-32 Intel® Common Core BSP (Intel-core2-32)
- Intel-corei7-64 Intel® Common Core BSP (Intel-corei7-64)
The intel-* BSPs, also known as the intel-common BSPs, provide a few
carefully selected tune options and generic hardware support to cover
the majority of current Intel CPUs and devices. The naming follows the
convention of intel-<TUNE>-<BITS>, where TUNE is the gcc cpu-type
(used with mtune and march typically) and BITS is either 32 bit or 64
bit.
Having done that, and assuming you extracted the BSP tarball contents
at the top-level of your yocto build tree, you can build a BSP image
by adding the location of the meta-intel layer to bblayers.conf e.g.:
yocto/meta-intel \
To enable a particular machine, you need to add a MACHINE line naming
the BSP to the local.conf file:
MACHINE ?= "xxx"
where 'xxx' is replaced by one of the following BSP names:
- intel-core2-32
This BSP is optimized for the Core2 family of CPUs as well as all
Atom CPUs prior to the Silvermont core.
- intel-corei7-64
This BSP is optimized for Nehalem and later Core and Xeon CPUs as
well as Silvermont and later Atom CPUs, such as the Baytrail SoCs.
You should then be able to build an image as such:
$ source oe-init-build-env
$ bitbake core-image-sato
At the end of a successful build, you should have an image that
you can boot from a USB flash drive (see instructions on how to do
that below, in the section 'Booting the intel-common BSP images').
As an alternative to downloading the BSP tarball, you can also work
directly from the meta-intel git repository. For each BSP in the
'meta-intel' repository, there are multiple branches, one
corresponding to each major release starting with 'laverne' (0.90), in
addition to the latest code which tracks the current master (note that
not all BSPs are present in every release). Instead of extracting
a BSP tarball at the top level of your yocto build tree, you can
equivalently check out the appropriate branch from the meta-intel
repository at the same location.
b. Booting the intel-common BSP images
--------------------------------------
If you've built your own image, either from the downloaded BSP layer
or from the meta-intel git repository, you'll find the bootable
image in the build/tmp/deploy/images/xxx directory, where again
'xxx' refers to the machine name used in the build.
Under Linux, insert a USB flash drive. Assuming the USB flash drive
takes device /dev/sdf, use dd to copy the image to it. Before the image
can be burned onto a USB drive, it should be un-mounted. Some Linux distros
may automatically mount a USB drive when it is plugged in. Using USB device
/dev/sdf as an example, find all mounted partitions:
$ mount | grep sdf
and un-mount those that are mounted, for example:
$ umount /dev/sdf1
$ umount /dev/sdf2
Now burn the image onto the USB drive:
$ sudo dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf status=progress
$ sync
$ eject /dev/sdf
This should give you a bootable USB flash device. Insert the device
into a bootable USB socket on the target, and power on. This should
result in a system booted to the Sato graphical desktop.
If you want a terminal, use the arrows at the top of the UI to move to
different pages of available applications, one of which is named
'Terminal'. Clicking that should give you a root terminal.
If you want to ssh into the system, you can use the root terminal to
ifconfig the IP address and use that to ssh in. The root password is
empty, so to log in type 'root' for the user name and hit 'Enter' at
the Password prompt: and you should be in.
If you find you're getting corrupt images on the USB (it doesn't show
the syslinux boot: prompt, or the boot: prompt contains strange
characters), try doing this first:
$ dd if=/dev/zero of=/dev/sdf bs=1M count=512
c. Building the installer image
-----------------------------------------------
If you plan to install your image to your target machine, you can build a wic
based installer image instead of default wic image. To build it, you need to
add below configuration to local.conf :
WKS_FILE = "image-installer.wks.in"
IMAGE_FSTYPES_append = " ext4"
IMAGE_TYPEDEP_wic = "ext4"
INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
do_rootfs[depends] += "virtual/kernel:do_deploy"
IMAGE_BOOT_FILES_append = "\
${KERNEL_IMAGETYPE} \
microcode.cpio \
${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.ext4;rootfs.img \
${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', 'grub-efi-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', '${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', 'systemd-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/loader.conf;loader/loader.conf ', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/entries/boot.conf;loader/entries/boot.conf', '', d)} "
Burn the wic image onto USB flash device, insert the device to target machine
and power on. This should start the installation process.
III. Technical Miscellany
=========================
Benefits of using meta-intel
----------------------------
Using meta-intel has the following benefits over a generic BSP:
tune flags
++++++++++
intel-* MACHINEs each have different compilation flags appropriate for their
targeted hardware sets. intel-corei7-64 has tune flags appropriate for modern
64-bit Intel Core i microarchitecture, and includes instruction sets up to
SSE4.2. intel-core2-32 has tune flags appropriate for legacy 32-bit Intel Core2
microarchitecture, and includes instruction sets up to SSE3.
linux-intel kernel
++++++++++++++++++
The linux-intel kernel is an initiative to bring better Intel(R) hardware
support to the current LTS linux kernel. It contains a base LTS kernel with
additional backports from upstream Intel drivers. In addition, a default kernel
config containing most features found on Intel boards is supplied via the
yocto-kernel-cache.
graphics stack
++++++++++++++
Meta-intel provides the latest Intel Graphics Linux Stack drivers to support
Intel hardware as defined by the https://01.org/linuxgraphics.
Other software
++++++++++++++
* intel ucode - provides the latest microcode updates for Intel processors
* thermald - which proactively controls thermal, using P-states, T-states, and
the Intel power clamp driver.
(https://01.org/linux-thermal-daemon/documentation/introduction-thermal-daemon)
The intel-common kernel package architecture
--------------------------------------------
These BSPs use what we call the intel-common Linux kernel package
architecture. This includes core2-32-intel-common and
corei7-64-intel-common. These kernel packages can also be used by any
of the BSPs in meta-intel that choose to include the
intel-common-pkgarch.inc file.
To minimize the proliferation of vendor trees, reduce the sources we
must support, and consolidate QA efforts, all BSP maintainers are
encouraged to make use of the intel-common Linux kernel package
architecture.
Intel-specific machine features
-------------------------------
The meta-intel layer makes some additional machine features available
to BSPs. These machine features can be used in a BSP layer in the
same way that machine features are used in other layers based on
oe-core, via the MACHINE_FEATURES variable.
Requirements
++++++++++++
The meta-intel-specific machine features are only available to a BSP
when the meta-intel layer is included in the build configuration, and
the meta-intel.inc file is included in the machine configuration of
that BSP.
To make these features available for your machine, you will need to:
1. include a configuration line such as the below in bblayers.conf
BBLAYERS += "<local path>/meta-intel"
2. include the following line in the machine configuration file
require conf/machine/include/meta-intel.inc
Once the above requirements are met, the machine features provided by
the meta-intel layer will be available for the BSP to use.
Available machine features
++++++++++++++++++++++++++
Currently, the meta-intel layer makes the following set of
Intel-specific machine features available:
* intel-ucode
These machine features can be included by listing them in the
MACHINE_FEATURES variable in the machine configuration file. For
example:
MACHINE_FEATURES += "intel-ucode"
Machine feature details
+++++++++++++++++++++++
* intel-ucode
This feature provides support for microcode updates to Intel
processors. The intel-ucode feature runs at early boot and uses
the microcode data file added by the feature into the BSP's
initrd. It also puts the userland microcode-updating tool,
iucode_tool, into the target images along with the microcode data
file.
Q. Why might a user want to enable the intel-ucode feature?
A. Intel releases microcode updates to correct processor behavior
as documented in the respective processor specification
updates. While the normal approach to getting such microcode
updates is via a BIOS upgrade, this can be an administrative
hassle and not always possible in the field. The intel-ucode
feature enables the microcode update capability present in the
Linux kernel. It provides an easy path for upgrading processor
microcode without the need to change the BIOS. If the feature
is enabled, it is also possible to update the existing target
images with a newer microcode update in the future.
Q. How would a user bundle only target-specific microcode in the
target image?
A. The Intel microcode data file released by Intel contains
microcode updates for multiple processors. If the BSP image is
meant to run on only a certain subset of processor types, a
processor-specific subset of microcode can be bundled into the
target image via the UCODE_FILTER_PARAMETERS variable. This
works by listing a sequence of iucode-tool parameters in the
UCODE_FILTER_PARAMETERS variable, which in this case will
select only the specific microcode relevant to the BSP. For
more information on the underlying parameters refer to the
iucode-tool manual page at http://manned.org/iucode-tool
To define a set of parameters for microcode-filtering via the
UCODE_FILTER_PARAMETERS variable, one needs to identify the
cpuid signatures of all the processors the BSP is meant to run
on. One way to determine the cpuid signature for a specific
processor is to build and run an intel-ucode-feature-enabled
image on the target hardware, without first assigning any value
to the UCODE_FILTER_PARAMETERS variable, and then once the
image is booted, run the "ucode_tool -S" command to have the
ucode tool scan the system for processor signatures. These
signatures can then be used in the UCODE_FILTER_PARAMETERS
variable in conjunction with -s parameter. For example, for
the fri2 BSP, the cpuid can be determined as such:
[root@fri2 ~]# iucode_tool -S
iucode_tool: system has processor(s) with signature 0x00020661
Given that output, a suitable UCODE_FILTER_PARAMETERS variable
definition could be specified in the machine configuration as
such:
UCODE_FILTER_PARAMETERS = "-s 0x00020661"
Q. Are there any reasons a user might want to disable the
intel-ucode feature?
A. The microcode data file and associated tools occupy a small
amount of space (a few KB) on the target image. BSPs which are
highly sensitive to target image size and which are not
experiencing microcode-related issues might consider not
enabling this feature.
IV. Tested Hardware
===================
The following undergo regular basic testing with their respective MACHINE types.
Note that both 64-bit and 32-bit firmware is available for the MinnowBoard
Turbot, so it is tested against both intel-corei7-64 and intel-core2-32.
intel-corei7-64:
NUC6i5SYH
NUC7i7BNH
Coffee Lake-H
intel-core2-32:
MinnowBoard Turbot
V. Guidelines for submitting patches
====================================
Please submit any patches against meta-intel BSPs to the meta-intel
mailing list (meta-intel@lists.yoctoproject.org). Also, if your patches are
available via a public git repository, please also include a URL to
the repo and branch containing your patches as that makes it easier
for maintainers to grab and test your patches.
There are patch submission scripts available that will, among other
things, automatically include the repo URL and branch as mentioned.
Please see the Yocto Project Development Manual sections entitled
'Using Scripts to Push a Change Upstream and Request a Pull' and
'Using Email to Submit a Patch' for details.
Regardless of how you submit a patch or patchset, the patches should
at minimum follow the suggestions outlined in the 'Submitting a Change
to the Yocto Project' section in the Yocto Project Development Manual.
Specifically, they should:
- Include a 'Signed-off-by:' line. A commit can't legally be pulled
in without this.
- Provide a single-line, short summary of the change. This short
description should be prefixed by the BSP or recipe name, as
appropriate, followed by a colon. Capitalize the first character
of the summary (following the colon).
- For the body of the commit message, provide detailed information
that describes what you changed, why you made the change, and the
approach you used.
- If the change addresses a specific bug or issue that is associated
with a bug-tracking ID, include a reference to that ID in your
detailed description in the following format: [YOCTO #<bug-id>].
- Pay attention to line length - please don't allow any particular
line in the commit message to stretch past 72 characters.
- For any non-trivial patch, provide information about how you
tested the patch, and for any non-trivial or non-obvious testing
setup, provide details of that setup.
Doing a quick 'git log' in meta-intel will provide you with many
examples of good example commits if you have questions about any
aspect of the preferred format.
The meta-intel maintainers will do their best to review and/or pull in
a patch or patchset within 24 hours of the time it was posted. For
larger and/or more involved patches and patchsets, the review process
may take longer.
Please see the meta-intel/MAINTAINERS file for the list of maintainers
and their specific areas; it's also a good idea to cc: the specific
maintainer, if applicable.

View File

@ -1,35 +0,0 @@
# meta-intel
OpenEmbedded/Yocto BSP layer for Intel platforms.
## Dependencies
This layer primarily depends on OpenEmbedded-Core (OE-Core). However, certain
recipes may require additional layers to support optional features or
programming languages not supported by OE-Core. Such recipes are located within
the `dynamic-layers` directory.
Base dependencies:
- [Bitbake](https://git.openembedded.org/bitbake)
- [OE-Core](https://git.openembedded.org/openembedded-core)
Dynamic additional dependencies:
- [meta-openembedded](https://git.openembedded.org/meta-openembedded/tree/meta-oe)
- [meta-python](https://git.openembedded.org/meta-openembedded/tree/meta-python)
- [meta-clang](https://github.com/kraj/meta-clang.git)
## Contents
- [Building and booting meta-intel BSP layers](documentation/building_and_booting.md)
- [Intel oneAPI DPC++/C++ Compiler](documentation/dpcpp-compiler.md)
- [Build Image with OpenVINO™ toolkit](documentation/openvino.md)
- [Tested Hardware](documentation/tested_hardware.md)
- [Guidelines for submitting patches](documentation/submitting_patches.md)
- [Reporting bugs](documentation/reporting_bugs.md)
- [Reporting security bugs](SECURITY.md)
## Maintainers
- Yogesh Tyagi <yogesh.tyagi@intel.com>

17
README.sources Normal file
View File

@ -0,0 +1,17 @@
The sources for the packages comprising the images shipped with this
BSP can be found at the following location:
http://downloads.yoctoproject.org/mirror/sources/
The metadata used to generate the images shipped with this BSP, in
addition to the code contained in this BSP, can be found at the
following location:
http://downloads.yoctoproject.org/releases/yocto/yocto-2.7/poky-warrior-21.0.0.tar.bz2
The metadata used to generate the images shipped with this BSP, in
addition to the code contained in this BSP, can also be found at the
following locations:
git://git.yoctoproject.org/poky.git
git://git.yoctoproject.org/meta-intel

View File

@ -1,6 +0,0 @@
# Security Policy
Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation.
## Reporting a Vulnerability
Please report any security vulnerabilities in this project [utilizing the guidelines here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html).

View File

@ -0,0 +1,151 @@
# This class brings a more generic version of the UEFI combo app from refkit to meta-intel.
# It uses a combo file, containing kernel, initramfs and
# command line, presented to the BIOS as UEFI application, by prepending
# it with the efi stub obtained from systemd-boot.
# Don't add syslinux or build an ISO
PCBIOS_forcevariable = "0"
NOISO_forcevariable = "1"
# image-live.bbclass will default INITRD_LIVE to the image INITRD_IMAGE creates.
# We want behavior to be consistent whether or not "live" is in IMAGE_FSTYPES, so
# we default INITRD_LIVE to the INITRD_IMAGE as well.
INITRD_IMAGE ?= "core-image-minimal-initramfs"
INITRD_LIVE ?= " ${@ ('${DEPLOY_DIR_IMAGE}/' + d.getVar('INITRD_IMAGE', expand=True) + '-${MACHINE}.cpio.gz') if d.getVar('INITRD_IMAGE', True) else ''}"
do_uefiapp[depends] += " \
intel-microcode:do_deploy \
systemd-boot:do_deploy \
virtual/kernel:do_deploy \
"
# INITRD_IMAGE is added to INITRD_LIVE, which we use to create our initrd, so depend on it if it is set
do_uefiapp[depends] += "${@ '${INITRD_IMAGE}:do_image_complete' if d.getVar('INITRD_IMAGE') else ''}"
# The image does without traditional bootloader.
# In its place, instead, it uses a single UEFI executable binary, which is
# composed by:
# - an UEFI stub
# The linux kernel can generate a UEFI stub, however the one from systemd-boot can fetch
# the command line from a separate section of the EFI application, avoiding the need to
# rebuild the kernel.
# - the kernel
# - an initramfs (optional)
def create_uefiapp(d, uuid=None, app_suffix=''):
import glob, re
from subprocess import check_call
build_dir = d.getVar('B')
deploy_dir_image = d.getVar('DEPLOY_DIR_IMAGE')
image_link_name = d.getVar('IMAGE_LINK_NAME')
cmdline = '%s/cmdline.txt' % build_dir
linux = '%s/%s' % (deploy_dir_image, d.getVar('KERNEL_IMAGETYPE'))
initrd = '%s/initrd' % build_dir
stub_path = '%s/linux*.efi.stub' % deploy_dir_image
stub = glob.glob(stub_path)[0]
m = re.match(r"\S*(ia32|x64)(.efi)\S*", os.path.basename(stub))
app = "boot%s%s%s" % (m.group(1), app_suffix, m.group(2))
executable = '%s/%s.%s' % (deploy_dir_image, image_link_name, app)
if d.getVar('INITRD_LIVE'):
with open(initrd, 'wb') as dst:
for cpio in d.getVar('INITRD_LIVE').split():
with open(cpio, 'rb') as src:
dst.write(src.read())
initrd_cmd = "--add-section .initrd=%s --change-section-vma .initrd=0x3000000 " % initrd
else:
initrd_cmd = ""
root = 'root=PARTUUID=%s' % uuid if uuid else ''
with open(cmdline, 'w') as f:
f.write('%s %s' % (d.getVar('APPEND'), root))
objcopy_cmd = ("objcopy "
"--add-section .cmdline=%s --change-section-vma .cmdline=0x30000 "
"--add-section .linux=%s --change-section-vma .linux=0x40000 "
"%s %s %s") % \
(cmdline, linux, initrd_cmd, stub, executable)
check_call(objcopy_cmd, shell=True)
python create_uefiapps () {
# We must clean up anything that matches the expected output pattern, to ensure that
# the next steps do not accidentally use old files.
import glob
pattern = d.expand('${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi')
for old_efi in glob.glob(pattern):
os.unlink(old_efi)
uuid = d.getVar('DISK_SIGNATURE_UUID')
create_uefiapp(d, uuid=uuid)
}
# This is intentionally split into different parts. This way, derived
# classes or images can extend the individual parts. We can also use
# whatever language (shell script or Python) is more suitable.
python do_uefiapp() {
bb.build.exec_func('create_uefiapps', d)
}
do_uefiapp[vardeps] += "APPEND DISK_SIGNATURE_UUID INITRD_LIVE KERNEL_IMAGETYPE IMAGE_LINK_NAME"
uefiapp_deploy_at() {
dest=$1
for i in ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi; do
target=`basename $i`
target=`echo $target | sed -e 's/${IMAGE_LINK_NAME}.//'`
cp --preserve=timestamps -r $i $dest/$target
done
}
fakeroot do_uefiapp_deploy() {
rm -rf ${IMAGE_ROOTFS}/boot/*
dest=${IMAGE_ROOTFS}/boot/EFI/BOOT
mkdir -p $dest
uefiapp_deploy_at $dest
}
do_uefiapp_deploy[depends] += "${PN}:do_uefiapp virtual/fakeroot-native:do_populate_sysroot"
# This decides when/how we add our tasks to the image
python () {
image_fstypes = d.getVar('IMAGE_FSTYPES', True)
initramfs_fstypes = d.getVar('INITRAMFS_FSTYPES', True)
# Don't add any of these tasks to initramfs images
if initramfs_fstypes not in image_fstypes:
bb.build.addtask('uefiapp', 'do_image', 'do_rootfs', d)
bb.build.addtask('uefiapp_deploy', 'do_image', 'do_rootfs', d)
}
SIGN_AFTER ?= "do_uefiapp"
SIGN_BEFORE ?= "do_uefiapp_deploy"
SIGNING_DIR ?= "${DEPLOY_DIR_IMAGE}"
SIGNING_BINARIES ?= "${IMAGE_LINK_NAME}.boot*.efi"
inherit uefi-sign
# Legacy hddimg support below this line
efi_hddimg_populate() {
uefiapp_deploy_at "$1"
}
build_efi_cfg() {
# The command line is built into the combo app, so this is a null op
:
}
populate_kernel_append() {
# The kernel and initrd are built into the app, so we don't need these
if [ -f $dest/initrd ]; then
rm $dest/initrd
fi
if [ -f $dest/vmlinuz ]; then
rm $dest/vmlinuz
fi
}
IMAGE_FEATURES[validitems] += "secureboot"

50
classes/uefi-sign.bbclass Normal file
View File

@ -0,0 +1,50 @@
# By default, sign all .efi binaries in ${B} after compiling and before deploying
SIGNING_DIR ?= "${B}"
SIGNING_BINARIES ?= "*.efi"
SIGN_AFTER ?= "do_compile"
SIGN_BEFORE ?= "do_deploy"
python () {
import os
import hashlib
# Ensure that if the signing key or cert change, we rerun the uefiapp process
if bb.utils.contains('IMAGE_FEATURES', 'secureboot', True, False, d):
for varname in ('SECURE_BOOT_SIGNING_CERT', 'SECURE_BOOT_SIGNING_KEY'):
filename = d.getVar(varname)
if filename is None:
bb.fatal('%s is not set.' % varname)
if not os.path.isfile(filename):
bb.fatal('%s=%s is not a file.' % (varname, filename))
with open(filename, 'rb') as f:
data = f.read()
hash = hashlib.sha256(data).hexdigest()
d.setVar('%s_HASH' % varname, hash)
# Must reparse and thus rehash on file changes.
bb.parse.mark_dependency(d, filename)
bb.build.addtask('uefi_sign', d.getVar('SIGN_BEFORE'), d.getVar('SIGN_AFTER'), d)
# Original binary needs to be regenerated if the hash changes since we overwrite it
# SIGN_AFTER isn't necessarily when it gets generated, but its our best guess
d.appendVarFlag(d.getVar('SIGN_AFTER'), 'vardeps', 'SECURE_BOOT_SIGNING_CERT_HASH SECURE_BOOT_SIGNING_KEY_HASH')
}
do_uefi_sign() {
if [ -f ${SECURE_BOOT_SIGNING_KEY} ] && [ -f ${SECURE_BOOT_SIGNING_CERT} ]; then
for i in `find ${SIGNING_DIR}/ -name '${SIGNING_BINARIES}'`; do
sbsign --key ${SECURE_BOOT_SIGNING_KEY} --cert ${SECURE_BOOT_SIGNING_CERT} $i
sbverify --cert ${SECURE_BOOT_SIGNING_CERT} $i.signed
mv $i.signed $i
done
fi
}
do_uefi_sign[depends] += "sbsigntool-native:do_populate_sysroot"
do_uefi_sign[vardeps] += "SECURE_BOOT_SIGNING_CERT_HASH \
SECURE_BOOT_SIGNING_KEY_HASH \
SIGNING_BINARIES SIGNING_DIR \
SIGN_BEFORE SIGN_AFTER \
"

View File

@ -1,46 +1,45 @@
# This file contains a list of recipe maintainers for meta-intel
RECIPE_MAINTAINER:pn-backport-iwlwifi = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-core-image-rt = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-core-image-rt-sdk = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-core-image-tiny = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-core-image-minimal-initramfs = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-embree = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-gmmlib = "Lim Siew Hoon <siew.hoon.lim@intel.com>"
RECIPE_MAINTAINER:pn-intel-cmt-cat = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-intel-compute-runtime = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-intel-crypto-mb = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-intel-graphics-compiler = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-intel-media-driver = "Lim Siew Hoon <siew.hoon.lim@intel.com>"
RECIPE_MAINTAINER:pn-intel-microcode = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-intel-vaapi-driver = "Lim Siew Hoon <siew.hoon.lim@intel.com>"
RECIPE_MAINTAINER:pn-ipmctl = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-isa-l = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-ispc = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-itt = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-ixgbe = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-ixgbevf = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-iucode-tool = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-level-zero = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-libipt = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-libva-intel = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-libva-intel-utils = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-libxcam = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-linux-intel = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-linux-intel-rt = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-linux-intel-dev = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-linux-npu-driver = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-lms = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-metee = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-metrics-discovery = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-oidn = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-onednn = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-onedpl = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-onevpl = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-onevpl-intel-gpu = "Yew Chang Ching <chang.ching.yew@intel.com>"
RECIPE_MAINTAINER:pn-opencl-clang = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-openvkl = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-ospray = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-rkcommon = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER:pn-thermald = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-xf86-video-ast = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-backport-iwlwifi = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-core-image-rt = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-core-image-rt-sdk = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-core-image-tiny = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-core-image-minimal-initramfs = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-gmmlib = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-hdcp = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-intel-graphics-compiler = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-intel-compute-runtime = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-intel-media-driver = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-intel-mediasdk = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-intel-microcode = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-intel-vaapi-driver = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-ipmctl = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-isa-l = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-itt = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-ixgbe = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-ixgbevf = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-iucode-tool = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-jhi = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-level-zero = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-libipt = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-libyami = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-libyami-utils = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-libxcam = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-linux-intel = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-linux-intel-rt = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-linux-intel-dev = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-lms = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-metee = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-metrics-discovery = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-onednn = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-open-model-zoo = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-opencl-clang = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-openvino-inference-engine = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-openvino-model-optimizer = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-ovmf-shell-image-enrollkeys = "Naveen Saini <naveen.kumar.saini@intel.com>"
RECIPE_MAINTAINER_pn-sbsigntool-native = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-secureboot-selftest-image-signed = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-secureboot-selftest-image-unsigned = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-thermald = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-xf86-video-ast = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER_pn-zlib-intel = "Naveen Saini <naveen.kumar.saini@intel.com>"

View File

@ -10,16 +10,15 @@ BBFILE_PATTERN_intel := "^${LAYERDIR}/"
BBFILE_PRIORITY_intel = "5"
# Additional license directories.
CUSTOM_LICENSES_PATH = "${LAYERDIR}/custom-licenses"
LICENSE_PATH += "${CUSTOM_LICENSES_PATH}"
LICENSE_PATH += "${LAYERDIR}/custom-licenses"
LAYERDEPENDS_intel = "core"
LAYERRECOMMENDS_intel = "dpdk"
LAYERRECOMMENDS_intel = "dpdk intel-qat"
# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
LAYERVERSION_intel = "5"
LAYERSERIES_COMPAT_intel = "scarthgap whinlatter"
LAYERSERIES_COMPAT_intel = "dunfell gatesgarth hardknott"
BBFILES_DYNAMIC += " \
clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \
@ -32,6 +31,10 @@ BBFILES_DYNAMIC += " \
require ${LAYERDIR}/conf/include/maintainers.inc
PREFERRED_PROVIDER_zlib ?= "zlib"
PREFERRED_PROVIDER_zlib-native ?= "zlib-native"
PREFERRED_PROVIDER_nativesdk-zlib ?= "nativesdk-zlib"
# Use the libva from OE-Core when layer is included but no MACHINE
# from meta-intel is being used.
PREFERRED_PROVIDER_libva ?= "libva"
@ -41,5 +44,3 @@ PREFERRED_PROVIDER_nativesdk-libva ?= "nativesdk-libva"
PREFERRED_PROVIDER_libva-utils ?= "libva-utils"
PREFERRED_PROVIDER_libva-utils-native ?= "libva-utils-native"
PREFERRED_PROVIDER_nativesdk-libva-utils ?= "nativesdk-libva-utils"
addpylib ${LAYERDIR}/lib oeqa

View File

@ -1,15 +1,15 @@
INTEL_COMMON_PACKAGE_ARCH ?= "${TUNE_PKGARCH}-intel-common"
PACKAGE_ARCH:pn-linux-intel = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-linux-intel-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-linux-intel-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-linux-intel-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-linux-yocto = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-linux-yocto-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-linux-yocto-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-linux-yocto-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-intel-microcode = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH:pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_EXTRA_ARCHS:append = " ${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-intel = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-intel-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-intel-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-intel-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-yocto = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-yocto-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-yocto-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-linux-yocto-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-intel-microcode = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_ARCH_pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}"
PACKAGE_EXTRA_ARCHS_append += "${INTEL_COMMON_PACKAGE_ARCH}"
MACHINEOVERRIDES =. "${INTEL_COMMON_PACKAGE_ARCH}:"

View File

@ -3,5 +3,5 @@
#
DEFAULTTUNE ?= "core2-32"
require conf/machine/include/x86/tune-core2.inc
require conf/machine/include/x86/x86-base.inc
require conf/machine/include/tune-core2.inc
require conf/machine/include/x86-base.inc

View File

@ -3,5 +3,5 @@
#
DEFAULTTUNE ?= "corei7-64"
require conf/machine/include/x86/tune-corei7.inc
require conf/machine/include/x86/x86-base.inc
require conf/machine/include/tune-corei7.inc
require conf/machine/include/x86-base.inc

View File

@ -5,12 +5,17 @@
#
PREFERRED_PROVIDER_virtual/kernel ?= "linux-intel"
PREFERRED_PROVIDER_virtual/kernel:poky-tiny ?= "linux-intel"
PREFERRED_PROVIDER_virtual/kernel_poky-tiny ?= "linux-intel"
PREFERRED_VERSION_linux-intel ?= "6.12%"
PREFERRED_VERSION_linux-intel-rt ?= "6.12%"
PREFERRED_VERSION_linux-intel:poky-altcfg ?= "6.12%"
PREFERRED_VERSION_linux-intel-rt:poky-altcfg ?= "6.12%"
# Only use the Intel-tuned zlib for target builds to improve reuse
PREFERRED_PROVIDER_zlib = "zlib-intel"
PREFERRED_PROVIDER_zlib-native = "zlib-native"
PREFERRED_PROVIDER_nativesdk-zlib = "nativesdk-zlib"
PREFERRED_VERSION_linux-intel ?= "5.10%"
PREFERRED_VERSION_linux-intel-rt ?= "5.10%"
PREFERRED_VERSION_linux-intel_poky-altcfg ?= "5.4%"
PREFERRED_VERSION_linux-intel-rt_poky-altcfg ?= "5.4%"
# Need to point to latest version of libva needed for media components
PREFERRED_PROVIDER_libva = "libva-intel"
@ -21,24 +26,29 @@ PREFERRED_PROVIDER_libva-utils = "libva-intel-utils"
PREFERRED_PROVIDER_libva-utils-native = "libva-intel-utils-native"
PREFERRED_PROVIDER_nativesdk-libva-utils = "nativesdk-libva-intel-utils"
PREFERRED_VERSION_opencl-clang ?= "${@bb.utils.contains('LLVMVERSION', '10.0.1', '10.0.0', \
bb.utils.contains('LLVMVERSION', '11.1.0', '11.0.0', '12.0.0', d), d)}"
PREFERRED_VERSION_opencl-clang-native ?= "${@bb.utils.contains('LLVMVERSION', '10.0.1', '10.0.0', \
bb.utils.contains('LLVMVERSION', '11.1.0', '11.0.0', '12.0.0', d), d)}"
XSERVER_X86_ASPEED_AST = "xf86-video-ast \
"
# include the user space intel microcode loading support in the generated images.
MACHINE_ESSENTIAL_EXTRA_RDEPENDS:append = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', ' intel-microcode', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS_append = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', ' intel-microcode', '', d)}"
# recommended extra packages common to all intel machines
MACHINE_EXTRA_RRECOMMENDS:append = " kernel-modules linux-firmware"
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS:append = " kernel-module-i915 linux-firmware-i915 kernel-module-igc kernel-module-r8152"
MACHINE_EXTRA_RRECOMMENDS_append = " kernel-modules linux-firmware"
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS_append = " kernel-module-i915 linux-firmware-i915"
# for the early boot time kernel microcode loading support,
# merge the microcode data in the final initrd image.
INITRD_LIVE:prepend = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}"
INITRD_LIVE_prepend = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}"
DISK_SIGNATURE_UUID ??= "deadbeef-dead-beef-dead-beefdeadbeef"
EFI_PROVIDER ?= "systemd-boot"
EFI_PROVIDER:x86-x32 = "grub-efi"
EFI_PROVIDER_x86-x32 = "grub-efi"
# Add general MACHINEOVERRIDE for meta-intel
MACHINEOVERRIDES =. "intel-x86-common:"

View File

@ -2,7 +2,7 @@
# distro content (in particular the kernel) less than qemu.inc.
# Ensure that qemu gets built when building images.
EXTRA_IMAGEDEPENDS += "qemu-system-native qemu-helper-native:do_addto_recipe_sysroot"
EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
# Build ovmf firmware for uefi support in qemu.
EXTRA_IMAGEDEPENDS += "ovmf"

View File

@ -1,18 +1,19 @@
# For runqemu
IMAGE_CLASSES += "qemuboot"
QB_SYSTEM_NAME:intel-core2-32 = "qemu-system-i386"
QB_CPU:intel-core2-32 = "-cpu coreduo"
QB_CPU_KVM:intel-core2-32 = "-cpu kvm32"
QB_SYSTEM_NAME_intel-core2-32 = "qemu-system-i386"
QB_CPU_intel-core2-32 = "-cpu coreduo"
QB_CPU_KVM_intel-core2-32 = "-cpu kvm32"
QB_SYSTEM_NAME:intel-corei7-64 = "qemu-system-x86_64"
QB_CPU:intel-corei7-64 = "-cpu Nehalem"
QB_CPU_KVM:intel-corei7-64 = "-cpu kvm64"
QB_SYSTEM_NAME_intel-corei7-64 = "qemu-system-x86_64"
QB_CPU_intel-corei7-64 = "-cpu Nehalem"
QB_CPU_KVM_intel-corei7-64 = "-cpu kvm64"
QB_SYSTEM_NAME:intel-skylake-64 = "qemu-system-x86_64"
QB_CPU:intel-skylake-64 = "-cpu Skylake-Client"
QB_CPU_KVM:intel-skylake-64 = "-cpu Skylake-Client"
QB_SYSTEM_NAME_intel-skylake-64 = "qemu-system-x86_64"
QB_CPU_intel-skylake-64 = "-cpu Skylake-Client"
QB_CPU_KVM_intel-skylake-64 = "-cpu Skylake-Client"
QB_AUDIO_DRV = "alsa"
QB_AUDIO_OPT = "-device AC97"
QB_KERNEL_CMDLINE_APPEND = " oprofile.timer=1"
QB_OPT_APPEND = " -usb -usbdevice tablet "
QB_AUDIO_OPT = "-soundhw ac97,es1370"
QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=640x480-32 oprofile.timer=1 uvesafb.task_timeout=-1"
# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
QB_OPT_APPEND = "-vga vmware -show-cursor -usb -usbdevice tablet -device virtio-rng-pci"

View File

@ -0,0 +1,48 @@
# Settings for the GCC(1) cpu-type "skylake":
#
# Intel Skylake CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
# SSE4.2, AVX, AVX2 and POPCNT instruction set support.
#
# This tune is recommended for Intel Skylake CPU (and beyond).
#
DEFAULTTUNE ?= "skylake-64"
# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
require conf/machine/include/tune-corei7.inc
# Extra tune features
TUNEVALID[skylake] = "Enable skylake specific processor optimizations"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'skylake', ' -march=skylake ${SKYLAKE_TUNE} -mfpmath=sse', '', d)}"
# Extra tune selections
AVAILTUNES += "skylake-64"
TUNE_FEATURES_tune-skylake-64 = "${TUNE_FEATURES_tune-x86-64} skylake"
BASE_LIB_tune-skylake-64 = "lib64"
TUNE_PKGARCH_tune-skylake-64 = "skylake-64"
PACKAGE_EXTRA_ARCHS_tune-skylake-64 = "${PACKAGE_EXTRA_ARCHS_tune-core2-64} skylake-64"
QEMU_EXTRAOPTIONS_skylake-64 = " -cpu Skylake-Client"
# Disable QEMU usermode by default (get avx2)
MACHINE_FEATURES_remove = "qemu-usermode"
# If qemu-usermode is enabled, we have to disable avx2 ISA extensions, but we can keep mtune as skylake vs generic
SKYLAKE_TUNE .= "${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', ' -mtune=skylake ${QEMU_UNAVAILABLE_ISA}', '-mtune=generic -mavx2', d)}"
QEMU_UNAVAILABLE_ISA = " \
-mno-avx \
-mno-avx2 \
-mno-avx512f \
-mno-avx512er \
-mno-avx512cd \
-mno-avx512pf \
-mno-avx512dq \
-mno-avx512bw \
-mno-avx512vl \
-mno-avx512ifma \
-mno-avx512vbmi \
-mno-avx512vbmi2 \
-mno-avx512vnni \
-mno-avx512bitalg \
"

View File

@ -13,6 +13,9 @@ MACHINE_FEATURES += "intel-ucode"
MACHINE_HWCODECS ?= "intel-vaapi-driver gstreamer1.0-vaapi"
# Enable optional QAT items:
COMPATIBLE_MACHINE_pn-qat17 = "intel-core2-32"
XSERVER ?= "${XSERVER_X86_BASE} \
${XSERVER_X86_EXT} \
${XSERVER_X86_FBDEV} \
@ -29,4 +32,4 @@ APPEND += "rootwait console=ttyS0,115200 console=ttyPCH0,115200 console=tty0"
IMAGE_FSTYPES += "wic"
WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks.in", "grub-bootdisk-microcode.wks.in", d)}"
WKS_FILE_DEPENDS:append = " intel-microcode"
WKS_FILE_DEPENDS_append = " intel-microcode"

View File

@ -11,11 +11,15 @@ MACHINE_FEATURES += "pcbios efi"
MACHINE_FEATURES += "wifi 3g nfc"
MACHINE_FEATURES += "intel-ucode"
MACHINE_HWCODECS ?= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', '', 'intel-media-driver vpl-gpu-rt', d)} gstreamer1.0-vaapi"
MACHINE_HWCODECS ?= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', '', 'intel-media-driver intel-mediasdk', d)} gstreamer1.0-vaapi"
# Enable optional dpdk:
COMPATIBLE_MACHINE:pn-dpdk = "intel-corei7-64"
COMPATIBLE_MACHINE:pn-dpdk-module = "intel-corei7-64"
COMPATIBLE_MACHINE_pn-dpdk = "intel-corei7-64"
# Enable optional QAT items:
COMPATIBLE_MACHINE_pn-qat16 = "intel-corei7-64"
COMPATIBLE_MACHINE_pn-qat17 = "intel-corei7-64"
COMPATIBLE_MACHINE_pn-zlib-qat = "intel-corei7-64"
XSERVER ?= "${XSERVER_X86_BASE} \
${XSERVER_X86_EXT} \
@ -33,4 +37,4 @@ APPEND += "rootwait console=ttyS0,115200 console=tty0"
IMAGE_FSTYPES += "wic"
WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks.in", "grub-bootdisk-microcode.wks.in", d)}"
WKS_FILE_DEPENDS:append = " intel-microcode"
WKS_FILE_DEPENDS_append = " intel-microcode"

View File

@ -4,18 +4,17 @@
#@DESCRIPTION: Machine configuration for 64 bit Intel Skylake CPU (and later) with MMX, SSE, SSE2, SSE3, SSE4.1, SSE4.2, AVX, and AVX2 instruction set support. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware.
require conf/machine/include/meta-intel.inc
require conf/machine/include/x86/x86-base.inc
require conf/machine/include/x86/tune-x86-64-v3.inc
require conf/machine/include/x86-base.inc
require conf/machine/include/tune-skylake.inc
require conf/machine/include/intel-common-pkgarch.inc
MACHINE_FEATURES += "efi"
MACHINE_FEATURES += "wifi 3g nfc"
MACHINE_FEATURES += "intel-ucode"
MACHINE_HWCODECS ?= "intel-media-driver vpl-gpu-rt gstreamer1.0-vaapi"
MACHINE_HWCODECS ?= "intel-media-driver intel-mediasdk gstreamer1.0-vaapi"
COMPATIBLE_MACHINE:pn-dpdk = "intel-skylake-64"
COMPATIBLE_MACHINE:pn-dpdk-module = "intel-skylake-64"
COMPATIBLE_MACHINE_pn-dpdk = "intel-skylake-64"
XSERVER ?= "${XSERVER_X86_BASE} \
${XSERVER_X86_EXT} \
@ -33,4 +32,4 @@ APPEND += "rootwait console=ttyS0,115200 console=tty0"
IMAGE_FSTYPES += "wic"
WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks.in", "grub-bootdisk-microcode.wks.in", d)}"
WKS_FILE_DEPENDS:append = " intel-microcode"
WKS_FILE_DEPENDS_append = " intel-microcode"

View File

@ -1,392 +0,0 @@
Intel End User License Agreement for Developer Tools (Version October 2021)
IMPORTANT NOTICE - PLEASE READ AND AGREE BEFORE DOWNLOADING, INSTALLING, COPYING
OR USING
This Agreement is between you, or the company or other legal entity that you
represent and warrant you have the legal authority to bind, (each, "You" or
"Your") and Intel Corporation and its subsidiaries (collectively, "Intel")
regarding Your use of the Materials. By downloading, installing, copying or
using the Materials, You agree to be bound by the terms of this Agreement. If
You do not agree to the terms of this Agreement, or do not have legal authority
or required age to agree to them, do not download, install, copy or use the
Materials.
1. LICENSE DEFINITIONS.
A. "Cloud Provider" means a third party service provider offering a cloud-based
platform, infrastructure, application or storage services, such as Microsoft
Azure or Amazon Web Services, which You may only utilize to host the
Materials subject to the restrictions set forth in Section 2.3 B.
B. "Derivative Work" means a derivative work, as defined in 17 U.S.C. 101, of
the Source Code.
C. "Executable Code" means computer programming code in binary form suitable
for machine execution by a processor without the intervening steps of
interpretation or compilation.
D. "Materials" mean the software, documentation, the software product serial
number, and other collateral, including any updates, made available to You
by Intel under this Agreement. Materials include Redistributables,
Executable Code, Source Code, Sample Source Code, and Pre-Release Materials,
but do not include Third Party Software.
E. "Pre-Release Materials" mean the Materials, or portions of the Materials,
that are identified (in the product release notes, on Intel's download
website for the Materials or elsewhere) or labeled as pre-release,
prototype, alpha or beta code and, as such, are deemed to be pre-release
code (i) which may not be fully functional or tested and may contain bugs or
errors; (ii) which Intel may substantially modify in its development of a
production version; or (iii) for which Intel makes no assurances that it
will ever develop or make a production version generally available.
Pre-Release Materials are subject to the terms of Section 3.2.
F. "Reciprocal Open Source Software" means any software that is subject to a
license which requires that (i) it must be distributed in source code form;
(ii) it must be licensed under the same open source license terms; and (iii)
its derivative works must be licensed under the same open source license
terms. Examples of this type of license are the GNU General Public License
or the Mozilla Public License.
G. "Redistributables" mean the files (if any) listed in the "redist.txt,"
"redist-rt.txt" or similarly-named text files that may be included in the
Materials. Redistributables include Sample Source Code.
H. "Sample Source Code" means those portions of the Materials that are Source
Code and are identified as sample code. Sample Source Code may not have been
tested or validated by Intel and is provided purely as a programming example.
I. "Source Code" means the software portion of the Materials provided in human
readable format.
J. "Third Party Software" mean the files (if any) listed in the
"third-party-software.txt" or other similarly-named text file that may be
included in the Materials for the applicable software. Third Party Software
is subject to the terms of Section 2.2.
K. "Your Product" means one or more applications, products or projects
developed by or for You using the Materials.
2. LICENSE GRANTS.
2.1 License to the Materials. Subject to the terms and conditions of this
Agreement, Intel grants You a non-exclusive, worldwide, non-assignable,
non-sublicensable, limited right and license under its copyrights, to:
A. reproduce internally a reasonable number of copies of the Materials for Your
personal or business use;
B. use the Materials solely for Your personal or business use to develop Your
Product, in accordance with the documentation included as part of the
Materials;
C. modify or create Derivative Works only of the Redistributables, or any
portions, that are provided to You in Source Code;
D. distribute (directly and through Your distributors, resellers, and other
channel partners, if applicable), the Redistributables, including any
modifications to or Derivative Works of the Redistributables or any portions
made pursuant to Section 2.1.C subject to the following conditions:
(1) Any distribution of the Redistributables must only be as part of Your
Product which must add significant primary functionality different than
that of the Redistributables themselves;
(2) You must only distribute the Redistributables originally provided to You
by Intel only in Executable Code subject to a license agreement that
prohibits reverse engineering, decompiling or disassembling the
Redistributables;
(3) This distribution right includes a limited right to sublicense only the
Intel copyrights in the Redistributables and only to the extent necessary
to perform, display, and distribute the Redistributables (including Your
modifications and Derivative Works of the Redistributables provided in
Source Code) solely as incorporated in Your Product; and
(4) You: (i) will be solely responsible to Your customers for any update,
support obligation or other obligation or liability which may arise from
the distribution of Your Product, (ii) will not make any statement that
Your Product is "certified" or that its performance is guaranteed by Intel
or its suppliers, (iii) will not use Intel's or its suppliers' names or
trademarks to market Your Product, (iv) will comply with any additional
restrictions which are included in the text files with the
Redistributables and in Section 3 below, (v) will indemnify, hold
harmless, and defend Intel and its suppliers from and against any claims
or lawsuits, costs, damages, and expenses, including attorney's fees, that
arise or result from (a) Your modifications or Derivative Works of the
Materials or (b) Your distribution of Your Product.
2.2 Third Party Software. Third Party Software, even if included with the
distribution of the Materials, may be governed by separate license terms,
including without limitation, third party license terms, open source
software notices and terms, and/or other Intel software license terms. These
separate license terms solely govern Your use of the Third Party Software.
2.3 Third Party Use.
A. If You are an entity, Your contractors may use the Materials under the
license specified in Section 2, provided: (i) their use of the Materials is
solely on behalf of and in support of Your business, (ii) they agree to the
terms and conditions of this Agreement, and (iii) You are solely responsible
for their use, misuse or disclosure of the Materials.
B. You may utilize a Cloud Provider to host the Materials for You, provided:
(i) the Cloud Provider may only host the Materials for Your exclusive use
and may not use the Materials for any other purpose whatsoever, including the
restriction set forth in Section 3.1(xi); (ii) the Cloud Provider's use of
the Materials must be solely on behalf of and in support of Your Product, and
(iii) You will indemnify, hold harmless, and defend Intel and its suppliers
from and against any claims or lawsuits, costs, damages, and expenses,
including attorney's fees, that arise or result from Your Cloud Provider's
use, misuse or disclosure of the Materials.
3. LICENSE CONDITIONS.
3.1 Restrictions. Except as expressly provided in this Agreement, You may NOT:
(i) use, reproduce, disclose, distribute, or publicly display the
Materials; (ii) share, publish, rent or lease the Materials to any third
party; (iii) assign this Agreement or transfer the Materials; (iv) modify,
adapt, or translate the Materials in whole or in part; (v) reverse engineer,
decompile, or disassemble the Materials, or otherwise attempt to derive the
source code for the software; (vi) work around any technical limitations in
the Materials; (vii) distribute, sublicense or transfer any Source Code,
modifications or Derivative Works of any Source Code to any third party;
(viii) remove, minimize, block or modify any notices of Intel or its
suppliers in the Materials; (ix) include the Redistributables in malicious,
deceptive, or unlawful programs or products or use the Materials in any way
that is against the law; (x) modify, create a Derivative Work, link, or
distribute the Materials so that any part of it becomes Reciprocal Open
Source Software; (xi) use the Materials directly or indirectly for SaaS
services or service bureau purposes (i.e., a service that allows use of or
access to the Materials by a third party as part of that service, such as
the salesforce.com service business model).
3.2 Pre-Release Materials. If You receive Pre-Release Materials, You may
reproduce a reasonable number of copies and use the Pre-Release Materials
for evaluation and testing purposes only. You may not (i) modify or
incorporate the Pre-Release Materials into Your Product; (ii) continue to
use the Pre-Release Materials once a commercial version is released; or
(iii) disclose to any third party any benchmarks, performance results, or
other information relating to the Pre-Release Materials. Intel may waive
these restrictions in writing at its sole discretion; however, if You decide
to use the Pre-Release Materials in Your Product (even with Intel's waiver),
You acknowledge and agree that You are fully responsible for any and all
issues that result from such use.
3.3 Safety-Critical, and Life-Saving Applications; Indemnity. The Materials may
provide information relevant to safety-critical applications
("Safety-Critical Applications") to allow compliance with functional safety
standards or requirements. You acknowledge and agree that safety is Your
responsibility. To the extent You use the Materials to create, or as part
of, products used in Safety-Critical Applications, it is Your responsibility
to design, manage, and ensure that there are system-level safeguards to
anticipate, monitor, and control system failures, and You agree that You are
solely responsible for all applicable regulatory standards and
safety-related requirements concerning Your use of the Materials in Safety
Critical Applications.
Should You use the Materials for Safety-Critical Applications or in any type
of a system or application in which the failure of the Materials could
create a situation where personal injury or death may occur (e.g., medical
systems, life-sustaining or life-saving systems) ("Life-Saving
Applications"), You agree to indemnify, defend, and hold Intel and its
representatives harmless against any claims or lawsuits, costs, damages, and
expenses, including reasonable attorney fees, arising in any way out of Your
use of the Materials in Safety-Critical Applications or Life-Saving
Applications and claims of product liability, personal injury or death
associated with those applications; even if such claims allege that Intel
was negligent or strictly liable regarding the design or manufacture of the
Materials or its failure to warn regarding the Materials.
3.4 Media Format Codecs and Digital Rights Management. You acknowledge and agree
that Your use of the Materials or distribution of the Redistributables with
Your Product as permitted by this Agreement may require You to procure
license(s) from third parties that may hold intellectual property rights
applicable to any media decoding, encoding or transcoding technology (e.g.,
the use of an audio or video codec) and/or digital rights management
capabilities of the Materials, if any. Should any such additional licenses
be required, You are solely responsible for obtaining any such licenses and
agree to obtain any such licenses at Your own expense.
4. DATA COLLECTION AND PRIVACY.
4.1 Data Collection. The Materials may generate and collect anonymous data
and/or provisioning data about the Materials and/or the development
environment and transmit the data to Intel as a one-time event during
installation. Optional data may also be collected by the Materials, however,
You will be provided notice of the request to collect optional data and no
optional data will be collected without Your consent. All data collection by
Intel is performed pursuant to relevant privacy laws, including notice and
consent requirements.
4.2 Intel's Privacy Notice. Intel is committed to respecting Your privacy. To
learn more about Intel's privacy practices, please visit
http://www.intel.com/privacy.
5. OWNERSHIP. Title to the Materials and all copies remain with Intel or its
suppliers. The Materials are protected by intellectual property rights,
including without limitation, United States copyright laws and international
treaty provisions. You will not remove any copyright or other proprietary
notices from the Materials. Except as expressly provided herein, no license
or right is granted to You directly or by implication, inducement, estoppel
or otherwise; specifically, Intel does not grant any express or implied right
to You under Intel patents, copyrights, trademarks, or trade secrets.
6. NO WARRANTY AND NO SUPPORT.
6.1 No Warranty. Disclaimer. Intel disclaims all warranties of any kind and the
terms and remedies provided in this Agreement are instead of any other
warranty or condition, express, implied or statutory, including those
regarding merchantability, fitness for any particular purpose,
non-infringement or any warranty arising out of any course of dealing, usage
of trade, proposal, specification or sample. Intel does not assume (and does
not authorize any person to assume on its behalf) any liability.
6.2 No Support; Priority Support. Intel may make changes to the Materials, or to
items referenced therein, at any time without notice, but is not obligated
to support, update or provide training for the Materials under the terms of
this Agreement. Intel offers free community and paid priority support
options. More information on these support options can be found at:
https://software.intel.com/content/www/us/en/develop/support/priority-support.html.
7. LIMITATION OF LIABILITY.
7.1 Intel will not be liable for any of the following losses or damages (whether
such losses or damages were foreseen, foreseeable, known or otherwise): (i)
loss of revenue; (ii) loss of actual or anticipated profits; (iii) loss of
the use of money; (iv) loss of anticipated savings; (v) loss of business;
(vi) loss of opportunity; (vii) loss of goodwill; (viii) loss of use of the
Materials; (ix) loss of reputation; (x) loss of, damage to, or corruption of
data; or (xi) any indirect, incidental, special or consequential loss of
damage however caused (including loss or damage of the type specified in
this Section 7).
7.2 Intel's total cumulative liability to You, including for direct damages for
claims relating to this Agreement, and whether for breach of contract,
negligence, or for any other reason, will not exceed $100.
7.3 You acknowledge that the limitations of liability provided in this Section 7
are an essential part of this Agreement. You agree that the limitations of
liability provided in this Agreement with respect to Intel will be conveyed
to and made binding upon any customer of Yours that acquires the
Redistributables.
8. USER SUBMISSIONS. Should you provide Intel with comments, modifications,
corrections, enhancements or other input ("Feedback") related to the
Materials, Intel will be free to use, disclose, reproduce, license or
otherwise distribute or exploit the Feedback in its sole discretion without
any obligations or restrictions of any kind, including without limitation,
intellectual property rights or licensing obligations. If You wish to provide
Intel with information that You intend to be treated as confidential
information, Intel requires that such confidential information be provided
pursuant to a non-disclosure agreement ("NDA"); please contact Your Intel
representative to ensure the proper NDA is in place.
9. NON-DISCLOSURE. Information provided by Intel to You may include information
marked as confidential. You must treat such information as confidential under
the terms of the applicable NDA between Intel and You. If You have not
entered into an NDA with Intel, You must not disclose, distribute or make use
of any information marked as confidential, except as expressly authorized in
writing by Intel. Intel retains all rights in and to its confidential
information specifications, designs, engineering details, discoveries,
inventions, patents, copyrights, trademarks, trade secrets, and other
proprietary rights relating to the Materials. Any breach by You of the
confidentiality obligations provided for in this Section 9 will cause
irreparable injury to Intel for which money damages may be inadequate to
compensate Intel for losses arising from such a breach. Intel may obtain
equitable relief, including injunctive relief, if You breach or threaten to
breach Your confidentiality obligations.
10. TERM AND TERMINATION. This Agreement becomes effective on the date You
accept this Agreement and will continue until terminated as provided for in
this Agreement. The term for any Pre-Release Materials terminates upon
release of a commercial version. This Agreement will terminate if You are in
breach of any of its terms and conditions. Upon termination, You will
promptly destroy the Materials and all copies. In the event of termination of
this Agreement, Your license to any Redistributables distributed by You in
accordance with the terms and conditions of this Agreement, prior to the
effective date of such termination, will survive any such termination of this
Agreement. Sections 1, 2.1.D(4)(v), 2.2, 2.3.A(iii), 2.3.B(iii), 3.3, 5, 6,
7, 8, 9, 10 (with respect to these survival provisions in the last sentence),
and 12 will survive expiration or termination of this Agreement.
11. U.S. GOVERNMENT RESTRICTED RIGHTS. The technical data and computer software
covered by this license is a "Commercial Item," as such term is defined by
the FAR 2.101 (48 C.F.R. 2.101) and is "commercial computer software" and
"commercial computer software documentation" as specified under FAR 12.212
(48 C.F.R. 12.212) or DFARS 227.7202 (48 C.F.R. 227.7202), as applicable.
This commercial computer software and related documentation is provided to
end users for use by and on behalf of the U.S. Government with only those
rights as are granted to all other end users pursuant to the terms and
conditions of this Agreement.
12. GENERAL PROVISIONS.
12.1 ENTIRE AGREEMENT. This Agreement contains the complete and exclusive
agreement and understanding between the parties concerning the subject
matter of this Agreement, and supersedes all prior and contemporaneous
proposals, agreements, understanding, negotiations, representations,
warranties, conditions, and communications, oral or written, between the
parties relating to the same subject matter. Each party acknowledges and
agrees that in entering into this Agreement it has not relied on, and will
not be entitled to rely on, any oral or written representations,
warranties, conditions, understanding, or communications between the
parties that are not expressly set forth in this Agreement. The express
provisions of this Agreement control over any course of performance, course
of dealing, or usage of the trade inconsistent with any of the provisions
of this Agreement. The provisions of this Agreement will prevail
notwithstanding any different, conflicting, or additional provisions that
may appear on any purchase order, acknowledgement, invoice, or other
writing issued by either party in connection with this Agreement. No
modification or amendment to this Agreement will be effective unless in
writing and signed by authorized representatives of each party, and must
specifically identify this Agreement by its title and version (e.g., "Intel
End User License Agreement for Developer Tools (Version October 2021)");
except that Intel may make changes to this Agreement as it distributes new
versions of the Materials. When changes are made, Intel will make a new
version of the Agreement available on its website. If You received a copy
of this Agreement translated into another language, the English language
version of this Agreement will prevail in the event of any conflict between
versions.
12.2 EXPORT. You acknowledge that the Materials and all related technical
information are subject to export controls and you agree to comply with all
laws and regulations of the United States and other applicable governments
governing export, re-export, import, transfer, distribution, and use of the
Materials. In particular, but without limitation, the Materials may not be
exported or re-exported (i) into any U.S. embargoed countries or (ii) to
any person or entity listed on a denial order published by the U.S.
government or any other applicable governments. By using the Materials, You
represent and warrant that You are not located in any such country or on
any such list. You also agree that You will not use the Materials for, or
sell or transfer them to a third party who is known or suspected to be
involved in, any purposes prohibited by the U.S. government or other
applicable governments, including, without limitation, the development,
design, manufacture, or production of nuclear, missile, chemical or
biological weapons.
12.3 GOVERNING LAW, JURISDICTION, AND VENUE. All disputes arising out of or
related to this Agreement, whether based on contract, tort, or any other
legal or equitable theory, will in all respects be governed by, and
construed and interpreted under, the laws of the United States of America
and the State of Delaware, without reference to conflict of laws
principles. The parties agree that the United Nations Convention on
Contracts for the International Sale of Goods (1980) is specifically
excluded from and will not apply to this Agreement. All disputes arising
out of or related to this Agreement, whether based on contract, tort, or
any other legal or equitable theory, will be subject to the exclusive
jurisdiction of the courts of the State of Delaware or of the Federal
courts sitting in that State. Each party submits to the personal
jurisdiction of those courts and waives all objections to that jurisdiction
and venue for those disputes.
12.4 SEVERABILITY. The parties intend that if a court holds that any provision
or part of this Agreement is invalid or unenforceable under applicable law,
the court will modify the provision to the minimum extent necessary to make
it valid and enforceable, or if it cannot be made valid and enforceable,
the parties intend that the court will sever and delete the provision or
part from this Agreement. Any change to or deletion of a provision or part
of this Agreement under this Section will not affect the validity or
enforceability of the remainder of this Agreement, which will continue in
full force and effect.

View File

@ -1,73 +1,63 @@
Intel Simplified Software License (Version August 2021)
Intel Simplified Software License (Version April 2018)
Use and Redistribution. You may use and redistribute the software (the
"Software"), without modification, provided the following conditions are met:
Copyright (c) 2018 Intel Corporation.
* Redistributions must reproduce the above copyright notice and the following
terms of use in the Software and in the documentation and/or other materials
provided with the distribution.
* Neither the name of Intel nor the names of its suppliers may be used to
endorse or promote products derived from this Software without specific
prior written permission.
* No reverse engineering, decompilation, or disassembly of this Software is
permitted.
Use and Redistribution. You may use and redistribute the software (the "Software"), without modification,
provided the following conditions are met:
No other licenses. Except as provided in the preceding section, Intel grants no
licenses or other rights by implication, estoppel or otherwise to, patent,
copyright, trademark, trade name, service mark or other intellectual property
licenses or rights of Intel.
* Redistributions must reproduce the above copyright notice and the following terms of use in the Software
and in the documentation and/or other materials provided with the distribution.
Third party software. The Software may contain Third Party Software. "Third
Party Software" is open source software, third party software, or other Intel
software that may be identified in the Software itself or in the files (if any)
listed in the "third-party-software.txt" or similarly named text file included
with the Software. Third Party Software, even if included with the distribution
of the Software, may be governed by separate license terms, including without
limitation, open source software license terms, third party software license
terms, and other Intel software license terms. Those separate license terms
solely govern your use of the Third Party Software, and nothing in this license
limits any rights under, or grants rights that supersede, the terms of the
applicable license terms.
* Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived
from this Software without specific prior written permission.
DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE
DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS
WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE
THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND
ATTORNEYS' FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT
INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE.
* No reverse engineering, decompilation, or disassembly of this Software is permitted.
LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Limited patent license. Intel grants you a world-wide, royalty-free, non-exclusive license under patents
it now or hereafter owns or controls to make, have made, use, import, offer to sell and sell ("Utilize")
this Software, but solely to the extent that any such patent is necessary to Utilize the Software alone.
The patent license shall not apply to any combinations which include this software. No hardware per se
is licensed hereunder.
No support. Intel may make changes to the Software, at any time without notice,
and is not obligated to support, update or provide training for the Software.
Third party and other Intel programs. "Third Party Programs" are the files listed in the
"third-party-programs.txt" text file that is included with the Software and may include Intel programs
under separate license terms. Third Party Programs, even if included with the distribution of the Materials,
are governed by separate license terms and those license terms solely govern your use of those programs.
Termination. Your right to use the Software is terminated in the event of your
breach of this license.
DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
AND NON-INFRINGEMENT ARE DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS
WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE THAT YOU ARE FULLY RESPONSIBLE
FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND ATTORNEYS FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM
ALLEGES THAT INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE MATERIALS.
Feedback. Should you provide Intel with comments, modifications, corrections,
enhancements or other input ("Feedback") related to the Software, Intel will be
free to use, disclose, reproduce, license or otherwise distribute or exploit the
Feedback in its sole discretion without any obligations or restrictions of any
kind, including without limitation, intellectual property rights or licensing
obligations.
LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU AGREE TO
INDEMNIFY AND HOLD INTEL HARMLESS AGAINST ANY CLAIMS AND EXPENSES RESULTING FROM YOUR USE OR UNAUTHORIZED
USE OF THE SOFTWARE.
Compliance with laws. You agree to comply with all relevant laws and regulations
governing your use, transfer, import or export (or prohibition thereof) of the
Software.
No support. Intel may make changes to the Software, at any time without notice, and is not obligated to
support, update or provide training for the Software.
Governing law. All disputes will be governed by the laws of the United States of
America and the State of Delaware without reference to conflict of law
principles and subject to the exclusive jurisdiction of the state or federal
courts sitting in the State of Delaware, and each party agrees that it submits
to the personal jurisdiction and venue of those courts and waives any
objections. The United Nations Convention on Contracts for the International
Sale of Goods (1980) is specifically excluded and will not apply to the
Software.
Termination. Intel may terminate your right to use the Software in the event of your breach of this Agreement
and you fail to cure the breach within a reasonable period of time.
Feedback. Should you provide Intel with comments, modifications, corrections, enhancements or other input
("Feedback") related to the Software Intel will be free to use, disclose, reproduce, license or otherwise
distribute or exploit the Feedback in its sole discretion without any obligations or restrictions of any
kind, including without limitation, intellectual property rights or licensing obligations.
Compliance with laws. You agree to comply with all relevant laws and regulations governing your use,
transfer, import or export (or prohibition thereof) of the Software.
Governing law. All disputes will be governed by the laws of the United States of America and the State
of Delaware without reference to conflict of law principles and subject to the exclusive jurisdiction of
the state or federal courts sitting in the State of Delaware, and each party agrees that it submits to
the personal jurisdiction and venue of those courts and waives any objections. The United Nations
Convention on Contracts for the International Sale of Goods (1980) is specifically excluded and will
not apply to the Software.
*Other names and brands may be claimed as the property of others.

View File

@ -1,32 +0,0 @@
Copyright (c) 2009, Stanford University, and authors listed below.
All rights reserved.
Original authors:
Solomon Boulos
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
Neither the name of Stanford University nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,134 +0,0 @@
### Building the Intel BSP layers
The intel-common BSP provide a few carefully selected tune options and
generic hardware support to cover the majority of current Intel CPUs and
devices. The naming follows the convention of intel-<TUNE>-<BITS>, where
TUNE is the gcc cpu-type (used with mtune and march typically) and BITS
is either 32 bit or 64 bit.
In order to build an image with BSP support for a given release, you
need to clone the meta-intel layer from git repository:
```
git clone https://git.yoctoproject.org/meta-intel
```
Check out the appropriate branch or release tags. The branch name and tags
would align with Yocto Project
[Release Codenames](https://wiki.yoctoproject.org/wiki/Releases).
Assuming meta-intel repository is cloned at the top-level of
OE-Core build tree, you can build a BSP image by adding the location of
the meta-intel layer to bblayers.conf:
```
BBLAYERS = " \
/openembedded-core/meta \
/openembedded-core/meta-intel "
```
To enable a particular machine, add a MACHINE line naming the BSP
to the local.conf file:
```
MACHINE ?= "intel-corei7-64"
```
where this can be replaced by other MACHINE types available:
- intel-core2-32
This BSP is optimized for the Core2 family of CPUs as well as all
Atom CPUs prior to the Silvermont core.
- intel-corei7-64
This BSP is optimized for Nehalem and later Core and Xeon CPUs as
well as Silvermont and later Atom CPUs, such as the Baytrail SoCs.
- intel-skylake-64
This BSP uses [x86-64-v3 tuning](https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html).
You should then be able to build an image as such:
```
$ source oe-init-build-env
$ bitbake core-image-sato
```
At the end of a successful build, you should have an image that
you can boot from a USB flash drive.
## Booting the intel-common BSP images
If you've built your own image, you'll find the bootable
image in the build/tmp/deploy/images/{MACHINE} directory, where
'MACHINE' refers to the machine name used in the build.
Under Linux, insert a USB flash drive. Assuming the USB flash drive
takes device /dev/sdf, use dd to copy the image to it. Before the image
can be burned onto a USB drive, it should be un-mounted. Some Linux distros
may automatically mount a USB drive when it is plugged in. Using USB device
/dev/sdf as an example, find all mounted partitions:
```
$ mount | grep sdf
```
and un-mount those that are mounted, for example:
```
$ umount /dev/sdf1
$ umount /dev/sdf2
```
Now burn the image onto the USB drive:
```
$ sudo dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf status=progress
$ sync
$ eject /dev/sdf
```
This should give you a bootable USB flash device. Insert the device
into a bootable USB socket on the target, and power on. This should
result in a system booted to the Sato graphical desktop.
If you want a terminal, use the arrows at the top of the UI to move to
different pages of available applications, one of which is named
'Terminal'. Clicking that should give you a root terminal.
If you want to ssh into the system, you can use the root terminal to
ifconfig the IP address and use that to ssh in. The root password is
empty, so to log in type 'root' for the user name and hit 'Enter' at
the Password prompt: and you should be in.
If you find you're getting corrupt images on the USB (it doesn't show
the syslinux boot: prompt, or the boot: prompt contains strange
characters), try doing this first:
```
$ dd if=/dev/zero of=/dev/sdf bs=1M count=512
```
## Building the installer image
If you plan to install your image to your target machine, you can build a wic
based installer image instead of default wic image. To build it, you need to
add below configuration to local.conf :
```
WKS_FILE = "image-installer.wks.in"
IMAGE_FSTYPES:append = " ext4"
IMAGE_TYPEDEP:wic = "ext4"
INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
do_rootfs[depends] += "virtual/kernel:do_deploy"
IMAGE_BOOT_FILES:append = "\
${KERNEL_IMAGETYPE} \
microcode.cpio \
${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.rootfs.ext4;rootfs.img \
${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', 'grub-efi-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', '${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', 'systemd-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/loader.conf;loader/loader.conf ', '', d)} \
${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/entries/boot.conf;loader/entries/boot.conf', '', d)} "
```
Burn the wic image onto USB flash device, insert the device to target machine
and power on. This should start the installation process.

View File

@ -1,107 +0,0 @@
Intel(R) oneAPI DPC++/C++ Compiler (ICX) toolchain
==========================================================================
Get Started with the Intel oneAPI DPC++/C++ Compiler:
https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html#
Getting Started
===============
Clone the required layers and include them in bblayers.conf:
```
git clone https://git.openembedded.org/openembedded-core
git clone https://git.openembedded.org/bitbake
git clone https://git.openembedded.org/meta-openembedded
git clone https://github.com/kraj/meta-clang.git
git clone https://git.yoctoproject.org/meta-intel
$ source openembedded-core/oe-init-build-env
$ bitbake-layers add-layer ../meta-openembedded/meta-oe/
$ bitbake-layers add-layer ../meta-intel
$ bitbake-layers add-layer ../meta-clang
```
Distro
======
Note that oneAPI DPC++/C++ compiler currently only works when the vendor string is "oe".
```
DISTRO ?= "nodistro"
```
MACHINE configuration
=====================
```
MACHINE ?= "intel-skylake-64"
```
Package installation
====================
```
# To include OpenCL driver that might be needed when compiling SYCL programs, include:
IMAGE_INSTALL:append = " intel-compute-runtime intel-graphics-compiler"
# To install only runtime libraries, include:
IMAGE_INSTALL:append = " intel-oneapi-dpcpp-cpp-runtime intel-oneapi-dpcpp-cpp-runtime-dev"
# To install the toolchain, include:
IMAGE_INSTALL:append = " intel-oneapi-dpcpp-cpp intel-oneapi-dpcpp-cpp-dev"
```
in local.conf.
Build an image
==============
```
$ bitbake core-image-minimal
```
Including oneAPI C++/DPC++ compiler in generated SDK toolchain
==============================================================
The compiler is not included in the generated SDK by default. If it is expected to be part of SDK, add ICXSDK = "1" in local.conf:
```
ICXSDK = "1"
```
Generate SDK:
```
bitbake core-image-minimal -c populate_sdk
```
To setup PATH variables on target
=================================
Once image is booted successfully, some variables would need to be exported to make sure compiler can be used:
```
$ source /opt/intel/oneapi/compiler/2022.1.0/env/vars.sh
$ mkdir -p /lib64
$ ln -sf /lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
```
Build application and run
=========================
To compile a sycl application, for example:
```
$ icpx --target=x86_64-oe-linux -fsycl simple-sycl-app.c -o simple-sycl-app
```
To run:
```
$ ./simple-sycl-app
```

View File

@ -1,92 +0,0 @@
Build a Yocto Image with OpenVINO™ toolkit
==========================================
Follow the [Yocto Project official documentation](https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html#compatible-linux-distribution) to set up and configure your host machine to be compatible with BitBake.
## Step 1: Set Up Environment
1. Clone the repositories.
```
git clone https://git.yoctoproject.org/git/poky
git clone https://github.com/openembedded/meta-openembedded
git clone https://git.yoctoproject.org/git/meta-intel
git clone https://github.com/intel/meta-openvino
```
2. Set up the OpenEmbedded build environment.
```
source poky/oe-init-build-env
```
3. Add BitBake layers.
```
bitbake-layers add-layer ../meta-openembedded/meta-oe
bitbake-layers add-layer ../meta-openembedded/meta-python
bitbake-layers add-layer ../meta-intel
bitbake-layers add-layer ../meta-openvino
```
4. Set up BitBake configurations.
Include extra configuration in the `conf/local.conf` file in your build directory as required.
```
MACHINE = "intel-skylake-64"
# Enable building OpenVINO Python API.
# This requires meta-python layer to be included in bblayers.conf.
PACKAGECONFIG:append:pn-openvino-inference-engine = " python3"
# This adds OpenVINO related libraries in the target image.
CORE_IMAGE_EXTRA_INSTALL:append = " openvino-inference-engine"
# This adds OpenVINO samples in the target image.
CORE_IMAGE_EXTRA_INSTALL:append = " openvino-inference-engine-samples"
# Include OpenVINO Python API package in the target image.
CORE_IMAGE_EXTRA_INSTALL:append = " openvino-inference-engine-python3"
```
## Step 2: Build a Yocto Image with OpenVINO Packages
Run BitBake to build your image with OpenVINO packages. For example, to build the minimal image, run the following command:
```
bitbake core-image-minimal
```
## Step 3: Verify the Yocto Image
Verify that OpenVINO packages were built successfully. Run the following command:
```
oe-pkgdata-util list-pkgs | grep openvino
```
If the image build is successful, it will return the list of packages as below:
```
openvino-inference-engine
openvino-inference-engine-dbg
openvino-inference-engine-dev
openvino-inference-engine-python3
openvino-inference-engine-samples
openvino-inference-engine-src
openvino-inference-engine-doc
```

View File

@ -1,22 +0,0 @@
## Reporting bugs
If you have problems with or questions about a particular BSP, please
contact the maintainer listed in the [Maintainer](../README.md#maintainers) section directly (cc:ing
the Yocto mailing list puts it in the archive and helps other people
who might have the same questions in the future), but please try to do
the following first:
- look in the [Yocto Project Bugzilla](http://bugzilla.yoctoproject.org/) to see if a
problem has already been reported
- look through recent entries of the [meta-intel](https://lists.yoctoproject.org/g/meta-intel/messages)
and [Yocto Archives](https://lists.yoctoproject.org/g/yocto/messages) mailing list archives to see
if other people have run into similar problems or had similar questions answered.
If you believe you have encountered a bug, you can open a new bug and
enter the details in the [Yocto Project Bugzilla](https://bugzilla.yoctoproject.org/).
If you're relatively certain that it's a bug against the BSP itself, please use the
'BSPs | bsps-meta-intel' category for the bug; otherwise, please submit the bug against
the most likely category for the problem. if you're wrong, it's not a big deal and
the bug will be recategorized upon triage.

View File

@ -0,0 +1,38 @@
Currently, only one implementation of Secure Boot is available out of the box,
which is using a single signed EFI application to directly boot the kernel with
an optional initramfs.
This can be added to your build either through local.conf, or via your own
custom image recipe.
If you are adding it via local.conf, set the following variables:
IMAGE_FEATURES += "secureboot"
WKS_FILE = "generic-bootdisk.wks.in"
SECURE_BOOT_SIGNING_KEY = "/path/to/your/signing/key"
SECURE_BOOT_SIGNING_CERT = "/path/to/your/signing/cert"
IMAGE_CLASSES += "uefi-comboapp"
If working with an image recipe, you can inherit uefi-comboapp directly instead
of using the IMAGE_CLASSES variable.
The signing keys and certs can be created via openssl commands. Here's an
example:
openssl req -new -x509 -newkey rsa:2048 -subj "/CN=your-subject/" -keyout \
your-key.key -out your-key.crt -days 365 -nodes -sha256
openssl x509 -in your-key.crt -out your-key.cer -outform DER
The .crt file is your SECURE_BOOT_SIGNING_CERT, and the .key file is your
SECURE_BOOT_SIGNING_KEY.
You should enroll the .crt key in your firmware under the PK, KEK, and DB
options (methods are different depending on your firmware). If a key should ever
become invalid, enroll it under DBX to blacklist it.
The comboapp can be further manipulated in a number of ways. You can modify the
kernel command line via the APPEND variable, you can change the default UUID via
the DISK_SIGNATURE_UUID variable, and you can modify the contents of the
initramfs via the INITRD_IMAGE or INITRD_LIVE variables.
A simple Secure Boot enabled image used for testing can be viewed at:
common/recipes-selftest/images/secureboot-selftest-image-signed.bb

View File

@ -1,26 +0,0 @@
## Guidelines for submitting patches
Please submit any patches against meta-intel BSPs to the
[meta-intel mailing list](https://lists.yoctoproject.org/g/meta-intel)
(email: meta-intel@lists.yoctoproject.org). Also, if your patches are
available via a public git repository, please also include a URL to
the repo and branch containing your patches as that makes it easier
for maintainers to grab and test your patches.
The patches should follow the suggestions outlined in the
[Yocto Project and OpenEmbedded Contributor Guide](https://docs.yoctoproject.org/dev/contributor-guide/index.html).
In addition, for any non-trivial patch, provide information about how you
tested the patch, and for any non-trivial or non-obvious testing
setup, provide details of that setup.
Doing a quick 'git log' in meta-intel will provide you with many
examples of good example commits if you have questions about any
aspect of the preferred format.
The meta-intel maintainers will do their best to review and/or pull in
a patch or patch sets within 24 hours of the time it was posted. For
larger and/or more involved patches and patch sets, the review process
may take longer.
Please see the [maintainers](../README.md#maintainers) section for the list of maintainers. It's also
a good idea to cc: the maintainer, if applicable.

View File

@ -1,21 +0,0 @@
## Tested Hardware
The following undergo regular testing with their respective MACHINE types:
- intel-corei7-64:
* Alder Lake-P/S/PS
* Amston Lake
* Elkhart Lake
* Metor Lake-P
* Raptor Lake-P/S
* Tiger Lake
- intel-skylake-64:
* Alder Lake-P/S/PS
* Amston Lake
* Metor Lake-P
* Raptor Lake-P/S
* Tiger Lake
- intel-core2-32:
* MinnowBoard Turbot

View File

@ -3,19 +3,19 @@ SUMMARY = "Deep Neural Network Library"
DESCRIPTION = "This software is a user mode library that accelerates\
deep-learning applications and frameworks on Intel architecture."
LICENSE = "Apache-2.0 & BSD-3-Clause & BSL-1.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b64000f6e7d52516017622a37a94ce9 \
LIC_FILES_CHKSUM = "file://LICENSE;md5=8e17c0f9656ebaf0c380d9b22707c846 \
file://tests/gtests/gtest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a \
file://src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \
file://src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \
file://doc/assets/mathjax/MathJax.js;endline=17;md5=25a014ad78c3d72a0e15d15f1d007c20 \
"
SECTION = "lib"
inherit pkgconfig cmake ptest
DNN_BRANCH = "rls-v${@'.'.join(d.getVar('PV').split('.')[0:2])}"
SRCREV = "66f0cb9eb66affd2da3bf5f8d897376f04aae6af"
SRC_URI = "git://github.com/oneapi-src/oneDNN.git;branch=${DNN_BRANCH};protocol=https \
S = "${WORKDIR}/git"
SRCREV = "f58682cd8bd0615f41d879f8afc8f1511ab42d24"
SRC_URI = "git://github.com/oneapi-src/oneDNN.git;branch=rls-v2.2 \
file://run-ptest \
"
@ -24,7 +24,7 @@ UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$"
CVE_PRODUCT = "intel:math_kernel_library"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = 'null'
COMPATIBLE_HOST_libc-musl = 'null'
EXTRA_OECMAKE += " \
-DDNNL_LIBRARY_TYPE=SHARED \
@ -33,14 +33,12 @@ EXTRA_OECMAKE += " \
-DDNNL_CPU_RUNTIME=OMP \
-DDNNL_ARCH_OPT_FLAGS="" \
-DCMAKE_SKIP_RPATH=ON \
-DONEDNN_BUILD_GRAPH=OFF \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
"
PACKAGECONFIG ??= "gpu"
PACKAGECONFIG[gpu] = "-DDNNL_GPU_RUNTIME=OCL, , opencl-headers virtual/opencl-icd, intel-compute-runtime"
PACKAGECONFIG ??= ""
PACKAGECONFIG[gpu] = "-DDNNL_GPU_RUNTIME=OCL, , opencl-headers ocl-icd, intel-compute-runtime"
do_install:append () {
do_install_append () {
install -d ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs
install -m 0755 ${B}/tests/benchdnn/benchdnn ${D}${bindir}/mkl-dnn/tests/benchdnn
cp -r ${B}/tests/benchdnn/inputs/* ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs
@ -54,4 +52,4 @@ do_install_ptest () {
PACKAGES =+ "${PN}-test"
FILES:${PN}-test = "${bindir}/mkl-dnn/*"
FILES_${PN}-test = "${bindir}/mkl-dnn/*"

View File

@ -0,0 +1,119 @@
From 200c200eb19602ffd7c8f29d0b2df9df1fd311bf Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Wed, 7 Apr 2021 17:44:20 +0800
Subject: [PATCH] Fix debug info of work-item builtin translation (#745)
debug info of work-item builtins are lost in both llvm IR -> spirv and
spirv -> llvm IR translations. See #744
Upstream-Status: Backport [https://github.com/KhronosGroup/SPIRV-LLVM-Translator/commit/c734c5c8bbd3012a09c610e4be68e90cc603c580]
Signed-off-by: Wenju He <wenju.he@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
lib/SPIRV/OCL20ToSPIRV.cpp | 5 ++-
lib/SPIRV/SPIRVReader.cpp | 1 +
test/DebugInfo/builtin-get-global-id.ll | 60 +++++++++++++++++++++++++
3 files changed, 65 insertions(+), 1 deletion(-)
create mode 100644 test/DebugInfo/builtin-get-global-id.ll
diff --git a/lib/SPIRV/OCL20ToSPIRV.cpp b/lib/SPIRV/OCL20ToSPIRV.cpp
index 1262c48c..a742c8cf 100644
--- a/lib/SPIRV/OCL20ToSPIRV.cpp
+++ b/lib/SPIRV/OCL20ToSPIRV.cpp
@@ -1297,11 +1297,14 @@ void OCL20ToSPIRV::transWorkItemBuiltinsToVariables() {
for (auto UI = I.user_begin(), UE = I.user_end(); UI != UE; ++UI) {
auto CI = dyn_cast<CallInst>(*UI);
assert(CI && "invalid instruction");
- Value *NewValue = new LoadInst(BV, "", CI);
+ const DebugLoc &DLoc = CI->getDebugLoc();
+ Instruction *NewValue = new LoadInst(BV, "", CI);
+ NewValue->setDebugLoc(DLoc);
LLVM_DEBUG(dbgs() << "Transform: " << *CI << " => " << *NewValue << '\n');
if (IsVec) {
NewValue =
ExtractElementInst::Create(NewValue, CI->getArgOperand(0), "", CI);
+ NewValue->setDebugLoc(DLoc);
LLVM_DEBUG(dbgs() << *NewValue << '\n');
}
NewValue->takeName(CI);
diff --git a/lib/SPIRV/SPIRVReader.cpp b/lib/SPIRV/SPIRVReader.cpp
index 16a3dd38..528f6663 100644
--- a/lib/SPIRV/SPIRVReader.cpp
+++ b/lib/SPIRV/SPIRVReader.cpp
@@ -307,6 +307,7 @@ bool SPIRVToLLVM::transOCLBuiltinFromVariable(GlobalVariable *GV,
auto Replace = [&](std::vector<Value *> Arg, Instruction *I) {
auto Call = CallInst::Create(Func, Arg, "", I);
Call->takeName(I);
+ Call->setDebugLoc(I->getDebugLoc());
setAttrByCalledFunc(Call);
SPIRVDBG(dbgs() << "[transOCLBuiltinFromVariable] " << *I << " -> " << *Call
<< '\n';)
diff --git a/test/DebugInfo/builtin-get-global-id.ll b/test/DebugInfo/builtin-get-global-id.ll
new file mode 100644
index 00000000..a4a00e63
--- /dev/null
+++ b/test/DebugInfo/builtin-get-global-id.ll
@@ -0,0 +1,60 @@
+; Check debug info of builtin get_global_id is preserved from LLVM IR to spirv
+; and spirv to LLVM IR translation.
+
+; Original .cl source:
+; kernel void test() {
+; size_t gid = get_global_id(0);
+; }
+
+; Command line:
+; ./clang -cc1 1.cl -triple spir64 -cl-std=cl2.0 -emit-llvm -finclude-default-header -debug-info-kind=line-tables-only -O0
+
+; RUN: llvm-as %s -o %t.bc
+; RUN: llvm-spirv %t.bc -spirv-text -o - | FileCheck %s --check-prefix CHECK-SPIRV
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r %t.spv -o - | llvm-dis -o - | FileCheck %s
+
+target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir64"
+
+; CHECK-SPIRV: ExtInst {{.*}} DebugScope
+; CHECK-SPIRV-NEXT: Line {{[0-9]+}} 2 16
+; CHECK-SPIRV-NEXT: Load {{[0-9]+}} [[LoadRes:[0-9]+]]
+; CHECK-SPIRV-NEXT: CompositeExtract {{[0-9]+}} {{[0-9]+}} [[LoadRes]] 0
+
+; Function Attrs: convergent noinline norecurse nounwind optnone
+define spir_kernel void @test() #0 !dbg !7 !kernel_arg_addr_space !2 !kernel_arg_access_qual !2 !kernel_arg_type !2 !kernel_arg_base_type !2 !kernel_arg_type_qual !2 {
+entry:
+ %gid = alloca i64, align 8
+ %call = call spir_func i64 @_Z13get_global_idj(i32 0) #2, !dbg !10
+; CHECK: %call = call spir_func i64 @_Z13get_global_idj(i32 0) #1, !dbg [[DBG:![0-9]+]]
+ store i64 %call, i64* %gid, align 8, !dbg !11
+ ret void, !dbg !12
+}
+
+; Function Attrs: convergent nounwind readnone
+declare spir_func i64 @_Z13get_global_idj(i32) #1
+
+attributes #0 = { convergent noinline norecurse nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { convergent nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #2 = { convergent nounwind readnone }
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!3, !4}
+!opencl.ocl.version = !{!5}
+!opencl.spir.version = !{!5}
+!llvm.ident = !{!6}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 12.0.0 (https://github.com/llvm/llvm-project.git b5bc56da8aa23dc57db9d286b0591dbcf9b1bdd3)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, nameTableKind: None)
+!1 = !DIFile(filename: "<stdin>", directory: "")
+!2 = !{}
+!3 = !{i32 2, !"Debug Info Version", i32 3}
+!4 = !{i32 1, !"wchar_size", i32 4}
+!5 = !{i32 2, i32 0}
+!6 = !{!"clang version 12.0.0 (https://github.com/llvm/llvm-project.git b5bc56da8aa23dc57db9d286b0591dbcf9b1bdd3)"}
+!7 = distinct !DISubprogram(name: "test", scope: !8, file: !8, line: 1, type: !9, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)
+!8 = !DIFile(filename: "1.cl", directory: "")
+!9 = !DISubroutineType(types: !2)
+!10 = !DILocation(line: 2, column: 16, scope: !7)
+!11 = !DILocation(line: 2, column: 10, scope: !7)
+!12 = !DILocation(line: 3, column: 1, scope: !7)
--
2.17.1

View File

@ -0,0 +1,35 @@
From c86c43b70e029b102543e8a85d269cbeb5c00279 Mon Sep 17 00:00:00 2001
From: juanrod2 <>
Date: Tue, 22 Dec 2020 08:33:08 +0800
Subject: [PATCH] Memory leak fix for Managed Static Mutex
Upstream-Status: Backport [Taken from opencl-clang patches; https://github.com/intel/opencl-clang/blob/ocl-open-100/patches/llvm/0001-Memory-leak-fix-for-Managed-Static-Mutex.patch]
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
Cleaning a mutex inside ManagedStatic llvm class.
---
llvm/lib/Support/ManagedStatic.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/Support/ManagedStatic.cpp b/llvm/lib/Support/ManagedStatic.cpp
index 053493f72fb5..6571580ccecf 100644
--- a/llvm/lib/Support/ManagedStatic.cpp
+++ b/llvm/lib/Support/ManagedStatic.cpp
@@ -76,8 +76,12 @@ void ManagedStaticBase::destroy() const {
/// llvm_shutdown - Deallocate and destroy all ManagedStatic variables.
void llvm::llvm_shutdown() {
- std::lock_guard<std::recursive_mutex> Lock(*getManagedStaticMutex());
+ getManagedStaticMutex()->lock();
while (StaticList)
StaticList->destroy();
+
+ getManagedStaticMutex()->unlock();
+ delete ManagedStaticMutex;
+ ManagedStaticMutex = nullptr;
}
--
2.29.2

View File

@ -0,0 +1,812 @@
From 27d47f1a17c8921b07acc8cdc26e38cc609de4a9 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Wed, 7 Apr 2021 16:38:38 +0800
Subject: [PATCH 2/2] Add cl_khr_extended_subgroup extensions.
Added extensions and their function declarations into
the standard header.
Patch by Piotr Fusik!
Tags: #clang
Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/4a4402f0d72167477a6252e4c3daf5089ebc8f9a]
Signed-off-by: Anastasia Stulova <anastasia.stulova@arm.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
.../include/clang/Basic/OpenCLExtensions.def | 7 +
clang/lib/Headers/opencl-c.h | 668 ++++++++++++++++++
clang/test/SemaOpenCL/extension-version.cl | 83 +++
3 files changed, 758 insertions(+)
diff --git a/clang/include/clang/Basic/OpenCLExtensions.def b/clang/include/clang/Basic/OpenCLExtensions.def
index 608f78a13eef..d1574164f9b2 100644
--- a/clang/include/clang/Basic/OpenCLExtensions.def
+++ b/clang/include/clang/Basic/OpenCLExtensions.def
@@ -74,6 +74,13 @@ OPENCLEXT_INTERNAL(cl_khr_mipmap_image_writes, 200, ~0U)
OPENCLEXT_INTERNAL(cl_khr_srgb_image_writes, 200, ~0U)
OPENCLEXT_INTERNAL(cl_khr_subgroups, 200, ~0U)
OPENCLEXT_INTERNAL(cl_khr_terminate_context, 200, ~0U)
+OPENCLEXT_INTERNAL(cl_khr_subgroup_extended_types, 200, ~0U)
+OPENCLEXT_INTERNAL(cl_khr_subgroup_non_uniform_vote, 200, ~0U)
+OPENCLEXT_INTERNAL(cl_khr_subgroup_ballot, 200, ~0U)
+OPENCLEXT_INTERNAL(cl_khr_subgroup_non_uniform_arithmetic, 200, ~0U)
+OPENCLEXT_INTERNAL(cl_khr_subgroup_shuffle, 200, ~0U)
+OPENCLEXT_INTERNAL(cl_khr_subgroup_shuffle_relative, 200, ~0U)
+OPENCLEXT_INTERNAL(cl_khr_subgroup_clustered_reduce, 200, ~0U)
// Clang Extensions.
OPENCLEXT_INTERNAL(cl_clang_storage_class_specifiers, 100, ~0U)
diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
index 93a946cec5b1..67d900eb1c3d 100644
--- a/clang/lib/Headers/opencl-c.h
+++ b/clang/lib/Headers/opencl-c.h
@@ -17530,6 +17530,674 @@ double __ovld __conv sub_group_scan_inclusive_max(double x);
#endif //cl_khr_subgroups cl_intel_subgroups
+#if defined(cl_khr_subgroup_extended_types)
+char __ovld __conv sub_group_broadcast( char value, uint index );
+char2 __ovld __conv sub_group_broadcast( char2 value, uint index );
+char3 __ovld __conv sub_group_broadcast( char3 value, uint index );
+char4 __ovld __conv sub_group_broadcast( char4 value, uint index );
+char8 __ovld __conv sub_group_broadcast( char8 value, uint index );
+char16 __ovld __conv sub_group_broadcast( char16 value, uint index );
+
+uchar __ovld __conv sub_group_broadcast( uchar value, uint index );
+uchar2 __ovld __conv sub_group_broadcast( uchar2 value, uint index );
+uchar3 __ovld __conv sub_group_broadcast( uchar3 value, uint index );
+uchar4 __ovld __conv sub_group_broadcast( uchar4 value, uint index );
+uchar8 __ovld __conv sub_group_broadcast( uchar8 value, uint index );
+uchar16 __ovld __conv sub_group_broadcast( uchar16 value, uint index );
+
+short __ovld __conv sub_group_broadcast( short value, uint index );
+short2 __ovld __conv sub_group_broadcast( short2 value, uint index );
+short3 __ovld __conv sub_group_broadcast( short3 value, uint index );
+short4 __ovld __conv sub_group_broadcast( short4 value, uint index );
+short8 __ovld __conv sub_group_broadcast( short8 value, uint index );
+short16 __ovld __conv sub_group_broadcast( short16 value, uint index );
+
+ushort __ovld __conv sub_group_broadcast( ushort value, uint index );
+ushort2 __ovld __conv sub_group_broadcast( ushort2 value, uint index );
+ushort3 __ovld __conv sub_group_broadcast( ushort3 value, uint index );
+ushort4 __ovld __conv sub_group_broadcast( ushort4 value, uint index );
+ushort8 __ovld __conv sub_group_broadcast( ushort8 value, uint index );
+ushort16 __ovld __conv sub_group_broadcast( ushort16 value, uint index );
+
+// scalar int broadcast is part of cl_khr_subgroups
+int2 __ovld __conv sub_group_broadcast( int2 value, uint index );
+int3 __ovld __conv sub_group_broadcast( int3 value, uint index );
+int4 __ovld __conv sub_group_broadcast( int4 value, uint index );
+int8 __ovld __conv sub_group_broadcast( int8 value, uint index );
+int16 __ovld __conv sub_group_broadcast( int16 value, uint index );
+
+// scalar uint broadcast is part of cl_khr_subgroups
+uint2 __ovld __conv sub_group_broadcast( uint2 value, uint index );
+uint3 __ovld __conv sub_group_broadcast( uint3 value, uint index );
+uint4 __ovld __conv sub_group_broadcast( uint4 value, uint index );
+uint8 __ovld __conv sub_group_broadcast( uint8 value, uint index );
+uint16 __ovld __conv sub_group_broadcast( uint16 value, uint index );
+
+// scalar long broadcast is part of cl_khr_subgroups
+long2 __ovld __conv sub_group_broadcast( long2 value, uint index );
+long3 __ovld __conv sub_group_broadcast( long3 value, uint index );
+long4 __ovld __conv sub_group_broadcast( long4 value, uint index );
+long8 __ovld __conv sub_group_broadcast( long8 value, uint index );
+long16 __ovld __conv sub_group_broadcast( long16 value, uint index );
+
+// scalar ulong broadcast is part of cl_khr_subgroups
+ulong2 __ovld __conv sub_group_broadcast( ulong2 value, uint index );
+ulong3 __ovld __conv sub_group_broadcast( ulong3 value, uint index );
+ulong4 __ovld __conv sub_group_broadcast( ulong4 value, uint index );
+ulong8 __ovld __conv sub_group_broadcast( ulong8 value, uint index );
+ulong16 __ovld __conv sub_group_broadcast( ulong16 value, uint index );
+
+// scalar float broadcast is part of cl_khr_subgroups
+float2 __ovld __conv sub_group_broadcast( float2 value, uint index );
+float3 __ovld __conv sub_group_broadcast( float3 value, uint index );
+float4 __ovld __conv sub_group_broadcast( float4 value, uint index );
+float8 __ovld __conv sub_group_broadcast( float8 value, uint index );
+float16 __ovld __conv sub_group_broadcast( float16 value, uint index );
+
+char __ovld __conv sub_group_reduce_add( char value );
+uchar __ovld __conv sub_group_reduce_add( uchar value );
+short __ovld __conv sub_group_reduce_add( short value );
+ushort __ovld __conv sub_group_reduce_add( ushort value );
+
+char __ovld __conv sub_group_reduce_min( char value );
+uchar __ovld __conv sub_group_reduce_min( uchar value );
+short __ovld __conv sub_group_reduce_min( short value );
+ushort __ovld __conv sub_group_reduce_min( ushort value );
+
+char __ovld __conv sub_group_reduce_max( char value );
+uchar __ovld __conv sub_group_reduce_max( uchar value );
+short __ovld __conv sub_group_reduce_max( short value );
+ushort __ovld __conv sub_group_reduce_max( ushort value );
+
+char __ovld __conv sub_group_scan_inclusive_add( char value );
+uchar __ovld __conv sub_group_scan_inclusive_add( uchar value );
+short __ovld __conv sub_group_scan_inclusive_add( short value );
+ushort __ovld __conv sub_group_scan_inclusive_add( ushort value );
+
+char __ovld __conv sub_group_scan_inclusive_min( char value );
+uchar __ovld __conv sub_group_scan_inclusive_min( uchar value );
+short __ovld __conv sub_group_scan_inclusive_min( short value );
+ushort __ovld __conv sub_group_scan_inclusive_min( ushort value );
+
+char __ovld __conv sub_group_scan_inclusive_max( char value );
+uchar __ovld __conv sub_group_scan_inclusive_max( uchar value );
+short __ovld __conv sub_group_scan_inclusive_max( short value );
+ushort __ovld __conv sub_group_scan_inclusive_max( ushort value );
+
+char __ovld __conv sub_group_scan_exclusive_add( char value );
+uchar __ovld __conv sub_group_scan_exclusive_add( uchar value );
+short __ovld __conv sub_group_scan_exclusive_add( short value );
+ushort __ovld __conv sub_group_scan_exclusive_add( ushort value );
+
+char __ovld __conv sub_group_scan_exclusive_min( char value );
+uchar __ovld __conv sub_group_scan_exclusive_min( uchar value );
+short __ovld __conv sub_group_scan_exclusive_min( short value );
+ushort __ovld __conv sub_group_scan_exclusive_min( ushort value );
+
+char __ovld __conv sub_group_scan_exclusive_max( char value );
+uchar __ovld __conv sub_group_scan_exclusive_max( uchar value );
+short __ovld __conv sub_group_scan_exclusive_max( short value );
+ushort __ovld __conv sub_group_scan_exclusive_max( ushort value );
+
+#if defined(cl_khr_fp16)
+// scalar half broadcast is part of cl_khr_subgroups
+half2 __ovld __conv sub_group_broadcast( half2 value, uint index );
+half3 __ovld __conv sub_group_broadcast( half3 value, uint index );
+half4 __ovld __conv sub_group_broadcast( half4 value, uint index );
+half8 __ovld __conv sub_group_broadcast( half8 value, uint index );
+half16 __ovld __conv sub_group_broadcast( half16 value, uint index );
+#endif // cl_khr_fp16
+
+#if defined(cl_khr_fp64)
+// scalar double broadcast is part of cl_khr_subgroups
+double2 __ovld __conv sub_group_broadcast( double2 value, uint index );
+double3 __ovld __conv sub_group_broadcast( double3 value, uint index );
+double4 __ovld __conv sub_group_broadcast( double4 value, uint index );
+double8 __ovld __conv sub_group_broadcast( double8 value, uint index );
+double16 __ovld __conv sub_group_broadcast( double16 value, uint index );
+#endif // cl_khr_fp64
+
+#endif // cl_khr_subgroup_extended_types
+
+#if defined(cl_khr_subgroup_non_uniform_vote)
+int __ovld sub_group_elect(void);
+int __ovld sub_group_non_uniform_all( int predicate );
+int __ovld sub_group_non_uniform_any( int predicate );
+
+int __ovld sub_group_non_uniform_all_equal( char value );
+int __ovld sub_group_non_uniform_all_equal( uchar value );
+int __ovld sub_group_non_uniform_all_equal( short value );
+int __ovld sub_group_non_uniform_all_equal( ushort value );
+int __ovld sub_group_non_uniform_all_equal( int value );
+int __ovld sub_group_non_uniform_all_equal( uint value );
+int __ovld sub_group_non_uniform_all_equal( long value );
+int __ovld sub_group_non_uniform_all_equal( ulong value );
+int __ovld sub_group_non_uniform_all_equal( float value );
+
+#if defined(cl_khr_fp16)
+int __ovld sub_group_non_uniform_all_equal( half value );
+#endif // cl_khr_fp16
+
+#if defined(cl_khr_fp64)
+int __ovld sub_group_non_uniform_all_equal( double value );
+#endif // cl_khr_fp64
+
+#endif // cl_khr_subgroup_non_uniform_vote
+
+#if defined(cl_khr_subgroup_ballot)
+char __ovld sub_group_non_uniform_broadcast( char value, uint index );
+char2 __ovld sub_group_non_uniform_broadcast( char2 value, uint index );
+char3 __ovld sub_group_non_uniform_broadcast( char3 value, uint index );
+char4 __ovld sub_group_non_uniform_broadcast( char4 value, uint index );
+char8 __ovld sub_group_non_uniform_broadcast( char8 value, uint index );
+char16 __ovld sub_group_non_uniform_broadcast( char16 value, uint index );
+
+uchar __ovld sub_group_non_uniform_broadcast( uchar value, uint index );
+uchar2 __ovld sub_group_non_uniform_broadcast( uchar2 value, uint index );
+uchar3 __ovld sub_group_non_uniform_broadcast( uchar3 value, uint index );
+uchar4 __ovld sub_group_non_uniform_broadcast( uchar4 value, uint index );
+uchar8 __ovld sub_group_non_uniform_broadcast( uchar8 value, uint index );
+uchar16 __ovld sub_group_non_uniform_broadcast( uchar16 value, uint index );
+
+short __ovld sub_group_non_uniform_broadcast( short value, uint index );
+short2 __ovld sub_group_non_uniform_broadcast( short2 value, uint index );
+short3 __ovld sub_group_non_uniform_broadcast( short3 value, uint index );
+short4 __ovld sub_group_non_uniform_broadcast( short4 value, uint index );
+short8 __ovld sub_group_non_uniform_broadcast( short8 value, uint index );
+short16 __ovld sub_group_non_uniform_broadcast( short16 value, uint index );
+
+ushort __ovld sub_group_non_uniform_broadcast( ushort value, uint index );
+ushort2 __ovld sub_group_non_uniform_broadcast( ushort2 value, uint index );
+ushort3 __ovld sub_group_non_uniform_broadcast( ushort3 value, uint index );
+ushort4 __ovld sub_group_non_uniform_broadcast( ushort4 value, uint index );
+ushort8 __ovld sub_group_non_uniform_broadcast( ushort8 value, uint index );
+ushort16 __ovld sub_group_non_uniform_broadcast( ushort16 value, uint index );
+
+int __ovld sub_group_non_uniform_broadcast( int value, uint index );
+int2 __ovld sub_group_non_uniform_broadcast( int2 value, uint index );
+int3 __ovld sub_group_non_uniform_broadcast( int3 value, uint index );
+int4 __ovld sub_group_non_uniform_broadcast( int4 value, uint index );
+int8 __ovld sub_group_non_uniform_broadcast( int8 value, uint index );
+int16 __ovld sub_group_non_uniform_broadcast( int16 value, uint index );
+
+uint __ovld sub_group_non_uniform_broadcast( uint value, uint index );
+uint2 __ovld sub_group_non_uniform_broadcast( uint2 value, uint index );
+uint3 __ovld sub_group_non_uniform_broadcast( uint3 value, uint index );
+uint4 __ovld sub_group_non_uniform_broadcast( uint4 value, uint index );
+uint8 __ovld sub_group_non_uniform_broadcast( uint8 value, uint index );
+uint16 __ovld sub_group_non_uniform_broadcast( uint16 value, uint index );
+
+long __ovld sub_group_non_uniform_broadcast( long value, uint index );
+long2 __ovld sub_group_non_uniform_broadcast( long2 value, uint index );
+long3 __ovld sub_group_non_uniform_broadcast( long3 value, uint index );
+long4 __ovld sub_group_non_uniform_broadcast( long4 value, uint index );
+long8 __ovld sub_group_non_uniform_broadcast( long8 value, uint index );
+long16 __ovld sub_group_non_uniform_broadcast( long16 value, uint index );
+
+ulong __ovld sub_group_non_uniform_broadcast( ulong value, uint index );
+ulong2 __ovld sub_group_non_uniform_broadcast( ulong2 value, uint index );
+ulong3 __ovld sub_group_non_uniform_broadcast( ulong3 value, uint index );
+ulong4 __ovld sub_group_non_uniform_broadcast( ulong4 value, uint index );
+ulong8 __ovld sub_group_non_uniform_broadcast( ulong8 value, uint index );
+ulong16 __ovld sub_group_non_uniform_broadcast( ulong16 value, uint index );
+
+float __ovld sub_group_non_uniform_broadcast( float value, uint index );
+float2 __ovld sub_group_non_uniform_broadcast( float2 value, uint index );
+float3 __ovld sub_group_non_uniform_broadcast( float3 value, uint index );
+float4 __ovld sub_group_non_uniform_broadcast( float4 value, uint index );
+float8 __ovld sub_group_non_uniform_broadcast( float8 value, uint index );
+float16 __ovld sub_group_non_uniform_broadcast( float16 value, uint index );
+
+char __ovld sub_group_broadcast_first( char value );
+uchar __ovld sub_group_broadcast_first( uchar value );
+short __ovld sub_group_broadcast_first( short value );
+ushort __ovld sub_group_broadcast_first( ushort value );
+int __ovld sub_group_broadcast_first( int value );
+uint __ovld sub_group_broadcast_first( uint value );
+long __ovld sub_group_broadcast_first( long value );
+ulong __ovld sub_group_broadcast_first( ulong value );
+float __ovld sub_group_broadcast_first( float value );
+
+uint4 __ovld sub_group_ballot( int predicate );
+int __ovld __cnfn sub_group_inverse_ballot( uint4 value );
+int __ovld __cnfn sub_group_ballot_bit_extract( uint4 value, uint index );
+uint __ovld __cnfn sub_group_ballot_bit_count( uint4 value );
+
+uint __ovld sub_group_ballot_inclusive_scan( uint4 value );
+uint __ovld sub_group_ballot_exclusive_scan( uint4 value );
+uint __ovld sub_group_ballot_find_lsb( uint4 value );
+uint __ovld sub_group_ballot_find_msb( uint4 value );
+
+uint4 __ovld __cnfn get_sub_group_eq_mask(void);
+uint4 __ovld __cnfn get_sub_group_ge_mask(void);
+uint4 __ovld __cnfn get_sub_group_gt_mask(void);
+uint4 __ovld __cnfn get_sub_group_le_mask(void);
+uint4 __ovld __cnfn get_sub_group_lt_mask(void);
+
+#if defined(cl_khr_fp16)
+half __ovld sub_group_non_uniform_broadcast( half value, uint index );
+half2 __ovld sub_group_non_uniform_broadcast( half2 value, uint index );
+half3 __ovld sub_group_non_uniform_broadcast( half3 value, uint index );
+half4 __ovld sub_group_non_uniform_broadcast( half4 value, uint index );
+half8 __ovld sub_group_non_uniform_broadcast( half8 value, uint index );
+half16 __ovld sub_group_non_uniform_broadcast( half16 value, uint index );
+
+half __ovld sub_group_broadcast_first( half value );
+#endif // cl_khr_fp16
+
+#if defined(cl_khr_fp64)
+double __ovld sub_group_non_uniform_broadcast( double value, uint index );
+double2 __ovld sub_group_non_uniform_broadcast( double2 value, uint index );
+double3 __ovld sub_group_non_uniform_broadcast( double3 value, uint index );
+double4 __ovld sub_group_non_uniform_broadcast( double4 value, uint index );
+double8 __ovld sub_group_non_uniform_broadcast( double8 value, uint index );
+double16 __ovld sub_group_non_uniform_broadcast( double16 value, uint index );
+
+double __ovld sub_group_broadcast_first( double value );
+#endif // cl_khr_fp64
+
+#endif // cl_khr_subgroup_ballot
+
+#if defined(cl_khr_subgroup_non_uniform_arithmetic)
+char __ovld sub_group_non_uniform_reduce_add( char value );
+uchar __ovld sub_group_non_uniform_reduce_add( uchar value );
+short __ovld sub_group_non_uniform_reduce_add( short value );
+ushort __ovld sub_group_non_uniform_reduce_add( ushort value );
+int __ovld sub_group_non_uniform_reduce_add( int value );
+uint __ovld sub_group_non_uniform_reduce_add( uint value );
+long __ovld sub_group_non_uniform_reduce_add( long value );
+ulong __ovld sub_group_non_uniform_reduce_add( ulong value );
+float __ovld sub_group_non_uniform_reduce_add( float value );
+
+char __ovld sub_group_non_uniform_reduce_mul( char value );
+uchar __ovld sub_group_non_uniform_reduce_mul( uchar value );
+short __ovld sub_group_non_uniform_reduce_mul( short value );
+ushort __ovld sub_group_non_uniform_reduce_mul( ushort value );
+int __ovld sub_group_non_uniform_reduce_mul( int value );
+uint __ovld sub_group_non_uniform_reduce_mul( uint value );
+long __ovld sub_group_non_uniform_reduce_mul( long value );
+ulong __ovld sub_group_non_uniform_reduce_mul( ulong value );
+float __ovld sub_group_non_uniform_reduce_mul( float value );
+
+char __ovld sub_group_non_uniform_reduce_min( char value );
+uchar __ovld sub_group_non_uniform_reduce_min( uchar value );
+short __ovld sub_group_non_uniform_reduce_min( short value );
+ushort __ovld sub_group_non_uniform_reduce_min( ushort value );
+int __ovld sub_group_non_uniform_reduce_min( int value );
+uint __ovld sub_group_non_uniform_reduce_min( uint value );
+long __ovld sub_group_non_uniform_reduce_min( long value );
+ulong __ovld sub_group_non_uniform_reduce_min( ulong value );
+float __ovld sub_group_non_uniform_reduce_min( float value );
+
+char __ovld sub_group_non_uniform_reduce_max( char value );
+uchar __ovld sub_group_non_uniform_reduce_max( uchar value );
+short __ovld sub_group_non_uniform_reduce_max( short value );
+ushort __ovld sub_group_non_uniform_reduce_max( ushort value );
+int __ovld sub_group_non_uniform_reduce_max( int value );
+uint __ovld sub_group_non_uniform_reduce_max( uint value );
+long __ovld sub_group_non_uniform_reduce_max( long value );
+ulong __ovld sub_group_non_uniform_reduce_max( ulong value );
+float __ovld sub_group_non_uniform_reduce_max( float value );
+
+char __ovld sub_group_non_uniform_scan_inclusive_add( char value );
+uchar __ovld sub_group_non_uniform_scan_inclusive_add( uchar value );
+short __ovld sub_group_non_uniform_scan_inclusive_add( short value );
+ushort __ovld sub_group_non_uniform_scan_inclusive_add( ushort value );
+int __ovld sub_group_non_uniform_scan_inclusive_add( int value );
+uint __ovld sub_group_non_uniform_scan_inclusive_add( uint value );
+long __ovld sub_group_non_uniform_scan_inclusive_add( long value );
+ulong __ovld sub_group_non_uniform_scan_inclusive_add( ulong value );
+float __ovld sub_group_non_uniform_scan_inclusive_add( float value );
+
+char __ovld sub_group_non_uniform_scan_inclusive_mul( char value );
+uchar __ovld sub_group_non_uniform_scan_inclusive_mul( uchar value );
+short __ovld sub_group_non_uniform_scan_inclusive_mul( short value );
+ushort __ovld sub_group_non_uniform_scan_inclusive_mul( ushort value );
+int __ovld sub_group_non_uniform_scan_inclusive_mul( int value );
+uint __ovld sub_group_non_uniform_scan_inclusive_mul( uint value );
+long __ovld sub_group_non_uniform_scan_inclusive_mul( long value );
+ulong __ovld sub_group_non_uniform_scan_inclusive_mul( ulong value );
+float __ovld sub_group_non_uniform_scan_inclusive_mul( float value );
+
+char __ovld sub_group_non_uniform_scan_inclusive_min( char value );
+uchar __ovld sub_group_non_uniform_scan_inclusive_min( uchar value );
+short __ovld sub_group_non_uniform_scan_inclusive_min( short value );
+ushort __ovld sub_group_non_uniform_scan_inclusive_min( ushort value );
+int __ovld sub_group_non_uniform_scan_inclusive_min( int value );
+uint __ovld sub_group_non_uniform_scan_inclusive_min( uint value );
+long __ovld sub_group_non_uniform_scan_inclusive_min( long value );
+ulong __ovld sub_group_non_uniform_scan_inclusive_min( ulong value );
+float __ovld sub_group_non_uniform_scan_inclusive_min( float value );
+
+char __ovld sub_group_non_uniform_scan_inclusive_max( char value );
+uchar __ovld sub_group_non_uniform_scan_inclusive_max( uchar value );
+short __ovld sub_group_non_uniform_scan_inclusive_max( short value );
+ushort __ovld sub_group_non_uniform_scan_inclusive_max( ushort value );
+int __ovld sub_group_non_uniform_scan_inclusive_max( int value );
+uint __ovld sub_group_non_uniform_scan_inclusive_max( uint value );
+long __ovld sub_group_non_uniform_scan_inclusive_max( long value );
+ulong __ovld sub_group_non_uniform_scan_inclusive_max( ulong value );
+float __ovld sub_group_non_uniform_scan_inclusive_max( float value );
+
+char __ovld sub_group_non_uniform_scan_exclusive_add( char value );
+uchar __ovld sub_group_non_uniform_scan_exclusive_add( uchar value );
+short __ovld sub_group_non_uniform_scan_exclusive_add( short value );
+ushort __ovld sub_group_non_uniform_scan_exclusive_add( ushort value );
+int __ovld sub_group_non_uniform_scan_exclusive_add( int value );
+uint __ovld sub_group_non_uniform_scan_exclusive_add( uint value );
+long __ovld sub_group_non_uniform_scan_exclusive_add( long value );
+ulong __ovld sub_group_non_uniform_scan_exclusive_add( ulong value );
+float __ovld sub_group_non_uniform_scan_exclusive_add( float value );
+
+char __ovld sub_group_non_uniform_scan_exclusive_mul( char value );
+uchar __ovld sub_group_non_uniform_scan_exclusive_mul( uchar value );
+short __ovld sub_group_non_uniform_scan_exclusive_mul( short value );
+ushort __ovld sub_group_non_uniform_scan_exclusive_mul( ushort value );
+int __ovld sub_group_non_uniform_scan_exclusive_mul( int value );
+uint __ovld sub_group_non_uniform_scan_exclusive_mul( uint value );
+long __ovld sub_group_non_uniform_scan_exclusive_mul( long value );
+ulong __ovld sub_group_non_uniform_scan_exclusive_mul( ulong value );
+float __ovld sub_group_non_uniform_scan_exclusive_mul( float value );
+
+char __ovld sub_group_non_uniform_scan_exclusive_min( char value );
+uchar __ovld sub_group_non_uniform_scan_exclusive_min( uchar value );
+short __ovld sub_group_non_uniform_scan_exclusive_min( short value );
+ushort __ovld sub_group_non_uniform_scan_exclusive_min( ushort value );
+int __ovld sub_group_non_uniform_scan_exclusive_min( int value );
+uint __ovld sub_group_non_uniform_scan_exclusive_min( uint value );
+long __ovld sub_group_non_uniform_scan_exclusive_min( long value );
+ulong __ovld sub_group_non_uniform_scan_exclusive_min( ulong value );
+float __ovld sub_group_non_uniform_scan_exclusive_min( float value );
+
+char __ovld sub_group_non_uniform_scan_exclusive_max( char value );
+uchar __ovld sub_group_non_uniform_scan_exclusive_max( uchar value );
+short __ovld sub_group_non_uniform_scan_exclusive_max( short value );
+ushort __ovld sub_group_non_uniform_scan_exclusive_max( ushort value );
+int __ovld sub_group_non_uniform_scan_exclusive_max( int value );
+uint __ovld sub_group_non_uniform_scan_exclusive_max( uint value );
+long __ovld sub_group_non_uniform_scan_exclusive_max( long value );
+ulong __ovld sub_group_non_uniform_scan_exclusive_max( ulong value );
+float __ovld sub_group_non_uniform_scan_exclusive_max( float value );
+
+char __ovld sub_group_non_uniform_reduce_and( char value );
+uchar __ovld sub_group_non_uniform_reduce_and( uchar value );
+short __ovld sub_group_non_uniform_reduce_and( short value );
+ushort __ovld sub_group_non_uniform_reduce_and( ushort value );
+int __ovld sub_group_non_uniform_reduce_and( int value );
+uint __ovld sub_group_non_uniform_reduce_and( uint value );
+long __ovld sub_group_non_uniform_reduce_and( long value );
+ulong __ovld sub_group_non_uniform_reduce_and( ulong value );
+
+char __ovld sub_group_non_uniform_reduce_or( char value );
+uchar __ovld sub_group_non_uniform_reduce_or( uchar value );
+short __ovld sub_group_non_uniform_reduce_or( short value );
+ushort __ovld sub_group_non_uniform_reduce_or( ushort value );
+int __ovld sub_group_non_uniform_reduce_or( int value );
+uint __ovld sub_group_non_uniform_reduce_or( uint value );
+long __ovld sub_group_non_uniform_reduce_or( long value );
+ulong __ovld sub_group_non_uniform_reduce_or( ulong value );
+
+char __ovld sub_group_non_uniform_reduce_xor( char value );
+uchar __ovld sub_group_non_uniform_reduce_xor( uchar value );
+short __ovld sub_group_non_uniform_reduce_xor( short value );
+ushort __ovld sub_group_non_uniform_reduce_xor( ushort value );
+int __ovld sub_group_non_uniform_reduce_xor( int value );
+uint __ovld sub_group_non_uniform_reduce_xor( uint value );
+long __ovld sub_group_non_uniform_reduce_xor( long value );
+ulong __ovld sub_group_non_uniform_reduce_xor( ulong value );
+
+char __ovld sub_group_non_uniform_scan_inclusive_and( char value );
+uchar __ovld sub_group_non_uniform_scan_inclusive_and( uchar value );
+short __ovld sub_group_non_uniform_scan_inclusive_and( short value );
+ushort __ovld sub_group_non_uniform_scan_inclusive_and( ushort value );
+int __ovld sub_group_non_uniform_scan_inclusive_and( int value );
+uint __ovld sub_group_non_uniform_scan_inclusive_and( uint value );
+long __ovld sub_group_non_uniform_scan_inclusive_and( long value );
+ulong __ovld sub_group_non_uniform_scan_inclusive_and( ulong value );
+
+char __ovld sub_group_non_uniform_scan_inclusive_or( char value );
+uchar __ovld sub_group_non_uniform_scan_inclusive_or( uchar value );
+short __ovld sub_group_non_uniform_scan_inclusive_or( short value );
+ushort __ovld sub_group_non_uniform_scan_inclusive_or( ushort value );
+int __ovld sub_group_non_uniform_scan_inclusive_or( int value );
+uint __ovld sub_group_non_uniform_scan_inclusive_or( uint value );
+long __ovld sub_group_non_uniform_scan_inclusive_or( long value );
+ulong __ovld sub_group_non_uniform_scan_inclusive_or( ulong value );
+
+char __ovld sub_group_non_uniform_scan_inclusive_xor( char value );
+uchar __ovld sub_group_non_uniform_scan_inclusive_xor( uchar value );
+short __ovld sub_group_non_uniform_scan_inclusive_xor( short value );
+ushort __ovld sub_group_non_uniform_scan_inclusive_xor( ushort value );
+int __ovld sub_group_non_uniform_scan_inclusive_xor( int value );
+uint __ovld sub_group_non_uniform_scan_inclusive_xor( uint value );
+long __ovld sub_group_non_uniform_scan_inclusive_xor( long value );
+ulong __ovld sub_group_non_uniform_scan_inclusive_xor( ulong value );
+
+char __ovld sub_group_non_uniform_scan_exclusive_and( char value );
+uchar __ovld sub_group_non_uniform_scan_exclusive_and( uchar value );
+short __ovld sub_group_non_uniform_scan_exclusive_and( short value );
+ushort __ovld sub_group_non_uniform_scan_exclusive_and( ushort value );
+int __ovld sub_group_non_uniform_scan_exclusive_and( int value );
+uint __ovld sub_group_non_uniform_scan_exclusive_and( uint value );
+long __ovld sub_group_non_uniform_scan_exclusive_and( long value );
+ulong __ovld sub_group_non_uniform_scan_exclusive_and( ulong value );
+
+char __ovld sub_group_non_uniform_scan_exclusive_or( char value );
+uchar __ovld sub_group_non_uniform_scan_exclusive_or( uchar value );
+short __ovld sub_group_non_uniform_scan_exclusive_or( short value );
+ushort __ovld sub_group_non_uniform_scan_exclusive_or( ushort value );
+int __ovld sub_group_non_uniform_scan_exclusive_or( int value );
+uint __ovld sub_group_non_uniform_scan_exclusive_or( uint value );
+long __ovld sub_group_non_uniform_scan_exclusive_or( long value );
+ulong __ovld sub_group_non_uniform_scan_exclusive_or( ulong value );
+
+char __ovld sub_group_non_uniform_scan_exclusive_xor( char value );
+uchar __ovld sub_group_non_uniform_scan_exclusive_xor( uchar value );
+short __ovld sub_group_non_uniform_scan_exclusive_xor( short value );
+ushort __ovld sub_group_non_uniform_scan_exclusive_xor( ushort value );
+int __ovld sub_group_non_uniform_scan_exclusive_xor( int value );
+uint __ovld sub_group_non_uniform_scan_exclusive_xor( uint value );
+long __ovld sub_group_non_uniform_scan_exclusive_xor( long value );
+ulong __ovld sub_group_non_uniform_scan_exclusive_xor( ulong value );
+
+int __ovld sub_group_non_uniform_reduce_logical_and( int predicate );
+int __ovld sub_group_non_uniform_reduce_logical_or( int predicate );
+int __ovld sub_group_non_uniform_reduce_logical_xor( int predicate );
+
+int __ovld sub_group_non_uniform_scan_inclusive_logical_and( int predicate );
+int __ovld sub_group_non_uniform_scan_inclusive_logical_or( int predicate );
+int __ovld sub_group_non_uniform_scan_inclusive_logical_xor( int predicate );
+
+int __ovld sub_group_non_uniform_scan_exclusive_logical_and( int predicate );
+int __ovld sub_group_non_uniform_scan_exclusive_logical_or( int predicate );
+int __ovld sub_group_non_uniform_scan_exclusive_logical_xor( int predicate );
+
+#if defined(cl_khr_fp16)
+half __ovld sub_group_non_uniform_reduce_add( half value );
+half __ovld sub_group_non_uniform_reduce_mul( half value );
+half __ovld sub_group_non_uniform_reduce_min( half value );
+half __ovld sub_group_non_uniform_reduce_max( half value );
+half __ovld sub_group_non_uniform_scan_inclusive_add( half value );
+half __ovld sub_group_non_uniform_scan_inclusive_mul( half value );
+half __ovld sub_group_non_uniform_scan_inclusive_min( half value );
+half __ovld sub_group_non_uniform_scan_inclusive_max( half value );
+half __ovld sub_group_non_uniform_scan_exclusive_add( half value );
+half __ovld sub_group_non_uniform_scan_exclusive_mul( half value );
+half __ovld sub_group_non_uniform_scan_exclusive_min( half value );
+half __ovld sub_group_non_uniform_scan_exclusive_max( half value );
+#endif // cl_khr_fp16
+
+#if defined(cl_khr_fp64)
+double __ovld sub_group_non_uniform_reduce_add( double value );
+double __ovld sub_group_non_uniform_reduce_mul( double value );
+double __ovld sub_group_non_uniform_reduce_min( double value );
+double __ovld sub_group_non_uniform_reduce_max( double value );
+double __ovld sub_group_non_uniform_scan_inclusive_add( double value );
+double __ovld sub_group_non_uniform_scan_inclusive_mul( double value );
+double __ovld sub_group_non_uniform_scan_inclusive_min( double value );
+double __ovld sub_group_non_uniform_scan_inclusive_max( double value );
+double __ovld sub_group_non_uniform_scan_exclusive_add( double value );
+double __ovld sub_group_non_uniform_scan_exclusive_mul( double value );
+double __ovld sub_group_non_uniform_scan_exclusive_min( double value );
+double __ovld sub_group_non_uniform_scan_exclusive_max( double value );
+#endif // cl_khr_fp64
+
+#endif // cl_khr_subgroup_non_uniform_arithmetic
+
+#if defined(cl_khr_subgroup_shuffle)
+char __ovld sub_group_shuffle( char value, uint index );
+uchar __ovld sub_group_shuffle( uchar value, uint index );
+short __ovld sub_group_shuffle( short value, uint index );
+ushort __ovld sub_group_shuffle( ushort value, uint index );
+int __ovld sub_group_shuffle( int value, uint index );
+uint __ovld sub_group_shuffle( uint value, uint index );
+long __ovld sub_group_shuffle( long value, uint index );
+ulong __ovld sub_group_shuffle( ulong value, uint index );
+float __ovld sub_group_shuffle( float value, uint index );
+
+char __ovld sub_group_shuffle_xor( char value, uint mask );
+uchar __ovld sub_group_shuffle_xor( uchar value, uint mask );
+short __ovld sub_group_shuffle_xor( short value, uint mask );
+ushort __ovld sub_group_shuffle_xor( ushort value, uint mask );
+int __ovld sub_group_shuffle_xor( int value, uint mask );
+uint __ovld sub_group_shuffle_xor( uint value, uint mask );
+long __ovld sub_group_shuffle_xor( long value, uint mask );
+ulong __ovld sub_group_shuffle_xor( ulong value, uint mask );
+float __ovld sub_group_shuffle_xor( float value, uint mask );
+
+#if defined(cl_khr_fp16)
+half __ovld sub_group_shuffle( half value, uint index );
+half __ovld sub_group_shuffle_xor( half value, uint mask );
+#endif // cl_khr_fp16
+
+#if defined(cl_khr_fp64)
+double __ovld sub_group_shuffle( double value, uint index );
+double __ovld sub_group_shuffle_xor( double value, uint mask );
+#endif // cl_khr_fp64
+
+#endif // cl_khr_subgroup_shuffle
+
+#if defined(cl_khr_subgroup_shuffle_relative)
+char __ovld sub_group_shuffle_up( char value, uint delta );
+uchar __ovld sub_group_shuffle_up( uchar value, uint delta );
+short __ovld sub_group_shuffle_up( short value, uint delta );
+ushort __ovld sub_group_shuffle_up( ushort value, uint delta );
+int __ovld sub_group_shuffle_up( int value, uint delta );
+uint __ovld sub_group_shuffle_up( uint value, uint delta );
+long __ovld sub_group_shuffle_up( long value, uint delta );
+ulong __ovld sub_group_shuffle_up( ulong value, uint delta );
+float __ovld sub_group_shuffle_up( float value, uint delta );
+
+char __ovld sub_group_shuffle_down( char value, uint delta );
+uchar __ovld sub_group_shuffle_down( uchar value, uint delta );
+short __ovld sub_group_shuffle_down( short value, uint delta );
+ushort __ovld sub_group_shuffle_down( ushort value, uint delta );
+int __ovld sub_group_shuffle_down( int value, uint delta );
+uint __ovld sub_group_shuffle_down( uint value, uint delta );
+long __ovld sub_group_shuffle_down( long value, uint delta );
+ulong __ovld sub_group_shuffle_down( ulong value, uint delta );
+float __ovld sub_group_shuffle_down( float value, uint delta );
+
+#if defined(cl_khr_fp16)
+half __ovld sub_group_shuffle_up( half value, uint delta );
+half __ovld sub_group_shuffle_down( half value, uint delta );
+#endif // cl_khr_fp16
+
+#if defined(cl_khr_fp64)
+double __ovld sub_group_shuffle_up( double value, uint delta );
+double __ovld sub_group_shuffle_down( double value, uint delta );
+#endif // cl_khr_fp64
+
+#endif // cl_khr_subgroup_shuffle_relative
+
+#if defined(cl_khr_subgroup_clustered_reduce)
+char __ovld sub_group_clustered_reduce_add( char value, uint clustersize );
+uchar __ovld sub_group_clustered_reduce_add( uchar value, uint clustersize );
+short __ovld sub_group_clustered_reduce_add( short value, uint clustersize );
+ushort __ovld sub_group_clustered_reduce_add( ushort value, uint clustersize );
+int __ovld sub_group_clustered_reduce_add( int value, uint clustersize );
+uint __ovld sub_group_clustered_reduce_add( uint value, uint clustersize );
+long __ovld sub_group_clustered_reduce_add( long value, uint clustersize );
+ulong __ovld sub_group_clustered_reduce_add( ulong value, uint clustersize );
+float __ovld sub_group_clustered_reduce_add( float value, uint clustersize );
+
+char __ovld sub_group_clustered_reduce_mul( char value, uint clustersize );
+uchar __ovld sub_group_clustered_reduce_mul( uchar value, uint clustersize );
+short __ovld sub_group_clustered_reduce_mul( short value, uint clustersize );
+ushort __ovld sub_group_clustered_reduce_mul( ushort value, uint clustersize );
+int __ovld sub_group_clustered_reduce_mul( int value, uint clustersize );
+uint __ovld sub_group_clustered_reduce_mul( uint value, uint clustersize );
+long __ovld sub_group_clustered_reduce_mul( long value, uint clustersize );
+ulong __ovld sub_group_clustered_reduce_mul( ulong value, uint clustersize );
+float __ovld sub_group_clustered_reduce_mul( float value, uint clustersize );
+
+char __ovld sub_group_clustered_reduce_min( char value, uint clustersize );
+uchar __ovld sub_group_clustered_reduce_min( uchar value, uint clustersize );
+short __ovld sub_group_clustered_reduce_min( short value, uint clustersize );
+ushort __ovld sub_group_clustered_reduce_min( ushort value, uint clustersize );
+int __ovld sub_group_clustered_reduce_min( int value, uint clustersize );
+uint __ovld sub_group_clustered_reduce_min( uint value, uint clustersize );
+long __ovld sub_group_clustered_reduce_min( long value, uint clustersize );
+ulong __ovld sub_group_clustered_reduce_min( ulong value, uint clustersize );
+float __ovld sub_group_clustered_reduce_min( float value, uint clustersize );
+
+char __ovld sub_group_clustered_reduce_max( char value, uint clustersize );
+uchar __ovld sub_group_clustered_reduce_max( uchar value, uint clustersize );
+short __ovld sub_group_clustered_reduce_max( short value, uint clustersize );
+ushort __ovld sub_group_clustered_reduce_max( ushort value, uint clustersize );
+int __ovld sub_group_clustered_reduce_max( int value, uint clustersize );
+uint __ovld sub_group_clustered_reduce_max( uint value, uint clustersize );
+long __ovld sub_group_clustered_reduce_max( long value, uint clustersize );
+ulong __ovld sub_group_clustered_reduce_max( ulong value, uint clustersize );
+float __ovld sub_group_clustered_reduce_max( float value, uint clustersize );
+
+char __ovld sub_group_clustered_reduce_and( char value, uint clustersize );
+uchar __ovld sub_group_clustered_reduce_and( uchar value, uint clustersize );
+short __ovld sub_group_clustered_reduce_and( short value, uint clustersize );
+ushort __ovld sub_group_clustered_reduce_and( ushort value, uint clustersize );
+int __ovld sub_group_clustered_reduce_and( int value, uint clustersize );
+uint __ovld sub_group_clustered_reduce_and( uint value, uint clustersize );
+long __ovld sub_group_clustered_reduce_and( long value, uint clustersize );
+ulong __ovld sub_group_clustered_reduce_and( ulong value, uint clustersize );
+
+char __ovld sub_group_clustered_reduce_or( char value, uint clustersize );
+uchar __ovld sub_group_clustered_reduce_or( uchar value, uint clustersize );
+short __ovld sub_group_clustered_reduce_or( short value, uint clustersize );
+ushort __ovld sub_group_clustered_reduce_or( ushort value, uint clustersize );
+int __ovld sub_group_clustered_reduce_or( int value, uint clustersize );
+uint __ovld sub_group_clustered_reduce_or( uint value, uint clustersize );
+long __ovld sub_group_clustered_reduce_or( long value, uint clustersize );
+ulong __ovld sub_group_clustered_reduce_or( ulong value, uint clustersize );
+
+char __ovld sub_group_clustered_reduce_xor( char value, uint clustersize );
+uchar __ovld sub_group_clustered_reduce_xor( uchar value, uint clustersize );
+short __ovld sub_group_clustered_reduce_xor( short value, uint clustersize );
+ushort __ovld sub_group_clustered_reduce_xor( ushort value, uint clustersize );
+int __ovld sub_group_clustered_reduce_xor( int value, uint clustersize );
+uint __ovld sub_group_clustered_reduce_xor( uint value, uint clustersize );
+long __ovld sub_group_clustered_reduce_xor( long value, uint clustersize );
+ulong __ovld sub_group_clustered_reduce_xor( ulong value, uint clustersize );
+
+int __ovld sub_group_clustered_reduce_logical_and( int predicate, uint clustersize );
+int __ovld sub_group_clustered_reduce_logical_or( int predicate, uint clustersize );
+int __ovld sub_group_clustered_reduce_logical_xor( int predicate, uint clustersize );
+
+#if defined(cl_khr_fp16)
+half __ovld sub_group_clustered_reduce_add( half value, uint clustersize );
+half __ovld sub_group_clustered_reduce_mul( half value, uint clustersize );
+half __ovld sub_group_clustered_reduce_min( half value, uint clustersize );
+half __ovld sub_group_clustered_reduce_max( half value, uint clustersize );
+#endif // cl_khr_fp16
+
+#if defined(cl_khr_fp64)
+double __ovld sub_group_clustered_reduce_add( double value, uint clustersize );
+double __ovld sub_group_clustered_reduce_mul( double value, uint clustersize );
+double __ovld sub_group_clustered_reduce_min( double value, uint clustersize );
+double __ovld sub_group_clustered_reduce_max( double value, uint clustersize );
+#endif // cl_khr_fp64
+
+#endif // cl_khr_subgroup_clustered_reduce
+
#if defined(cl_intel_subgroups)
// Intel-Specific Sub Group Functions
float __ovld __conv intel_sub_group_shuffle( float x, uint c );
diff --git a/clang/test/SemaOpenCL/extension-version.cl b/clang/test/SemaOpenCL/extension-version.cl
index 0e6bbb7d3bcd..86c78143a0eb 100644
--- a/clang/test/SemaOpenCL/extension-version.cl
+++ b/clang/test/SemaOpenCL/extension-version.cl
@@ -333,3 +333,86 @@
#endif
#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : enable
+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
+#ifndef cl_khr_subgroup_extended_types
+#error "Missing cl_khr_subgroup_extended_types"
+#endif
+#else
+#ifdef cl_khr_subgroup_extended_types
+#error "Incorrect cl_khr_subgroup_extended_types define"
+#endif
+// expected-warning@+2{{unsupported OpenCL extension 'cl_khr_subgroup_extended_types' - ignoring}}
+#endif
+#pragma OPENCL EXTENSION cl_khr_subgroup_extended_types : enable
+
+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
+#ifndef cl_khr_subgroup_non_uniform_vote
+#error "Missing cl_khr_subgroup_non_uniform_vote"
+#endif
+#else
+#ifdef cl_khr_subgroup_non_uniform_vote
+#error "Incorrect cl_khr_subgroup_non_uniform_vote define"
+#endif
+// expected-warning@+2{{unsupported OpenCL extension 'cl_khr_subgroup_non_uniform_vote' - ignoring}}
+#endif
+#pragma OPENCL EXTENSION cl_khr_subgroup_non_uniform_vote : enable
+
+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
+#ifndef cl_khr_subgroup_ballot
+#error "Missing cl_khr_subgroup_ballot"
+#endif
+#else
+#ifdef cl_khr_subgroup_ballot
+#error "Incorrect cl_khr_subgroup_ballot define"
+#endif
+// expected-warning@+2{{unsupported OpenCL extension 'cl_khr_subgroup_ballot' - ignoring}}
+#endif
+#pragma OPENCL EXTENSION cl_khr_subgroup_ballot : enable
+
+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
+#ifndef cl_khr_subgroup_non_uniform_arithmetic
+#error "Missing cl_khr_subgroup_non_uniform_arithmetic"
+#endif
+#else
+#ifdef cl_khr_subgroup_non_uniform_arithmetic
+#error "Incorrect cl_khr_subgroup_non_uniform_arithmetic define"
+#endif
+// expected-warning@+2{{unsupported OpenCL extension 'cl_khr_subgroup_non_uniform_arithmetic' - ignoring}}
+#endif
+#pragma OPENCL EXTENSION cl_khr_subgroup_non_uniform_arithmetic : enable
+
+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
+#ifndef cl_khr_subgroup_shuffle
+#error "Missing cl_khr_subgroup_shuffle"
+#endif
+#else
+#ifdef cl_khr_subgroup_shuffle
+#error "Incorrect cl_khr_subgroup_shuffle define"
+#endif
+// expected-warning@+2{{unsupported OpenCL extension 'cl_khr_subgroup_shuffle' - ignoring}}
+#endif
+#pragma OPENCL EXTENSION cl_khr_subgroup_shuffle : enable
+
+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
+#ifndef cl_khr_subgroup_shuffle_relative
+#error "Missing cl_khr_subgroup_shuffle_relative"
+#endif
+#else
+#ifdef cl_khr_subgroup_shuffle_relative
+#error "Incorrect cl_khr_subgroup_shuffle_relative define"
+#endif
+// expected-warning@+2{{unsupported OpenCL extension 'cl_khr_subgroup_shuffle_relative' - ignoring}}
+#endif
+#pragma OPENCL EXTENSION cl_khr_subgroup_shuffle_relative : enable
+
+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
+#ifndef cl_khr_subgroup_clustered_reduce
+#error "Missing cl_khr_subgroup_clustered_reduce"
+#endif
+#else
+#ifdef cl_khr_subgroup_clustered_reduce
+#error "Incorrect cl_khr_subgroup_clustered_reduce define"
+#endif
+// expected-warning@+2{{unsupported OpenCL extension 'cl_khr_subgroup_clustered_reduce' - ignoring}}
+#endif
+#pragma OPENCL EXTENSION cl_khr_subgroup_clustered_reduce : enable
--
2.17.1

View File

@ -0,0 +1,111 @@
From eeb816d95f0910bd246e37bb2bb3923acf0edf6b Mon Sep 17 00:00:00 2001
From: Aleksander Us <aleksander.us@intel.com>
Date: Mon, 26 Aug 2019 15:47:41 +0300
Subject: [PATCH] [BasicBlockUtils] Add metadata fixing in
SplitBlockPredecessors.
In case when BB is header of some loop and predecessor is latch of
this loop, metadata was not attached to newly created basic block.
This led to loss of loop metadata for other passes.
Upstream-Status: Submitted [https://reviews.llvm.org/D66892]
https://github.com/intel/llvm-patches/commit/8af4449e2d201707f7f2f832b473a0439e255f32
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
lib/Transforms/Utils/BasicBlockUtils.cpp | 23 ++++++++----
test/Transforms/LoopSimplify/loop_metadata.ll | 36 +++++++++++++++++++
2 files changed, 52 insertions(+), 7 deletions(-)
create mode 100644 test/Transforms/LoopSimplify/loop_metadata.ll
diff --git a/lib/Transforms/Utils/BasicBlockUtils.cpp b/lib/Transforms/Utils/BasicBlockUtils.cpp
index 5fa371377c8..3a90ae061fb 100644
--- a/lib/Transforms/Utils/BasicBlockUtils.cpp
+++ b/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -579,24 +579,33 @@ BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB,
// The new block unconditionally branches to the old block.
BranchInst *BI = BranchInst::Create(BB, NewBB);
+ bool IsBBHeader = LI && LI->isLoopHeader(BB);
+ Loop *BBLoop = LI ? LI->getLoopFor(BB) : nullptr;
// Splitting the predecessors of a loop header creates a preheader block.
- if (LI && LI->isLoopHeader(BB))
+ if (IsBBHeader)
// Using the loop start line number prevents debuggers stepping into the
// loop body for this instruction.
- BI->setDebugLoc(LI->getLoopFor(BB)->getStartLoc());
+ BI->setDebugLoc(BBLoop->getStartLoc());
else
BI->setDebugLoc(BB->getFirstNonPHIOrDbg()->getDebugLoc());
// Move the edges from Preds to point to NewBB instead of BB.
- for (unsigned i = 0, e = Preds.size(); i != e; ++i) {
+ for (BasicBlock *Pred : Preds) {
+ Instruction *PI = Pred->getTerminator();
// This is slightly more strict than necessary; the minimum requirement
// is that there be no more than one indirectbr branching to BB. And
// all BlockAddress uses would need to be updated.
- assert(!isa<IndirectBrInst>(Preds[i]->getTerminator()) &&
+ assert(!isa<IndirectBrInst>(PI) &&
"Cannot split an edge from an IndirectBrInst");
- assert(!isa<CallBrInst>(Preds[i]->getTerminator()) &&
- "Cannot split an edge from a CallBrInst");
- Preds[i]->getTerminator()->replaceUsesOfWith(BB, NewBB);
+ assert(!isa<CallBrInst>(PI) && "Cannot split an edge from a CallBrInst");
+ if (IsBBHeader && BBLoop->contains(Pred) && BBLoop->isLoopLatch(Pred)) {
+ // Update loop metadata if it exists.
+ if (MDNode *LoopMD = PI->getMetadata(LLVMContext::MD_loop)) {
+ BI->setMetadata(LLVMContext::MD_loop, LoopMD);
+ PI->setMetadata(LLVMContext::MD_loop, nullptr);
+ }
+ }
+ PI->replaceUsesOfWith(BB, NewBB);
}
// Insert a new PHI node into NewBB for every PHI node in BB and that new PHI
diff --git a/test/Transforms/LoopSimplify/loop_metadata.ll b/test/Transforms/LoopSimplify/loop_metadata.ll
new file mode 100644
index 00000000000..c15c92fe3ae
--- /dev/null
+++ b/test/Transforms/LoopSimplify/loop_metadata.ll
@@ -0,0 +1,36 @@
+; RUN: opt -S -loop-simplify < %s | FileCheck %s
+
+; CHECK: for.cond.loopexit:
+; CHECK: br label %for.cond, !llvm.loop !0
+; CHECK: br i1 %cmp1, label %for.body1, label %for.cond.loopexit
+
+define void @foo() {
+entry:
+ br label %for.cond
+
+for.cond: ; preds = %for.cond1, %entry
+ %j = phi i32 [ 0, %entry ], [ %add, %for.cond1 ]
+ %cmp = icmp ult i32 %j, 8
+ br i1 %cmp, label %for.body, label %for.end
+
+for.body: ; preds = %for.cond
+ %dummy1 = add i32 1, 1
+ %add = add nuw nsw i32 %j, 1
+ br label %for.cond1
+
+for.cond1: ; preds = %for.body1, %for.body
+ %i.0 = phi i32 [ 1, %for.body ], [ %inc, %for.body1 ]
+ %cmp1 = icmp ult i32 %i.0, 8
+ br i1 %cmp1, label %for.body1, label %for.cond, !llvm.loop !0
+
+for.body1: ; preds = %for.cond1
+ %dummy2 = add i32 1, 1
+ %inc = add nuw nsw i32 %i.0, 1
+ br label %for.cond1
+
+for.end: ; preds = %for.cond
+ ret void
+}
+
+!0 = distinct !{!0, !1}
+!1 = !{!"llvm.loop.unroll.full"}
--
2.18.0

View File

@ -0,0 +1,146 @@
From 35e218a886f4c066eabd18685240d55270bd5a6d Mon Sep 17 00:00:00 2001
From: Aleksander Us <aleksander.us@intel.com>
Date: Mon, 26 Aug 2019 15:45:47 +0300
Subject: [PATCH] [IndVarSimplify] Do not use SCEV expander for IVCount in
LFTR when possible.
SCEV analysis cannot properly cache instruction with poison flags
(for example, add nsw outside of loop will not be reused by expander).
This can lead to generating of additional instructions by SCEV expander.
Example IR:
...
%maxval = add nuw nsw i32 %a1, %a2
...
for.body:
...
%cmp22 = icmp ult i32 %ivadd, %maxval
br i1 %cmp22, label %for.body, label %for.end
...
SCEV expander will generate copy of %maxval in preheader but without
nuw/nsw flags. This can be avoided by explicit check that iv count
value gives the same SCEV expressions as calculated by LFTR.
Upstream-Status: Submitted [https://reviews.llvm.org/D66890]
https://github.com/intel/llvm-patches/commit/fd6a6c97341a56fd21bc32bc940afea751312e8f
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
lib/Transforms/Scalar/IndVarSimplify.cpp | 12 +++++++++-
test/Transforms/IndVarSimplify/add_nsw.ll | 23 ++++++++++++++++++++
test/Transforms/IndVarSimplify/lftr-reuse.ll | 9 +++-----
test/Transforms/IndVarSimplify/udiv.ll | 1 +
4 files changed, 38 insertions(+), 7 deletions(-)
create mode 100644 test/Transforms/IndVarSimplify/add_nsw.ll
diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp
index f9fc698a4a9..5e04dac8aa6 100644
--- a/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -2375,6 +2375,17 @@ static Value *genLoopLimit(PHINode *IndVar, BasicBlock *ExitingBB,
if (UsePostInc)
IVLimit = SE->getAddExpr(IVLimit, SE->getOne(IVLimit->getType()));
+ // If computed limit is equal to old limit then do not use SCEV expander
+ // because it can lost NUW/NSW flags and create extra instructions.
+ BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
+ if (ICmpInst *Cmp = dyn_cast<ICmpInst>(BI->getOperand(0))) {
+ Value *Limit = Cmp->getOperand(0);
+ if (!L->isLoopInvariant(Limit))
+ Limit = Cmp->getOperand(1);
+ if (SE->getSCEV(Limit) == IVLimit)
+ return Limit;
+ }
+
// Expand the code for the iteration count.
assert(SE->isLoopInvariant(IVLimit, L) &&
"Computed iteration count is not loop invariant!");
@@ -2383,7 +2394,6 @@ static Value *genLoopLimit(PHINode *IndVar, BasicBlock *ExitingBB,
// SCEV expression (IVInit) for a pointer type IV value (IndVar).
Type *LimitTy = ExitCount->getType()->isPointerTy() ?
IndVar->getType() : ExitCount->getType();
- BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
return Rewriter.expandCodeFor(IVLimit, LimitTy, BI);
}
}
diff --git a/test/Transforms/IndVarSimplify/add_nsw.ll b/test/Transforms/IndVarSimplify/add_nsw.ll
new file mode 100644
index 00000000000..abd1cbb6c51
--- /dev/null
+++ b/test/Transforms/IndVarSimplify/add_nsw.ll
@@ -0,0 +1,23 @@
+; RUN: opt -indvars -S %s | FileCheck %s
+
+target datalayout = "e-p:32:32-i64:64-n8:16:32"
+
+; CHECK: for.body.preheader:
+; CHECK-NOT: add
+; CHECK: for.body:
+
+define void @foo(i32 %a1, i32 %a2) {
+entry:
+ %maxval = add nuw nsw i32 %a1, %a2
+ %cmp = icmp slt i32 %maxval, 1
+ br i1 %cmp, label %for.end, label %for.body
+
+for.body: ; preds = %entry, %for.body
+ %j.02 = phi i32 [ 0, %entry ], [ %add31, %for.body ]
+ %add31 = add nuw nsw i32 %j.02, 1
+ %cmp22 = icmp slt i32 %add31, %maxval
+ br i1 %cmp22, label %for.body, label %for.end
+
+for.end: ; preds = %for.body
+ ret void
+}
diff --git a/test/Transforms/IndVarSimplify/lftr-reuse.ll b/test/Transforms/IndVarSimplify/lftr-reuse.ll
index 14ae9738696..509d662b767 100644
--- a/test/Transforms/IndVarSimplify/lftr-reuse.ll
+++ b/test/Transforms/IndVarSimplify/lftr-reuse.ll
@@ -67,11 +67,9 @@ define void @expandOuterRecurrence(i32 %arg) nounwind {
; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i32 0, [[SUB1]]
; CHECK-NEXT: br i1 [[CMP1]], label [[OUTER_PREHEADER:%.*]], label [[EXIT:%.*]]
; CHECK: outer.preheader:
-; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[ARG]], -1
; CHECK-NEXT: br label [[OUTER:%.*]]
; CHECK: outer:
-; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i32 [ [[TMP0]], [[OUTER_PREHEADER]] ], [ [[INDVARS_IV_NEXT:%.*]], [[OUTER_INC:%.*]] ]
-; CHECK-NEXT: [[I:%.*]] = phi i32 [ [[I_INC:%.*]], [[OUTER_INC]] ], [ 0, [[OUTER_PREHEADER]] ]
+; CHECK-NEXT: [[I:%.*]] = phi i32 [ [[I_INC:%.*]], [[OUTER_INC:%.*]] ], [ 0, [[OUTER_PREHEADER]] ]
; CHECK-NEXT: [[SUB2:%.*]] = sub nsw i32 [[ARG]], [[I]]
; CHECK-NEXT: [[SUB3:%.*]] = sub nsw i32 [[SUB2]], 1
; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 0, [[SUB3]]
@@ -81,14 +79,13 @@ define void @expandOuterRecurrence(i32 %arg) nounwind {
; CHECK: inner:
; CHECK-NEXT: [[J:%.*]] = phi i32 [ 0, [[INNER_PH]] ], [ [[J_INC:%.*]], [[INNER]] ]
; CHECK-NEXT: [[J_INC]] = add nuw nsw i32 [[J]], 1
-; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[J_INC]], [[INDVARS_IV]]
+; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[J_INC]], [[SUB3]]
; CHECK-NEXT: br i1 [[EXITCOND]], label [[INNER]], label [[OUTER_INC_LOOPEXIT:%.*]]
; CHECK: outer.inc.loopexit:
; CHECK-NEXT: br label [[OUTER_INC]]
; CHECK: outer.inc:
; CHECK-NEXT: [[I_INC]] = add nuw nsw i32 [[I]], 1
-; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add i32 [[INDVARS_IV]], -1
-; CHECK-NEXT: [[EXITCOND1:%.*]] = icmp ne i32 [[I_INC]], [[TMP0]]
+; CHECK-NEXT: [[EXITCOND1:%.*]] = icmp ne i32 [[I_INC]], [[SUB1]]
; CHECK-NEXT: br i1 [[EXITCOND1]], label [[OUTER]], label [[EXIT_LOOPEXIT:%.*]]
; CHECK: exit.loopexit:
; CHECK-NEXT: br label [[EXIT]]
diff --git a/test/Transforms/IndVarSimplify/udiv.ll b/test/Transforms/IndVarSimplify/udiv.ll
index b3f2c2a6a66..3530343ef4a 100644
--- a/test/Transforms/IndVarSimplify/udiv.ll
+++ b/test/Transforms/IndVarSimplify/udiv.ll
@@ -133,6 +133,7 @@ declare i32 @printf(i8* nocapture, ...) nounwind
; CHECK-LABEL: @foo(
; CHECK: for.body.preheader:
; CHECK-NOT: udiv
+; CHECK: for.body:
define void @foo(double* %p, i64 %n) nounwind {
entry:
--
2.18.0

View File

@ -0,0 +1,30 @@
From a6d4ccf082858e63e139ca06c02a071c343d2657 Mon Sep 17 00:00:00 2001
From: Andrea Bocci <andrea.bocci@cern.ch>
Date: Sun, 15 Mar 2020 17:35:44 +0100
Subject: [PATCH] Fix building in-tree with cmake -DLLVM_LINK_LLVM_DYLIB=ON
Building in-tree with LLVM 11.0 master with the LLVM_LINK_LLVM_DYLIB
cmake flag fails to link with the LLVMSPIRVLib library.
Add an explicit dependency to force the correct build order and linking.
Signed-off-by: Andrea Bocci <andrea.bocci@cern.ch>
Upstream-Status: Backport
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
tools/llvm-spirv/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/llvm-spirv/CMakeLists.txt b/tools/llvm-spirv/CMakeLists.txt
index 9aa96d9c..501c0daf 100644
--- a/tools/llvm-spirv/CMakeLists.txt
+++ b/tools/llvm-spirv/CMakeLists.txt
@@ -14,7 +14,7 @@ add_llvm_tool(llvm-spirv
NO_INSTALL_RPATH
)
-if (LLVM_SPIRV_BUILD_EXTERNAL)
+if (LLVM_SPIRV_BUILD_EXTERNAL OR LLVM_LINK_LLVM_DYLIB)
target_link_libraries(llvm-spirv PRIVATE LLVMSPIRVLib)
endif()

View File

@ -0,0 +1,50 @@
From b53fd86ffdeacb9b13624bdb110fd25e8c35cb92 Mon Sep 17 00:00:00 2001
From: Feng Zou <feng.zou@intel.com>
Date: Mon, 19 Oct 2020 14:43:38 +0800
Subject: [PATCH] Remove repo name in LLVM IR
Upstream-Status: Backport [Taken from opencl-clang patches, https://github.com/intel/opencl-clang/blob/ocl-open-100/patches/llvm/0003-Remove-repo-name-in-LLVM-IR.patch]
Signed-off-by: Feng Zou <feng.zou@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
llvm/cmake/modules/VersionFromVCS.cmake | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/llvm/cmake/modules/VersionFromVCS.cmake b/llvm/cmake/modules/VersionFromVCS.cmake
index 1b6519b4b7c..8fd6b23bb34 100644
--- a/llvm/cmake/modules/VersionFromVCS.cmake
+++ b/llvm/cmake/modules/VersionFromVCS.cmake
@@ -33,17 +33,18 @@ function(get_source_info path revision repository)
else()
set(remote "origin")
endif()
- execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote}
- WORKING_DIRECTORY ${path}
- RESULT_VARIABLE git_result
- OUTPUT_VARIABLE git_output
- ERROR_QUIET)
- if(git_result EQUAL 0)
- string(STRIP "${git_output}" git_output)
- set(${repository} ${git_output} PARENT_SCOPE)
- else()
- set(${repository} ${path} PARENT_SCOPE)
- endif()
+ # Do not show repo name in IR
+ # execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote}
+ # WORKING_DIRECTORY ${path}
+ # RESULT_VARIABLE git_result
+ # OUTPUT_VARIABLE git_output
+ # ERROR_QUIET)
+ # if(git_result EQUAL 0)
+ # string(STRIP "${git_output}" git_output)
+ # set(${repository} ${git_output} PARENT_SCOPE)
+ # else()
+ # set(${repository} ${path} PARENT_SCOPE)
+ # endif()
endif()
endif()
endfunction()
--
2.18.1

View File

@ -0,0 +1,51 @@
From 455ce9c25df5313f4a6649cc27075bdfbe25af18 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Wed, 21 Aug 2019 14:35:31 +0800
Subject: [PATCH] llvm-spirv: skip building tests
Some of these need clang to be built and since we're building this in-tree,
that leads to problems when compiling libcxx, compiler-rt which aren't built
in-tree.
Instead of using SPIRV_SKIP_CLANG_BUILD to skip clang build and adding this to
all components, disable the building of tests altogether.
Upstream-Status: Inappropriate
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
CMakeLists.txt | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b718c00..9805140 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,13 +24,6 @@ if(LLVM_SPIRV_BUILD_EXTERNAL)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
- if(LLVM_SPIRV_INCLUDE_TESTS)
- set(LLVM_TEST_COMPONENTS
- llvm-as
- llvm-dis
- )
- endif(LLVM_SPIRV_INCLUDE_TESTS)
-
find_package(LLVM 10.0.0 REQUIRED
COMPONENTS
Analysis
@@ -61,9 +54,6 @@ set(LLVM_SPIRV_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include)
add_subdirectory(lib/SPIRV)
add_subdirectory(tools/llvm-spirv)
-if(LLVM_SPIRV_INCLUDE_TESTS)
- add_subdirectory(test)
-endif(LLVM_SPIRV_INCLUDE_TESTS)
install(
FILES
--
2.7.4

View File

@ -0,0 +1,50 @@
From ff0a6da84b94c16c4519c649f1f7bed3cdf89bbb Mon Sep 17 00:00:00 2001
From: Feng Zou <feng.zou@intel.com>
Date: Tue, 20 Oct 2020 11:29:04 +0800
Subject: [PATCH] Remove repo name in LLVM IR
Upstream-Status: Backport [Taken from opencl-clang patches, https://github.com/intel/opencl-clang/blob/ocl-open-110/patches/llvm/0002-Remove-repo-name-in-LLVM-IR.patch]
Signed-off-by: Feng Zou <feng.zou@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
llvm/cmake/modules/VersionFromVCS.cmake | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/llvm/cmake/modules/VersionFromVCS.cmake b/llvm/cmake/modules/VersionFromVCS.cmake
index 18edbeabe3e..2d965263478 100644
--- a/llvm/cmake/modules/VersionFromVCS.cmake
+++ b/llvm/cmake/modules/VersionFromVCS.cmake
@@ -33,17 +33,18 @@ function(get_source_info path revision repository)
else()
set(remote "origin")
endif()
- execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote}
- WORKING_DIRECTORY ${path}
- RESULT_VARIABLE git_result
- OUTPUT_VARIABLE git_output
- ERROR_QUIET)
- if(git_result EQUAL 0)
- string(STRIP "${git_output}" git_output)
- set(${repository} ${git_output} PARENT_SCOPE)
- else()
- set(${repository} ${path} PARENT_SCOPE)
- endif()
+ # Do not show repo name in IR
+ # execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote}
+ # WORKING_DIRECTORY ${path}
+ # RESULT_VARIABLE git_result
+ # OUTPUT_VARIABLE git_output
+ # ERROR_QUIET)
+ # if(git_result EQUAL 0)
+ # string(STRIP "${git_output}" git_output)
+ # set(${repository} ${git_output} PARENT_SCOPE)
+ # else()
+ # set(${repository} ${path} PARENT_SCOPE)
+ # endif()
endif()
else()
message(WARNING "Git not found. Version cannot be determined.")
--
2.18.1

View File

@ -0,0 +1,51 @@
From d362652617c5e840089273df0c6623a9745c92a2 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Wed, 21 Aug 2019 14:35:31 +0800
Subject: [PATCH] llvm-spirv: skip building tests
Some of these need clang to be built and since we're building this in-tree,
that leads to problems when compiling libcxx, compiler-rt which aren't built
in-tree.
Instead of using SPIRV_SKIP_CLANG_BUILD to skip clang build and adding this to
all components, disable the building of tests altogether.
Upstream-Status: Inappropriate
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
CMakeLists.txt | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ecebb4cb..578ca602 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,13 +25,6 @@ if(LLVM_SPIRV_BUILD_EXTERNAL)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
- if(LLVM_SPIRV_INCLUDE_TESTS)
- set(LLVM_TEST_COMPONENTS
- llvm-as
- llvm-dis
- )
- endif(LLVM_SPIRV_INCLUDE_TESTS)
-
find_package(LLVM ${BASE_LLVM_VERSION} REQUIRED
COMPONENTS
Analysis
@@ -62,9 +55,6 @@ set(LLVM_SPIRV_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include)
add_subdirectory(lib/SPIRV)
add_subdirectory(tools/llvm-spirv)
-if(LLVM_SPIRV_INCLUDE_TESTS)
- add_subdirectory(test)
-endif(LLVM_SPIRV_INCLUDE_TESTS)
install(
FILES
--
2.26.2

View File

@ -0,0 +1,35 @@
FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/files:"
SPIRV_BRANCH = "${@bb.utils.contains('LLVMVERSION', '10.0.1', 'llvm_release_100', 'llvm_release_110', d)}"
SPIRV10_SRCREV = "576abae62cecd171992017a4a786e3831221ab8d"
SPIRV11_SRCREV = "2a8c1e6c9778deaa720a23e08c293006dc5d56fd"
SPIRV_SRCREV = "${@bb.utils.contains('LLVMVERSION', '10.0.1', '${SPIRV10_SRCREV}', '${SPIRV11_SRCREV}', d)}"
SRC_URI_LLVM10 = " \
file://llvm10-skip-building-tests.patch;patchdir=llvm/projects/llvm-spirv \
file://fix-shared-libs.patch;patchdir=llvm/projects/llvm-spirv \
file://BasicBlockUtils-Add-metadata-fixing-in-SplitBlockPre.patch;patchdir=llvm \
file://IndVarSimplify-Do-not-use-SCEV-expander-for-IVCount-.patch;patchdir=llvm \
file://llvm10-OpenCL-3.0-support.patch \
file://0002-Add-cl_khr_extended_subgroup-extensions.patch \
file://0001-Memory-leak-fix-for-Managed-Static-Mutex.patch \
file://llvm10-Remove-repo-name-in-LLVM-IR.patch \
file://0001-Fix-debug-info-of-work-item-builtin-translation-745.patch;patchdir=llvm/projects/llvm-spirv \
"
SRC_URI_LLVM11 = " \
file://llvm11-skip-building-tests.patch;patchdir=llvm/projects/llvm-spirv \
file://llvm11-OpenCL-3.0-support.patch \
file://0001-Memory-leak-fix-for-Managed-Static-Mutex.patch \
file://llvm11-Remove-repo-name-in-LLVM-IR.patch \
"
SPIRV_LLVM_SRC_URI = "git://github.com/KhronosGroup/SPIRV-LLVM-Translator.git;protocol=https;branch=${SPIRV_BRANCH};destsuffix=git/llvm/projects/llvm-spirv;name=spirv"
SPIRV_LLVM_PATCHES = "${@bb.utils.contains('LLVMVERSION', '10.0.1', '${SRC_URI_LLVM10}', '${SRC_URI_LLVM11}', d)}"
SRC_URI_append_intel-x86-common = "${@bb.utils.contains('LLVMVERSION', '12.0.0', '', ' ${SPIRV_LLVM_SRC_URI} ${SPIRV_LLVM_PATCHES} ', d)}"
SRCREV_spirv = "${@bb.utils.contains('LLVMVERSION', '12.0.0', '', '${SPIRV_SRCREV}', d)}"

View File

@ -1,41 +0,0 @@
From 8c330d0cb5167612296801f0202b0de35e9ca88d Mon Sep 17 00:00:00 2001
From: Dongwon Kim <dongwon.kim@intel.com>
Date: Sat, 21 Aug 2021 16:09:39 -0700
Subject: [PATCH 2/5] Build not able to locate cpp_generation_tool.
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
---
shared/source/built_ins/kernels/CMakeLists.txt | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Index: git/shared/source/built_ins/kernels/CMakeLists.txt
===================================================================
--- git.orig/shared/source/built_ins/kernels/CMakeLists.txt
+++ git/shared/source/built_ins/kernels/CMakeLists.txt
@@ -122,9 +122,9 @@ function(compile_builtin core_type platf
endif()
add_custom_command(
OUTPUT ${OUTPUT_FILE_CPP}
- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${BINARY_OUTPUT}.bin --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --device ${RELEASE_FILENAME}
+ COMMAND cpp_generate_tool --file ${BINARY_OUTPUT}.bin --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --device ${RELEASE_FILENAME}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${OUTPUT_FILES_BINARIES} $<TARGET_FILE:cpp_generate_tool>
+ DEPENDS ${OUTPUT_FILES_BINARIES} cpp_generate_tool
)
list(APPEND BUILTINS_COMMANDS "${OUTPUT_FILE_CPP}")
else()
@@ -176,9 +176,9 @@ function(generate_cpp_spirv builtin)
endif()
add_custom_command(
OUTPUT ${OUTPUT_FILE_CPP}
- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${GENERATED_SPV_INPUT} --output ${OUTPUT_FILE_CPP} --array ${BASENAME}
+ COMMAND cpp_generate_tool --file ${GENERATED_SPV_INPUT} --output ${OUTPUT_FILE_CPP} --array ${BASENAME}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${GENERATED_SPV_INPUT} $<TARGET_FILE:cpp_generate_tool>
+ DEPENDS ${GENERATED_SPV_INPUT} cpp_generate_tool
)
set(OUTPUT_LIST_CPP_FILES ${OUTPUT_LIST_CPP_FILES} ${OUTPUT_FILE_CPP} PARENT_SCOPE)
else()

View File

@ -1,38 +0,0 @@
From 0006db5f55a9f08bd3452558a53704cd3bbb790f Mon Sep 17 00:00:00 2001
From: Dongwon Kim <dongwon.kim@intel.com>
Date: Wed, 2 Mar 2022 15:52:45 -0800
Subject: [PATCH 3/5] external ocloc
Upstream-Status: Inappropriate
Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
---
cmake/ocloc_cmd_prefix.cmake | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
Index: git/cmake/ocloc_cmd_prefix.cmake
===================================================================
--- git.orig/cmake/ocloc_cmd_prefix.cmake
+++ git/cmake/ocloc_cmd_prefix.cmake
@@ -4,13 +4,15 @@
# SPDX-License-Identifier: MIT
#
-if(WIN32)
- set(ocloc_cmd_prefix ocloc)
-else()
- if(DEFINED NEO__IGC_LIBRARY_PATH)
- set(ocloc_cmd_prefix ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NEO__IGC_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib>" $<TARGET_FILE:ocloc>)
+if(NOT DEFINED ocloc_cmd_prefix)
+ if(WIN32)
+ set(ocloc_cmd_prefix ocloc)
else()
- set(ocloc_cmd_prefix ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib>" $<TARGET_FILE:ocloc>)
+ if(DEFINED NEO__IGC_LIBRARY_PATH)
+ set(ocloc_cmd_prefix LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NEO__IGC_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>)
+ else()
+ set(ocloc_cmd_prefix LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>)
+ endif()
endif()
endif()

View File

@ -0,0 +1,44 @@
From 32851d269ac0c027730168c04d9ce32d0eb50905 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Wed, 27 May 2020 11:12:09 +0000
Subject: [PATCH] intel-compute-runtime: allow to find cpp_generation_tool
Build not able to locate cpp_generation_tool.
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
shared/source/built_ins/kernels/CMakeLists.txt | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/shared/source/built_ins/kernels/CMakeLists.txt b/shared/source/built_ins/kernels/CMakeLists.txt
index 1b1225077..2e8148c25 100644
--- a/shared/source/built_ins/kernels/CMakeLists.txt
+++ b/shared/source/built_ins/kernels/CMakeLists.txt
@@ -93,9 +93,9 @@ function(compile_builtin gen_type platform_type builtin bits builtin_options mod
)
add_custom_command(
OUTPUT ${OUTPUT_FILE_CPP}
- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${OUTPUTPATH_BASE}.gen --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --platform ${family_name_with_type}
+ COMMAND cpp_generate_tool --file ${OUTPUTPATH_BASE}.gen --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --platform ${family_name_with_type}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${OUTPUTPATH_BASE}.gen $<TARGET_FILE:cpp_generate_tool>
+ DEPENDS ${OUTPUTPATH_BASE}.gen cpp_generate_tool
)
endfunction()
@@ -136,9 +136,9 @@ function(generate_cpp_spirv builtin)
)
add_custom_command(
OUTPUT ${OUTPUT_FILE_CPP}
- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${GENERATED_SPV_INPUT} --output ${OUTPUT_FILE_CPP} --array ${BASENAME}
+ COMMAND cpp_generate_tool --file ${GENERATED_SPV_INPUT} --output ${OUTPUT_FILE_CPP} --array ${BASENAME}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${GENERATED_SPV_INPUT} $<TARGET_FILE:cpp_generate_tool>
+ DEPENDS ${GENERATED_SPV_INPUT} cpp_generate_tool
)
endfunction()
--
2.28.0

View File

@ -0,0 +1,56 @@
SUMMARY = "The Intel(R) Graphics Compute Runtime for OpenCL(TM)"
DESCRIPTION = "The Intel(R) Graphics Compute Runtime for OpenCL(TM) \
is an open source project to converge Intel's development efforts \
on OpenCL(TM) compute stacks supporting the GEN graphics hardware \
architecture."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=ae27f47fd6755510247c19e547e4c804 \
file://third_party/opencl_headers/LICENSE;md5=dcefc90f4c3c689ec0c2489064e7273b"
SRC_URI = "git://github.com/intel/compute-runtime.git;protocol=https \
"
SRC_URI_append_class-target = " file://allow-to-find-cpp-generation-tool.patch"
SRCREV = "5a05d7643c4d8cc14e281b686c78101a7a01e8e1"
S = "${WORKDIR}/git"
DEPENDS += " intel-graphics-compiler gmmlib"
DEPENDS_append_class-target = " intel-compute-runtime-native libva"
RDEPENDS_${PN} += " intel-graphics-compiler gmmlib"
inherit cmake pkgconfig
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST_libc-musl = "null"
EXTRA_OECMAKE = " \
-DIGC_DIR=${STAGING_INCDIR}/igc \
-DBUILD_TYPE=Release \
-DSKIP_UNIT_TESTS=1 \
-DCCACHE_ALLOWED=FALSE \
"
EXTRA_OECMAKE_append_class-target = " \
-Dcloc_cmd_prefix=ocloc \
"
PACKAGECONFIG ??= ""
PACKAGECONFIG[levelzero] = "-DBUILD_WITH_L0=ON, -DBUILD_WITH_L0=OFF, level-zero"
do_install_append_class-native() {
install -d ${D}${bindir}
install ${B}/bin/cpp_generate_tool ${D}${bindir}/
}
FILES_${PN} += " \
${libdir}/intel-opencl/libigdrcl.so \
${libdir}/libocloc.so \
"
FILES_${PN}-dev = "${includedir}"
BBCLASSEXTEND = "native nativesdk"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"

View File

@ -1,61 +0,0 @@
SUMMARY = "The Intel(R) Graphics Compute Runtime for OpenCL(TM)"
DESCRIPTION = "The Intel(R) Graphics Compute Runtime for OpenCL(TM) \
is an open source project to converge Intel's development efforts \
on OpenCL(TM) compute stacks supporting the GEN graphics hardware \
architecture."
LICENSE = "MIT & Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eca6ec6997e18db166db7109cdbe611c \
file://third_party/opencl_headers/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRC_URI = "git://github.com/intel/compute-runtime.git;protocol=https;branch=releases/25.13 \
file://0002-Build-not-able-to-locate-cpp_generation_tool.patch \
file://0003-external-ocloc.patch \
"
SRCREV = "a9961bdfaa07250fd52ff930bf8f31fb4e3b7799"
DEPENDS += " intel-graphics-compiler gmmlib libva qemu-native"
RDEPENDS:${PN} += " intel-graphics-compiler gmmlib"
inherit cmake pkgconfig qemu
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = "null"
EXTRA_OECMAKE = " \
-DIGC_DIR=${STAGING_INCDIR}/igc \
-DBUILD_TYPE=Release \
-DSKIP_UNIT_TESTS=1 \
-DCCACHE_ALLOWED=FALSE \
-DNEO_DISABLE_LD_LLD=ON \
-DNEO_DISABLE_LD_GOLD=ON \
"
EXTRA_OECMAKE:append:class-target = " \
-Docloc_cmd_prefix=ocloc \
-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \
"
PACKAGECONFIG ??= ""
PACKAGECONFIG[levelzero] = "-DBUILD_WITH_L0=ON, -DBUILD_WITH_L0=OFF, level-zero"
do_configure:prepend:class-target () {
# Write out a qemu wrapper that will be used by cmake.
qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${B}/bin'),d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
cat > ${WORKDIR}/qemuwrapper << EOF
#!/bin/sh
$qemu_binary "\$@"
EOF
chmod +x ${WORKDIR}/qemuwrapper
}
FILES:${PN} += " \
${libdir}/intel-opencl/libigdrcl.so \
${libdir}/libocloc.so \
"
FILES:${PN}-dev = "${includedir}"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"

View File

@ -1,32 +0,0 @@
From 1b98a931c3bf8daccc48cd618335ff35e3d382da Mon Sep 17 00:00:00 2001
From: Anuj Mittal <anuj.mittal@intel.com>
Date: Tue, 12 Oct 2021 23:46:42 +0800
Subject: [PATCH] BiF/CMakeLists.txt: remove opt from DEPENDS
Otherwise it starts failing with:
| ninja: error: 'IGC/VectorCompiler/lib/BiF/opt', needed by 'IGC/VectorCompiler/lib/BiF/VCBiFPrintfOCL32.opt.bc', missing and no known rule to make it
We don't need to explicitly make sure opt is built when
using prebuilt binaries.
Upstream-Status: Inappropriate
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: git/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake
===================================================================
--- git.orig/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake
+++ git/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake
@@ -121,7 +121,7 @@ function(vc_build_bif RES_FILE CMCL_SRC_
COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME}"
COMMAND CMCLTranslatorTool ${OPT_OPAQUE_ARG} -o ${BIF_CMCL_BC_PATH} ${BIF_CLANG_BC_PATH_FINAL}
COMMAND ${LLVM_OPT_EXE} ${OPT_OPAQUE_ARG} --O2 -o ${BIF_OPT_BC_PATH} ${BIF_CMCL_BC_PATH}
- DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${OPT_BC_DEPENDS})
+ DEPENDS CMCLTranslatorTool ${BIF_CLANG_BC_PATH_FINAL})
add_custom_target(${TARGET_NAME}
DEPENDS ${BIF_OPT_BC_PATH}

View File

@ -1,27 +0,0 @@
From 048512728eea53b3772a3f80ac9743bfc462487e Mon Sep 17 00:00:00 2001
From: Yogesh Tyagi <yogesh.tyagi@intel.com>
Date: Thu, 2 Jan 2025 15:59:27 +0530
Subject: [PATCH] Build not able to locate BiFManager-bin
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
---
IGC/BiFModule/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: git/IGC/BiFModule/CMakeLists.txt
===================================================================
--- git.orig/IGC/BiFModule/CMakeLists.txt
+++ git/IGC/BiFModule/CMakeLists.txt
@@ -655,8 +655,8 @@ set(IGC_BUILD__PROJ__BiFModuleCache_OCL
add_custom_command(
OUTPUT "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.h" "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bifbc"
- COMMAND $<TARGET_FILE:BiFManager-bin> "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_32.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_64.bc" "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bifbc" "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.h"
- DEPENDS "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_32.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_64.bc"$<TARGET_FILE:BiFManager-bin>
+ COMMAND BiFManager-bin "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_32.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_64.bc" "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bifbc" "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.h"
+ DEPENDS "${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_32.bc" "${IGC_BUILD__BIF_DIR}/IGCsize_t_64.bc" BiFManager-bin
COMMENT "BiF: ${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc: Spliting output .bc."
COMMAND_EXPAND_LISTS
)

View File

@ -1,30 +0,0 @@
From 251e2854dd206ebf66e5908d3277e4585fe2a63b Mon Sep 17 00:00:00 2001
From: Anuj Mittal <anuj.mittal@intel.com>
Date: Mon, 9 Jan 2023 11:43:05 +0800
Subject: [PATCH] external/SPIRV-Tools: change path to tools and headers
We clone the SPIRV headers and tools in a different directory to ensure
file path substitutions take place.
Upstream-Status: Inappropriate
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
external/SPIRV-Tools/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: git/external/SPIRV-Tools/CMakeLists.txt
===================================================================
--- git.orig/external/SPIRV-Tools/CMakeLists.txt
+++ git/external/SPIRV-Tools/CMakeLists.txt
@@ -45,8 +45,8 @@ else() #By default use build from source
message(STATUS "[SPIRV-Tools] : Building from source")
message(STATUS "[SPIRV-Tools] : Current source dir: ${CMAKE_CURRENT_SOURCE_DIR}")
- set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Headers") # used in subdirectory
- set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Tools")
+ set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Headers") # used in subdirectory
+ set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Tools")
set(SPIRV-Tools_OUTPUT_DIR "${IGC_OPTION__OUTPUT_DIR}/external/SPIRV-Tools/build")
set(IGC_BUILD__SPIRV-Headers_DIR "${SPIRV-Headers_SOURCE_DIR}")

View File

@ -1,23 +0,0 @@
From 1641dc87b2ed6b6b87b2cef824e4d66da65b0b30 Mon Sep 17 00:00:00 2001
From: Anuj Mittal <anuj.mittal@intel.com>
Date: Thu, 19 May 2022 22:50:09 +0800
Subject: [PATCH] fix tblgen
Upstream-Status: Inappropriate [OE specific]
---
IGC/cmake/igc_llvm.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/IGC/cmake/igc_llvm.cmake b/IGC/cmake/igc_llvm.cmake
index b708cc904..fe4668890 100644
--- a/IGC/cmake/igc_llvm.cmake
+++ b/IGC/cmake/igc_llvm.cmake
@@ -53,7 +53,7 @@ else()
set(LLVM_OPT_EXE "opt" CACHE STRING "")
set(LLVM_TABLEGEN_EXE "llvm-tblgen")
- if(CMAKE_CROSSCOMPILING)
+ if(TRUE)
if(DEFINED LLVM_TABLEGEN)
set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN})
else()

View File

@ -0,0 +1,43 @@
From 5501fab763aa2b11437fbdb19e07a11157a7d3e6 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Thu, 6 Feb 2020 14:56:56 +0800
Subject: [PATCH] skip execution of ElfPackager
ElfPackager adds the ability to convert llvm bitcode into elf files for
easier partitioning. Skip for now until we start building a native
version for this.
Upstream-Status: Inappropriate [configuration specific]
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
IGC/ElfPackager/CMakeLists.txt | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/IGC/ElfPackager/CMakeLists.txt b/IGC/ElfPackager/CMakeLists.txt
index 563ac9d6..c6c74ce9 100644
--- a/IGC/ElfPackager/CMakeLists.txt
+++ b/IGC/ElfPackager/CMakeLists.txt
@@ -71,12 +71,12 @@ include_directories (
${IGC_SOURCE_DIR}/AdaptorOCL/CLElfLib/
)
-if(NOT ANDROID)
- add_custom_command(TARGET ${IGC_BUILD__PROJ__ElfPackager}
- POST_BUILD
- COMMAND $<TARGET_FILE:${IGC_BUILD__PROJ__ElfPackager}> -includeSizet -funcList ${CMAKE_CURRENT_SOURCE_DIR}/function_bin.txt ${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc ${IGC_BUILD__BIF_DIR}/igdclbif.bin
- )
-endif()
+#if(NOT ANDROID)
+# add_custom_command(TARGET ${IGC_BUILD__PROJ__ElfPackager}
+# POST_BUILD
+# COMMAND $<TARGET_FILE:${IGC_BUILD__PROJ__ElfPackager}> -includeSizet -funcList ${CMAKE_CURRENT_SOURCE_DIR}/function_bin.txt ${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc ${IGC_BUILD__BIF_DIR}/igdclbif.bin
+# )
+#endif()
add_dependencies("${IGC_BUILD__PROJ__ElfPackager}" "${IGC_BUILD__PROJ__BiFModule_OCL}")
--
2.17.1

View File

@ -0,0 +1,318 @@
From 60136b453bb3a109bfc88c4040b871af9d522ed5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?= <zboszor@pr.hu>
Date: Thu, 25 Feb 2021 19:40:21 +0100
Subject: [PATCH 2/3] Review fixes for LLVM 12 phase 1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Upstream-Status: Pending
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp | 6 +-----
IGC/AdaptorOCL/SPIRV/SPIRVUtil.cpp | 6 +-----
IGC/Compiler/CISACodeGen/AdvMemOpt.cpp | 7 ++-----
IGC/Compiler/CISACodeGen/Simd32Profitability.cpp | 7 ++-----
IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp | 11 +----------
IGC/Compiler/GenTTI.cpp | 9 ++-------
IGC/Compiler/Legalizer/InstPromoter.cpp | 8 +-------
.../DeviceEnqueueFuncs/TransformBlocks.cpp | 6 +-----
.../OpenCLPasses/WIFuncs/WIFuncResolution.cpp | 4 ----
IGC/Compiler/Optimizer/Scalarizer.cpp | 2 +-
IGC/WrapperLLVM/include/llvmWrapper/IR/DerivedTypes.h | 10 ++++++++++
.../include/llvmWrapper/Support/TypeSize.h | 4 +---
.../include/llvmWrapper/Transforms/Utils/LoopUtils.h | 8 ++++++++
IGC/common/igc_resourceDimTypes.h | 5 ++---
14 files changed, 33 insertions(+), 60 deletions(-)
diff --git a/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp b/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
index 725a1512..12f42be8 100644
--- a/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
+++ b/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
@@ -1929,11 +1929,7 @@ SPIRVToLLVM::transType(SPIRVType *T) {
auto name = isSubgroupAvcINTELTypeOpCode(OC) ?
OCLSubgroupINTELTypeOpCodeMap::rmap(OC) :
BuiltinOpaqueGenericTypeOpCodeMap::rmap(OC);
-#if LLVM_VERSION_MAJOR >= 12
- auto *pST = llvm::StructType::getTypeByName(M->getContext(), name);
-#else
- auto *pST = M->getTypeByName(name);
-#endif
+ auto *pST = IGCLLVM::getTypeByName(M, name);
pST = pST ? pST : StructType::create(*Context, name);
return mapType(T, PointerType::get(pST, getOCLOpaqueTypeAddrSpace(OC)));
diff --git a/IGC/AdaptorOCL/SPIRV/SPIRVUtil.cpp b/IGC/AdaptorOCL/SPIRV/SPIRVUtil.cpp
index 91b4623c..f4f0dee5 100644
--- a/IGC/AdaptorOCL/SPIRV/SPIRVUtil.cpp
+++ b/IGC/AdaptorOCL/SPIRV/SPIRVUtil.cpp
@@ -93,11 +93,7 @@ saveLLVMModule(Module *M, const std::string &OutputFile) {
PointerType*
getOrCreateOpaquePtrType(Module *M, const std::string &Name,
unsigned AddrSpace) {
-#if LLVM_VERSION_MAJOR >= 12
- auto OpaqueType = llvm::StructType::getTypeByName(M->getContext(), Name);
-#else
- auto OpaqueType = M->getTypeByName(Name);
-#endif
+ auto OpaqueType = IGCLLVM::getTypeByName(M, Name);
if (!OpaqueType)
OpaqueType = StructType::create(M->getContext(), Name);
return PointerType::get(OpaqueType, AddrSpace);
diff --git a/IGC/Compiler/CISACodeGen/AdvMemOpt.cpp b/IGC/Compiler/CISACodeGen/AdvMemOpt.cpp
index fc45a510..a612a473 100644
--- a/IGC/Compiler/CISACodeGen/AdvMemOpt.cpp
+++ b/IGC/Compiler/CISACodeGen/AdvMemOpt.cpp
@@ -33,6 +33,7 @@ IN THE SOFTWARE.
#include <llvm/Support/Debug.h>
#include <llvm/Support/raw_ostream.h>
#include <llvm/Transforms/Utils/Local.h>
+#include "llvmWrapper/Transforms/Utils/LoopUtils.h"
#include "common/LLVMWarningsPop.hpp"
#include "GenISAIntrinsics/GenIntrinsics.h"
#include "Compiler/CISACodeGen/ShaderCodeGen.hpp"
@@ -134,11 +135,7 @@ bool AdvMemOpt::runOnFunction(Function& F) {
for (auto I = LI->begin(), E = LI->end(); I != E; ++I)
for (auto DFI = df_begin(*I), DFE = df_end(*I); DFI != DFE; ++DFI) {
Loop* L = *DFI;
-#if LLVM_VERSION_MAJOR >= 12
- if (L->isInnermost())
-#else
- if (L->empty())
-#endif
+ if (IGCLLVM::isInnermost(L))
InnermostLoops.push_back(L);
}
diff --git a/IGC/Compiler/CISACodeGen/Simd32Profitability.cpp b/IGC/Compiler/CISACodeGen/Simd32Profitability.cpp
index c1f4a419..5393d4e8 100644
--- a/IGC/Compiler/CISACodeGen/Simd32Profitability.cpp
+++ b/IGC/Compiler/CISACodeGen/Simd32Profitability.cpp
@@ -28,6 +28,7 @@ IN THE SOFTWARE.
#include "Compiler/CISACodeGen/Platform.hpp"
#include "common/LLVMWarningsPush.hpp"
#include <llvmWrapper/IR/DerivedTypes.h>
+#include <llvmWrapper/Transforms/Utils/LoopUtils.h>
#include <llvm/IR/InstIterator.h>
#include <llvm/IR/Operator.h>
#include <llvmWrapper/IR/DerivedTypes.h>
@@ -995,11 +996,7 @@ static bool hasLongStridedLdStInLoop(Function* F, LoopInfo* LI, WIAnalysis* WI)
// Collect innermost simple loop.
for (auto I = LI->begin(), E = LI->end(); I != E; ++I) {
auto L = *I;
-#if LLVM_VERSION_MAJOR >= 12
- if (!L->isInnermost())
-#else
- if (!L->empty())
-#endif
+ if (!IGCLLVM::isInnermost(L))
continue;
if (L->getNumBlocks() != 2)
continue;
diff --git a/IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp b/IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp
index adf992cb..33473c23 100644
--- a/IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp
+++ b/IGC/Compiler/ConvertMSAAPayloadTo16Bit.cpp
@@ -153,21 +153,12 @@ void ConvertMSAAPayloadTo16Bit::visitCallInst(CallInst& I)
// In OGL there are uses of ldmcs other then ldms, using vec4float type.
// Fix them to use newly created 16bit ldmcs.
if (ldmcs->getType()->isVectorTy() &&
-#if LLVM_VERSION_MAJOR >= 12
- ldmcs->getType()->getScalarType()->isFloatTy())
-#else
- ldmcs->getType()->getVectorElementType()->isFloatTy())
-#endif
+ cast<IGCLLVM::FixedVectorType>(ldmcs->getType())->getElementType()->isFloatTy())
{
m_builder->SetInsertPoint(ldmcs);
-#if LLVM_VERSION_MAJOR >= 12
uint ldmcsNumOfElements = cast<IGCLLVM::FixedVectorType>(ldmcs->getType())->getNumElements();
uint new_mcs_callNumOfElements = cast<IGCLLVM::FixedVectorType>(new_mcs_call->getType())->getNumElements();
-#else
- uint ldmcsNumOfElements = ldmcs->getType()->getVectorNumElements();
- uint new_mcs_callNumOfElements = new_mcs_call->getType()->getVectorNumElements();
-#endif
// vec of 16bit ints to vec of 32bit ints
Type* new_mcs_callVecType = IGCLLVM::FixedVectorType::get(m_builder->getInt32Ty(), new_mcs_callNumOfElements);
diff --git a/IGC/Compiler/GenTTI.cpp b/IGC/Compiler/GenTTI.cpp
index 9e4d2f26..53e3ec9e 100644
--- a/IGC/Compiler/GenTTI.cpp
+++ b/IGC/Compiler/GenTTI.cpp
@@ -37,6 +37,7 @@ IN THE SOFTWARE.
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvmWrapper/Transforms/Utils/LoopUtils.h"
#include "common/LLVMWarningsPop.hpp"
using namespace llvm;
@@ -216,13 +217,7 @@ namespace llvm {
// Skip non-simple loop.
if (L->getNumBlocks() != 1) {
- if (IGC_IS_FLAG_ENABLED(EnableAdvRuntimeUnroll) &&
-#if LLVM_VERSION_MAJOR >= 12
- L->isInnermost()
-#else
- L->empty()
-#endif
- ) {
+ if (IGC_IS_FLAG_ENABLED(EnableAdvRuntimeUnroll) && IGCLLVM::isInnermost(L)) {
auto countNonPHI = [](BasicBlock* BB) {
unsigned Total = BB->size();
unsigned PHIs = 0;
diff --git a/IGC/Compiler/Legalizer/InstPromoter.cpp b/IGC/Compiler/Legalizer/InstPromoter.cpp
index 8fadf89f..63cbccb5 100644
--- a/IGC/Compiler/Legalizer/InstPromoter.cpp
+++ b/IGC/Compiler/Legalizer/InstPromoter.cpp
@@ -398,13 +398,7 @@ bool InstPromoter::visitBitCastInst(BitCastInst& I) {
IRB->CreateBitCast(Val, IGCLLVM::FixedVectorType::get(DestTy->getScalarType(), N));
std::vector<Constant*> Vals;
- for (unsigned i = 0;
-#if LLVM_VERSION_MAJOR >= 12
- i < cast<IGCLLVM::FixedVectorType>(DestTy)->getNumElements();
-#else
- i < DestTy->getVectorNumElements();
-#endif
- i++)
+ for (unsigned i = 0; i < cast<IGCLLVM::FixedVectorType>(DestTy)->getNumElements(); i++)
Vals.push_back(IRB->getInt32(i));
Value* Mask = ConstantVector::get(Vals);
diff --git a/IGC/Compiler/Optimizer/OpenCLPasses/DeviceEnqueueFuncs/TransformBlocks.cpp b/IGC/Compiler/Optimizer/OpenCLPasses/DeviceEnqueueFuncs/TransformBlocks.cpp
index 119520ed..a3681b79 100644
--- a/IGC/Compiler/Optimizer/OpenCLPasses/DeviceEnqueueFuncs/TransformBlocks.cpp
+++ b/IGC/Compiler/Optimizer/OpenCLPasses/DeviceEnqueueFuncs/TransformBlocks.cpp
@@ -952,11 +952,7 @@ namespace //Anonymous
{
auto ndrangeStructName = "struct.ndrange_t";
auto module = _deviceExecCall->getModule();
-#if LLVM_VERSION_MAJOR >= 12
- auto ndrangeTy = llvm::StructType::getTypeByName(module->getContext(), ndrangeStructName);
-#else
- auto ndrangeTy = module->getTypeByName(ndrangeStructName);
-#endif
+ auto ndrangeTy = IGCLLVM::getTypeByName(module, ndrangeStructName);
if (ndrangeTy == nullptr)
{
//create struct type
diff --git a/IGC/Compiler/Optimizer/OpenCLPasses/WIFuncs/WIFuncResolution.cpp b/IGC/Compiler/Optimizer/OpenCLPasses/WIFuncs/WIFuncResolution.cpp
index 535d6268..c23c661d 100644
--- a/IGC/Compiler/Optimizer/OpenCLPasses/WIFuncs/WIFuncResolution.cpp
+++ b/IGC/Compiler/Optimizer/OpenCLPasses/WIFuncs/WIFuncResolution.cpp
@@ -303,11 +303,7 @@ static Value* BuildLoadInst(CallInst& CI, unsigned int Offset, Type* DataType)
auto Size = ElemByteSize;
if (DataType->isVectorTy())
{
-#if LLVM_VERSION_MAJOR >= 12
Size *= cast<IGCLLVM::FixedVectorType>(DataType)->getNumElements();
-#else
- Size *= DataType->getVectorNumElements();
-#endif
}
unsigned int AlignedOffset = (Offset / ElemByteSize) * ElemByteSize;
unsigned int LoadByteSize = (Offset == AlignedOffset) ? Size : Size * 2;
diff --git a/IGC/Compiler/Optimizer/Scalarizer.cpp b/IGC/Compiler/Optimizer/Scalarizer.cpp
index a4e73a6d..38627553 100644
--- a/IGC/Compiler/Optimizer/Scalarizer.cpp
+++ b/IGC/Compiler/Optimizer/Scalarizer.cpp
@@ -778,7 +778,7 @@ void ScalarizeFunction::scalarizeInstruction(ShuffleVectorInst* SI)
// Generate array for shuffled scalar values
SmallVector<Value*, MAX_INPUT_VECTOR_WIDTH>newVector;
- unsigned width = int_cast<unsigned>(dyn_cast<IGCLLVM::FixedVectorType>(SI->getType())->getNumElements());
+ unsigned width = int_cast<unsigned>(cast<IGCLLVM::FixedVectorType>(SI->getType())->getNumElements());
// Generate undef value, which may be needed as some scalar elements
UndefValue* undef = UndefValue::get(inputType->getElementType());
diff --git a/IGC/WrapperLLVM/include/llvmWrapper/IR/DerivedTypes.h b/IGC/WrapperLLVM/include/llvmWrapper/IR/DerivedTypes.h
index a3f5a0b8..6a5407bb 100644
--- a/IGC/WrapperLLVM/include/llvmWrapper/IR/DerivedTypes.h
+++ b/IGC/WrapperLLVM/include/llvmWrapper/IR/DerivedTypes.h
@@ -29,6 +29,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/DerivedTypes.h"
+#include "llvm/IR/Module.h"
namespace IGCLLVM
{
@@ -62,6 +63,15 @@ namespace IGCLLVM
return false;
#endif
}
+
+ inline llvm::StructType *getTypeByName(llvm::Module *M, llvm::StringRef Name) {
+#if LLVM_VERSION_MAJOR >= 12
+ return llvm::StructType::getTypeByName(M->getContext(), Name);
+#else
+ return M->getTypeByName(Name);
+#endif
+ }
+
}
#endif
diff --git a/IGC/WrapperLLVM/include/llvmWrapper/Support/TypeSize.h b/IGC/WrapperLLVM/include/llvmWrapper/Support/TypeSize.h
index 30e29720..7021820c 100644
--- a/IGC/WrapperLLVM/include/llvmWrapper/Support/TypeSize.h
+++ b/IGC/WrapperLLVM/include/llvmWrapper/Support/TypeSize.h
@@ -39,12 +39,10 @@ inline unsigned getElementCount(unsigned EC) { return EC; }
inline ElementCount getElementCount(unsigned EC) {
return ElementCount(EC, false);
}
-#elif LLVM_VERSION_MAJOR == 12
+#else
inline ElementCount getElementCount(unsigned EC) {
return ElementCount::get(EC, false);
}
-#else
-#error "unsupported LLVM version"
#endif
} // namespace IGCLLVM
diff --git a/IGC/WrapperLLVM/include/llvmWrapper/Transforms/Utils/LoopUtils.h b/IGC/WrapperLLVM/include/llvmWrapper/Transforms/Utils/LoopUtils.h
index db47b00b..bce9cfc1 100644
--- a/IGC/WrapperLLVM/include/llvmWrapper/Transforms/Utils/LoopUtils.h
+++ b/IGC/WrapperLLVM/include/llvmWrapper/Transforms/Utils/LoopUtils.h
@@ -41,6 +41,14 @@ namespace IGCLLVM
return llvm::InsertPreheaderForLoop(L, DT, LI, nullptr, PreserveLCSSA);
}
#endif
+
+ inline bool isInnermost(llvm::Loop *L) {
+#if LLVM_VERSION_MAJOR >= 12
+ return L->isInnermost();
+#else
+ return L->empty();
+#endif
+ }
}
#endif
diff --git a/IGC/common/igc_resourceDimTypes.h b/IGC/common/igc_resourceDimTypes.h
index d790330f..2d675969 100644
--- a/IGC/common/igc_resourceDimTypes.h
+++ b/IGC/common/igc_resourceDimTypes.h
@@ -67,10 +67,9 @@ namespace IGC
resourceDimTypeId == DIM_3D_TYPE || resourceDimTypeId == DIM_CUBE_TYPE || resourceDimTypeId == DIM_CUBE_ARRAY_TYPE));
#if LLVM_VERSION_MAJOR >= 12
- llvm::LLVMContext& llvmCtx = module.getContext();
- return llvm::StructType::getTypeByName(llvmCtx, ResourceDimensionTypeName[resourceDimTypeId]);
+ return llvm::StructType::getTypeByName(module.getContext(), ResourceDimensionTypeName[resourceDimTypeId]);
#else
return module.getTypeByName(ResourceDimensionTypeName[resourceDimTypeId]);
#endif
}
-}
\ No newline at end of file
+}
--
2.17.1

View File

@ -0,0 +1,123 @@
From c6d333637537263930acb1b6c5dadb0467d745f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?= <zboszor@pr.hu>
Date: Fri, 26 Feb 2021 06:39:35 +0100
Subject: [PATCH 3/3] Review fixes for LLVM 12 phase 2
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Upstream-Status: Pending
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp | 4 ----
.../AddressSpaceAliasAnalysis.cpp | 10 +++++-----
.../PrivateMemory/PrivateMemoryResolution.cpp | 4 ----
IGC/DebugInfo/DebugInfoUtils.hpp | 4 ----
IGC/DebugInfo/DwarfDebug.cpp | 8 --------
5 files changed, 5 insertions(+), 25 deletions(-)
diff --git a/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp b/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
index 12f42be8..c4f9d1ea 100644
--- a/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
+++ b/IGC/AdaptorOCL/SPIRV/SPIRVReader.cpp
@@ -1576,11 +1576,7 @@ void SPIRVToLLVMDbgTran::transDbgInfo(SPIRVValue *SV, Value *V) {
Line->getColumn(), scope, iat);
if(scope && !isa<DIFile>(scope))
-#if LLVM_VERSION_MAJOR >= 12
I->setDebugLoc(DILocation::get(scope->getContext(), Line->getLine(), Line->getColumn(),
-#else
- I->setDebugLoc(DebugLoc::get(Line->getLine(), Line->getColumn(),
-#endif
scope, iat));
}
}
diff --git a/IGC/Compiler/Optimizer/OpenCLPasses/AddressSpaceAliasAnalysis/AddressSpaceAliasAnalysis.cpp b/IGC/Compiler/Optimizer/OpenCLPasses/AddressSpaceAliasAnalysis/AddressSpaceAliasAnalysis.cpp
index e9c07b34..b6b779da 100644
--- a/IGC/Compiler/Optimizer/OpenCLPasses/AddressSpaceAliasAnalysis/AddressSpaceAliasAnalysis.cpp
+++ b/IGC/Compiler/Optimizer/OpenCLPasses/AddressSpaceAliasAnalysis/AddressSpaceAliasAnalysis.cpp
@@ -23,8 +23,7 @@ IN THE SOFTWARE.
============================= end_copyright_notice ===========================*/
#include "llvm/Config/llvm-config.h"
-#include "llvmWrapper/IR/DerivedTypes.h"
-#include "llvmWrapper/Analysis/TargetLibraryInfo.h"
+#include <llvm/Analysis/TargetLibraryInfo.h>
#include "Compiler/Optimizer/OpenCLPasses/AddressSpaceAliasAnalysis/AddressSpaceAliasAnalysis.h"
#include "Compiler/CodeGenPublic.h"
#include "Compiler/IGCPassSupport.h"
@@ -180,11 +179,12 @@ namespace {
bool doInitialization(Module& M) override {
if(M.size() > 0)
{
+ Result.reset(new AddressSpaceAAResult(
+ getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(
#if LLVM_VERSION_MAJOR >= 10
- Function &F = *M.begin();
+ *M.begin()
#endif
- Result.reset(new AddressSpaceAAResult(
- getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(),
+ ),
*getAnalysis<CodeGenContextWrapper>().getCodeGenContext()));
}
return false;
diff --git a/IGC/Compiler/Optimizer/OpenCLPasses/PrivateMemory/PrivateMemoryResolution.cpp b/IGC/Compiler/Optimizer/OpenCLPasses/PrivateMemory/PrivateMemoryResolution.cpp
index 07f85f4c..98ea616f 100644
--- a/IGC/Compiler/Optimizer/OpenCLPasses/PrivateMemory/PrivateMemoryResolution.cpp
+++ b/IGC/Compiler/Optimizer/OpenCLPasses/PrivateMemory/PrivateMemoryResolution.cpp
@@ -816,11 +816,7 @@ bool PrivateMemoryResolution::resolveAllocaInstructions(bool privateOnStack)
// Construct an empty DebugLoc.
IF_DEBUG_INFO(DebugLoc entryDebugLoc);
// Assign with the function location if available.
-#if LLVM_VERSION_MAJOR >= 12
IF_DEBUG_INFO_IF(DISubprogram *subprogram = m_currFunction->getSubprogram(), entryDebugLoc = DILocation::get(subprogram->getContext(), subprogram->getLine(), 0, subprogram););
-#else
- IF_DEBUG_INFO_IF(DISubprogram *subprogram = m_currFunction->getSubprogram(), entryDebugLoc = DebugLoc::get(subprogram->getLine(), 0, subprogram););
-#endif
IF_DEBUG_INFO(entryBuilder.SetCurrentDebugLocation(entryDebugLoc));
if (privateOnStack)
diff --git a/IGC/DebugInfo/DebugInfoUtils.hpp b/IGC/DebugInfo/DebugInfoUtils.hpp
index b77a550d..88b30a75 100644
--- a/IGC/DebugInfo/DebugInfoUtils.hpp
+++ b/IGC/DebugInfo/DebugInfoUtils.hpp
@@ -108,11 +108,7 @@ namespace IGC
IGCLLVM::DIBuilder Builder(M);
llvm::DIGlobalVariable* GV = GVs[j]->getVariable();
llvm::DIScope* scopeToUse = GV->getScope();
-#if LLVM_VERSION_MAJOR >= 12
llvm::DILocation* locToUse = llvm::DILocation::get(scopeToUse->getContext(), GV->getLine(), 0, scopeToUse, loc);
-#else
- llvm::DILocation* locToUse = llvm::DebugLoc::get(GV->getLine(), 0, scopeToUse, loc);
-#endif
if (llvm::isa<llvm::DICompileUnit>(GV->getScope()))
{
// Function has no DebugLoc so it is either internal
diff --git a/IGC/DebugInfo/DwarfDebug.cpp b/IGC/DebugInfo/DwarfDebug.cpp
index bd9f17b7..3d9f0835 100644
--- a/IGC/DebugInfo/DwarfDebug.cpp
+++ b/IGC/DebugInfo/DwarfDebug.cpp
@@ -2102,17 +2102,9 @@ static DebugLoc getFnDebugLoc(DebugLoc DL, const LLVMContext& Ctx)
// Check for number of operands since the compatibility is cheap here.
if (SP->getNumOperands() > 19)
{
-#if LLVM_VERSION_MAJOR >= 12
return DILocation::get(SP->getContext(), SP->getScopeLine(), 0, SP);
-#else
- return DebugLoc::get(SP->getScopeLine(), 0, SP);
-#endif
}
-#if LLVM_VERSION_MAJOR >= 12
return DILocation::get(SP->getContext(), SP->getLine(), 0, SP);
-#else
- return DebugLoc::get(SP->getLine(), 0, SP);
-#endif
}
return DebugLoc();
--
2.17.1

View File

@ -1,4 +1,4 @@
From ca136c04d4ac60e3febc8ea2b9c4d4736365a424 Mon Sep 17 00:00:00 2001
From 2fa3f2da1179bd5b2eeac82839d386f0111e611c Mon Sep 17 00:00:00 2001
From: Lee Chee Yang <chee.yang.lee@intel.com>
Date: Wed, 2 Sep 2020 08:28:35 +0800
Subject: [PATCH] Improve Reproducibility for src package
@ -13,11 +13,11 @@ Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
visa/CMakeLists.txt | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
Index: git/visa/CMakeLists.txt
===================================================================
--- git.orig/visa/CMakeLists.txt
+++ git/visa/CMakeLists.txt
@@ -135,8 +135,11 @@ endif()
diff --git a/visa/CMakeLists.txt b/visa/CMakeLists.txt
index 981c35d2..d5944370 100644
--- a/visa/CMakeLists.txt
+++ b/visa/CMakeLists.txt
@@ -109,8 +109,11 @@ endif()
set(bison_output_file ${CMAKE_CURRENT_BINARY_DIR}/CISA.tab.cpp)
set(flex_output_file ${CMAKE_CURRENT_BINARY_DIR}/lex.CISA.cpp)
@ -31,3 +31,6 @@ Index: git/visa/CMakeLists.txt
ADD_FLEX_BISON_DEPENDENCY(CISAScanner CISAParser)
set(CISAScanner_dependencies)
--
2.28.0

View File

@ -0,0 +1,71 @@
From 11b923c99cbe3580885ce40c322277fc823107a0 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Tue, 2 Feb 2021 13:39:53 +0800
Subject: [PATCH] IGC/VectorCompiler/CMakeLists.txt: link to external
LLVMGenXIntrinsics
By default LLVMGenXIntrinsics is to be build In-tree, but we want to
link externally.
Fix llvm-tblgen path.
Upstream-Status: Inappropriate [configuration specific]
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
IGC/VectorCompiler/CMakeLists.txt | 32 ++-----------------------------
1 file changed, 2 insertions(+), 30 deletions(-)
diff --git a/IGC/VectorCompiler/CMakeLists.txt b/IGC/VectorCompiler/CMakeLists.txt
index 86f343ee..b4268160 100644
--- a/IGC/VectorCompiler/CMakeLists.txt
+++ b/IGC/VectorCompiler/CMakeLists.txt
@@ -53,10 +53,7 @@ if(IGC_BUILD__USING_SYSTEM_LLVM OR (WIN32 AND LLVM_USE_PREBUILT))
message(STATUS "[VC] Using system llvm")
# Need to search for llvm-tblgen
- find_program(LLVM_TABLEGEN_EXE "llvm-tblgen"
- ${LLVM_TOOLS_BINARY_DIR}
- NO_DEFAULT_PATH
- )
+ find_program(LLVM_TABLEGEN_EXE "llvm-tblgen")
if(LLVM_TABLEGEN_EXE-NOTFOUND)
message(FATAL_ERROR "[VC] llvm-tblgen is not found")
endif()
@@ -140,32 +137,7 @@ if(LLVM_ON_WIN32)
add_compile_options(/wd4141)
endif()
-if(DEFINED VC_INTRINSICS_SRC)
- set(INTRSRC "${VC_INTRINSICS_SRC}/GenXIntrinsics")
-endif()
-
-if(NOT DEFINED INTRSRC)
- set(INTRSRC "${CMAKE_CURRENT_SOURCE_DIR}/../../../vc-intrinsics/GenXIntrinsics")
-endif()
-
-message(STATUS "[VC] Using vc-intrinsics source from: ${INTRSRC}")
-
-# We are using prebuilt SPIRV and building intrinsics.
-set(INTRBUILD "${CMAKE_CURRENT_BINARY_DIR}/intrbuild")
-add_subdirectory(${INTRSRC} ${INTRBUILD})
-# Make separate target for intrinstics headers.
-# Ideally, this should be inside intrinsics, but
-# this breaks in-tree build of intrinsics with LLVM.
-add_library(VCIntrinsicsHeaders INTERFACE)
-target_include_directories(VCIntrinsicsHeaders
- INTERFACE
- ${INTRSRC}/include
- ${INTRBUILD}/include
- )
-add_dependencies(VCIntrinsicsHeaders
- GenXIntrinsics
- )
-
+find_package(LLVMGenXIntrinsics REQUIRED)
include(cmake/spirv.cmake)
include(${IGC_SOURCE_DIR}/cmake/utils.cmake)
--
2.17.1

View File

@ -0,0 +1,45 @@
SUMMARY = "The Intel(R) Graphics Compiler for OpenCL(TM)"
DESCRIPTION = "The Intel(R) Graphics Compiler for OpenCL(TM) is an \
llvm based compiler for OpenCL(TM) targeting Intel Gen graphics \
hardware architecture."
LICENSE = "MIT & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://IGC/BiFModule/Implementation/ExternalLibraries/libclc/LICENSE.TXT;md5=311cfc1a5b54bab8ed34a0b5fba4373e \
file://IGC/Compiler/LegalizationPass.cpp;beginline=1;endline=23;md5=8b19c5999abc484f18232b0905367f9f \
file://NOTICES.txt;md5=b12e73994de4fbe0f688cf0bc91512a0"
SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https; \
file://0001-skip-execution-of-ElfPackager.patch \
file://link-to-LLVMGenXIntrinsics.patch \
file://improve_src_package_reproducibility.patch \
file://0001-Fix-build-with-LLVM-12.patch \
file://0002-Review-fixes-for-LLVM-12-phase-1.patch \
file://0003-Review-fixes-for-LLVM-12-phase-2.patch \
"
SRCREV = "535aaaef03ce338e05e6162118082e6e007e8c10"
# Used to replace with relative path in reproducibility patch
export B
S = "${WORKDIR}/git"
inherit cmake
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST_libc-musl = "null"
DEPENDS += " flex-native bison-native clang opencl-clang vc-intrinsics"
DEPENDS_append_class-target = " clang-cross-x86_64"
RDEPENDS_${PN} += "opencl-clang"
EXTRA_OECMAKE = "-DIGC_OPTION__LLVM_PREFERRED_VERSION=${LLVMVERSION} -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 -DIGC_BUILD__VC_ENABLED=OFF -DIGC_BUILD__USE_KHRONOS_SPIRV_TRANSLATOR=ON"
BBCLASSEXTEND = "native nativesdk"
UPSTREAM_CHECK_GITTAGREGEX = "^igc-(?P<pver>(?!19\..*)\d+(\.\d+)+)$"
FILES_${PN} += " \
${libdir}/igc/NOTICES.txt \
"

View File

@ -1,78 +0,0 @@
SUMMARY = "The Intel(R) Graphics Compiler for OpenCL(TM)"
DESCRIPTION = "The Intel(R) Graphics Compiler for OpenCL(TM) is an \
llvm based compiler for OpenCL(TM) targeting Intel Gen graphics \
hardware architecture."
LICENSE = "MIT & Apache-2.0"
LIC_FILES_CHKSUM = "file://IGC/BiFModule/Implementation/ExternalLibraries/libclc/LICENSE.TXT;md5=311cfc1a5b54bab8ed34a0b5fba4373e \
file://LICENSE.md;md5=488d74376edf2765f6e78d271543dde3 \
file://NOTICES.txt;md5=b81a52411c84df3419f20bad4d755880"
SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https;name=igc;branch=releases/2.10.x \
git://github.com/intel/vc-intrinsics.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/vc-intrinsics;name=vc;nobranch=1 \
git://github.com/KhronosGroup/SPIRV-Tools.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/SPIRV-Tools;name=spirv-tools;branch=main \
git://github.com/KhronosGroup/SPIRV-Headers.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/SPIRV-Headers;name=spirv-headers;branch=main \
file://0003-Improve-Reproducibility-for-src-package.patch \
file://0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch \
file://0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch \
file://0001-Build-not-able-to-locate-BiFManager-bin.patch \
"
SRC_URI:append:class-native = " file://0001-fix-tblgen.patch"
SRCREV_igc = "83925314d4fc32b017fcbfcd73e0667ba833fb8f"
SRCREV_vc = "9d255266e1df8f1dc5d11e1fbb03213acfaa4fc7"
SRCREV_spirv-tools = "f289d047f49fb60488301ec62bafab85573668cc"
SRCREV_spirv-headers = "0e710677989b4326ac974fd80c5308191ed80965"
SRCREV_FORMAT = "igc_vc_spirv-tools_spirv-headers"
# Used to replace with relative path in reproducibility patch
export B
inherit cmake pkgconfig qemu python3native
CXXFLAGS:append = " -Wno-error=nonnull"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = "null"
DEPENDS += " flex-native bison-native clang clang-cross-x86_64 opencl-clang qemu-native python3-mako-native \
python3-pyyaml-native \
"
RDEPENDS:${PN} += "opencl-clang"
PACKAGECONFIG ??= "vc"
PACKAGECONFIG[vc] = "-DIGC_BUILD__VC_ENABLED=ON -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR=ON -DIGC_OPTION__SPIRV_TRANSLATOR_MODE=Prebuilds,-DIGC_BUILD__VC_ENABLED=OFF,"
EXTRA_OECMAKE = " \
-DIGC_OPTION__LLVM_PREFERRED_VERSION=${LLVMVERSION} \
-DVC_INTRINSICS_SRC="${S}/vc-intrinsics" \
-DIGC_OPTION__LLVM_MODE=Prebuilds \
-DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
-DLLVM_LINK_EXE=${STAGING_BINDIR_NATIVE}/llvm-link \
-DCLANG_EXE=${STAGING_BINDIR_NATIVE}/clang \
-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
"
do_configure:prepend:class-target () {
# Write out a qemu wrapper that will be used by cmake.
qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
cat > ${WORKDIR}/qemuwrapper << EOF
#!/bin/sh
$qemu_binary "\$@"
EOF
chmod +x ${WORKDIR}/qemuwrapper
}
UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
FILES:${PN} += " \
${libdir}/igc2/NOTICES.txt \
"
# libigc.so contains buildpaths
INSANE_SKIP:${PN} += "buildpaths"

View File

@ -0,0 +1,35 @@
From 7fc05c52dd91902fa324a7aac9b90715cfca4717 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Wed, 15 Apr 2020 17:55:32 +0800
Subject: [PATCH] Building in-tree with LLVM 10.0 with the LLVM_LINK_LLVM_DYLIB
Failed to link with the LLVMSPIRVLib library.
Add an explicit dependency to force the correct build order and linking.
Reference:
https://github.com/KhronosGroup/SPIRV-LLVM-Translator/commit/a6d4ccf082858e63e139ca06c02a071c343d2657
Upstream-Status: Submitted [https://github.com/intel/opencl-clang/pull/118]
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 51c140d..b8b514e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -208,7 +208,7 @@ link_directories(
set(OPENCL_CLANG_LINK_LIBS ${CMAKE_DL_LIBS})
-if(NOT LLVMSPIRVLib IN_LIST LLVM_AVAILABLE_LIBS)
+if(NOT LLVMSPIRVLib IN_LIST LLVM_AVAILABLE_LIBS OR (USE_PREBUILT_LLVM AND LLVM_LINK_LLVM_DYLIB))
# SPIRV-LLVM-Translator is not included into LLVM as a component.
# So, we need to list it here explicitly as an external library
list(APPEND OPENCL_CLANG_LINK_LIBS LLVMSPIRVLib)
--
2.17.1

View File

@ -1,49 +0,0 @@
From 5aea653e611b59c70e529a1bd71885a509831557 Mon Sep 17 00:00:00 2001
From: Anuj Mittal <anuj.mittal@intel.com>
Date: Tue, 1 Aug 2023 11:15:31 +0800
Subject: [PATCH] cl_headers/CMakeLists.txt: use clang from native sysroot
Allow clang to be found in target sysroot for target builds and dont try
to compile cross binaries, we do that ourselves.
Upstream-Status: Inappropriate [oe-specific]
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
CMakeLists.txt | 8 ++++----
cl_headers/CMakeLists.txt | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5864009..60ba39e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,10 +35,10 @@ set(CMAKE_MODULE_PATH
include(CMakeFunctions)
-if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL)
- include(CrossCompile)
- llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release)
-endif()
+#if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL)
+# include(CrossCompile)
+# llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release)
+#endif()
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(USE_PREBUILT_LLVM ON)
diff --git a/cl_headers/CMakeLists.txt b/cl_headers/CMakeLists.txt
index 16cabb7..4423536 100644
--- a/cl_headers/CMakeLists.txt
+++ b/cl_headers/CMakeLists.txt
@@ -1,6 +1,6 @@
set(CL_HEADERS_LIB cl_headers)
if(USE_PREBUILT_LLVM)
- find_program(CLANG_COMMAND clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
+ find_program(CLANG_COMMAND clang PATHS ${LLVM_TOOLS_BINARY_DIR})
else()
set(CLANG_COMMAND $<TARGET_FILE:clang>)
endif()
--
2.37.3

View File

@ -0,0 +1,32 @@
From f3ef79a6301bab0b3a447f07ceb94c39a95009df Mon Sep 17 00:00:00 2001
From: Anuj Mittal <anuj.mittal@intel.com>
Date: Thu, 2 Apr 2020 08:59:20 +0800
Subject: [PATCH] don't redefine LLVM_TABLEGEN_EXE
Use the value that has been passed by the user.
Upstream-Status: Submitted
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
CMakeLists.txt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6893e97..941b0ae 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -137,7 +137,10 @@ endif(NOT USE_PREBUILT_LLVM)
set (COMPILE_OPTIONS_TD opencl_clang_options.td)
set (COMPILE_OPTIONS_INC opencl_clang_options.inc)
-set(LLVM_TABLEGEN_EXE "llvm-tblgen")
+if(NOT DEFINED LLVM_TABLEGEN_EXE)
+ set(LLVM_TABLEGEN_EXE "llvm-tblgen")
+endif()
+
set(LLVM_TARGET_DEFINITIONS ${COMPILE_OPTIONS_TD})
if(USE_PREBUILT_LLVM)
set(TABLEGEN_ADDITIONAL -I ${LLVM_INCLUDE_DIRS})
--
2.25.1

View File

@ -1,60 +0,0 @@
From 43c806ef321b1f677a49d28c89fb7ffecf539c2d Mon Sep 17 00:00:00 2001
From: Tim Creech <timothy.m.creech@intel.com>
Date: Wed, 28 Jun 2023 03:45:51 -0400
Subject: [PATCH 2/2] Request native clang only when cross-compiling (#464)
* Request native clang only when cross-compiling
LLVM_USE_HOST_TOOLS may be set if LLVM is configured with
LLVM_OPTIMIZED_TABLEGEN, which does not necessarily indicate
cross-compilation or that clang will only execute on the target.
By checking that CMAKE_CROSSCOMPILING is set, we ensure that we only
build/use clang again if necessary for host execution.
* fixup: CMAKE_CROSSCOMPILING implies LLVM_USE_HOST_TOOLS
Co-authored-by: Wenju He <wenju.he@intel.com>
* fixup: also use CMAKE_CROSSCOMPILING in top-level CMakeLists.txt
---------
Co-authored-by: Wenju He <wenju.he@intel.com>
Upstream-Status: Backport [https://github.com/intel/opencl-clang/commit/53843eee13cfb2357919ee02714a43bef1af0f86]
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
CMakeLists.txt | 2 +-
cl_headers/CMakeLists.txt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e772de9..5864009 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,7 +35,7 @@ set(CMAKE_MODULE_PATH
include(CMakeFunctions)
-if(LLVM_USE_HOST_TOOLS AND OPENCL_CLANG_BUILD_EXTERNAL)
+if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL)
include(CrossCompile)
llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release)
endif()
diff --git a/cl_headers/CMakeLists.txt b/cl_headers/CMakeLists.txt
index 18296c2..16cabb7 100644
--- a/cl_headers/CMakeLists.txt
+++ b/cl_headers/CMakeLists.txt
@@ -4,7 +4,7 @@ if(USE_PREBUILT_LLVM)
else()
set(CLANG_COMMAND $<TARGET_FILE:clang>)
endif()
-if(LLVM_USE_HOST_TOOLS AND NOT OPENCL_CLANG_BUILD_EXTERNAL)
+if(CMAKE_CROSSCOMPILING AND NOT OPENCL_CLANG_BUILD_EXTERNAL)
build_native_tool(clang CLANG_COMMAND)
endif()
--
2.37.3

View File

@ -0,0 +1,42 @@
From b29e00e6fe428a031cf577dfb703cf13eff837f6 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Wed, 15 Apr 2020 18:05:14 +0800
Subject: [PATCH 2/2] make sure only static libraries linked for native build
LINK_COMPONENTS=all isn't working for static libs for out of tree builds. Use
LLVM_AVAILABLE_LIBS instead. Reported:
https://github.com/intel/opencl-clang/issues/114
Upstream-Status: Pending
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
CMakeLists.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8707487..ad2dbda 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -218,7 +218,7 @@ add_subdirectory(cl_headers)
set(LLVM_REQUIRES_EH ON)
-if(USE_PREBUILT_LLVM OR CLANG_LINK_CLANG_DYLIB)
+if(false)
list(APPEND OPENCL_CLANG_LINK_LIBS clang-cpp)
else()
list(APPEND OPENCL_CLANG_LINK_LIBS
@@ -266,6 +266,7 @@ add_llvm_library(${TARGET_NAME} SHARED
all
LINK_LIBS
${OPENCL_CLANG_LINK_LIBS}
+ ${LLVM_AVAILABLE_LIBS}
)
# Configure resource file on Windows
--
2.17.1

View File

@ -1,34 +0,0 @@
SUMMARY = "Common clang is a thin wrapper library around clang"
DESCRIPTION = "Common clang has OpenCL-oriented API and is capable \
to compile OpenCL C kernels to SPIR-V modules."
LICENSE = "NCSA"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c"
SRC_URI = "git://github.com/intel/opencl-clang.git;branch=${BRANCH};protocol=https \
file://0002-Request-native-clang-only-when-cross-compiling-464.patch \
file://0001-cl_headers-CMakeLists.txt-use-clang-from-native-sysr.patch \
"
inherit cmake
DEPENDS += "clang"
DEPENDS:append:class-target = " opencl-clang-native"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = "null"
DEPENDS += " spirv-llvm-translator"
EXTRA_OECMAKE += "\
-DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
-DCMAKE_SKIP_RPATH=TRUE \
-DPREFERRED_LLVM_VERSION=${LLVMVERSION} \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
"
do_install:append:class-native() {
install -d ${D}${bindir}
install -m 0755 ${B}/bin/linux_resource_linker ${D}${bindir}/
}
BBCLASSEXTEND = "native nativesdk"

View File

@ -0,0 +1,35 @@
SUMMARY = "Common clang is a thin wrapper library around clang"
DESCRIPTION = "Common clang has OpenCL-oriented API and is capable \
to compile OpenCL C kernels to SPIR-V modules."
LICENSE = "NCSA"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c"
SRC_URI = "git://github.com/intel/opencl-clang.git;branch=ocl-open-100;protocol=https \
file://0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch \
file://0001-Building-in-tree-with-LLVM-10.0-with-the-LLVM_LINK_L.patch \
"
SRC_URI_append_class-native = " file://0002-make-sure-only-static-libraries-linked-for-native-bu.patch"
SRCREV = "c8cd72e32b6abc18ce6da71c357ea45ba78b52f0"
S = "${WORKDIR}/git"
inherit cmake
DEPENDS += "clang"
DEPENDS_append_class-target = " opencl-clang-native"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST_libc-musl = "null"
EXTRA_OECMAKE += "\
-DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
-DCMAKE_SKIP_RPATH=TRUE \
"
do_install_append_class-native() {
install -d ${D}${bindir}
install -m 0755 ${B}/linux_linker/linux_resource_linker ${D}${bindir}/
}
BBCLASSEXTEND = "native nativesdk"

View File

@ -0,0 +1,35 @@
SUMMARY = "Common clang is a thin wrapper library around clang"
DESCRIPTION = "Common clang has OpenCL-oriented API and is capable \
to compile OpenCL C kernels to SPIR-V modules."
LICENSE = "NCSA"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c"
SRC_URI = "git://github.com/intel/opencl-clang.git;branch=ocl-open-110;protocol=https \
file://0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch \
"
SRC_URI_append_class-native = " file://0002-make-sure-only-static-libraries-linked-for-native-bu.patch"
SRCREV = "c67648d41df00ea8ee9d701d17299b86f86f0321"
S = "${WORKDIR}/git"
inherit cmake
DEPENDS += "clang"
DEPENDS_append_class-target = " opencl-clang-native"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST_libc-musl = "null"
EXTRA_OECMAKE += "\
-DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
-DCMAKE_SKIP_RPATH=TRUE \
-DPREFERRED_LLVM_VERSION="11.1.0" \
"
do_install_append_class-native() {
install -d ${D}${bindir}
install -m 0755 ${B}/linux_linker/linux_resource_linker ${D}${bindir}/
}
BBCLASSEXTEND = "native nativesdk"

View File

@ -0,0 +1,34 @@
SUMMARY = "Common clang is a thin wrapper library around clang"
DESCRIPTION = "Common clang has OpenCL-oriented API and is capable \
to compile OpenCL C kernels to SPIR-V modules."
LICENSE = "NCSA"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c"
SRC_URI = "git://github.com/intel/opencl-clang.git;branch=ocl-open-120;protocol=https \
file://0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch \
"
SRCREV = "cea544b04460a47848e585bfe75cd774c0324b45"
S = "${WORKDIR}/git"
inherit cmake
DEPENDS += " clang spirv-llvm-translator"
DEPENDS_append_class-target = " opencl-clang-native"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST_libc-musl = "null"
EXTRA_OECMAKE += "\
-DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
-DCMAKE_SKIP_RPATH=TRUE \
-DPREFERRED_LLVM_VERSION="12.0.0" \
"
do_install_append_class-native() {
install -d ${D}${bindir}
install -m 0755 ${B}/linux_linker/linux_resource_linker ${D}${bindir}/
}
BBCLASSEXTEND = "native nativesdk"

View File

@ -1,5 +0,0 @@
require opencl-clang.inc
SRCREV = "60fd799cc58755c16d951f9ebfde6d0f9b8554dd"
BRANCH = "ocl-open-150"

View File

@ -0,0 +1,24 @@
SUMMARY = "VC Intrinsics"
DESCRIPTION = "VC Intrinsics project contains a set of new intrinsics on \
top of core LLVM IR instructions that represent SIMD semantics of a program \
targeting GPU"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://License.md;md5=c18ea6bb4786a26bf4eee88a7424a408"
SRC_URI = "git://github.com/intel/vc-intrinsics.git;protocol=https; \
"
SRCREV = "77974f5a32e19475125531483bede9ee23935257"
S = "${WORKDIR}/git"
inherit cmake
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST_libc-musl = "null"
DEPENDS += " clang"
EXTRA_OECMAKE = "-DLLVM_DIR=${STAGING_LIBDIR}"
BBCLASSEXTEND = "native nativesdk"

View File

@ -0,0 +1,33 @@
SUMMARY = "OpenVINO Model Optimzer"
DESCRIPTION = "Model Optimizer is a cross-platform command-line tool that \
facilitates the transition between the training and deployment \
environment, performs static model analysis, and adjusts deep \
learning models for optimal execution on end-point target devices."
HOMEPAGE = "https://01.org/openvinotoolkit"
SRC_URI = "git://github.com/openvinotoolkit/openvino.git;protocol=https;branch=releases/2021/3;lfs=0 \
"
SRCREV = "18e83a217702c650280c6abfc43f3285a3aadb61"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
CVE_PRODUCT = "intel:openvino"
S = "${WORKDIR}/git"
do_install() {
mkdir -p ${D}${datadir}/openvino/model-optimizer
cp -r model-optimizer ${D}${datadir}/openvino/
}
RDEPENDS_${PN} += " \
python3-numpy \
python3-protobuf \
python3-defusedxml \
python3-networkx \
python3-test-generator \
bash \
"
FILES_${PN} += "${datadir}/openvino"

View File

@ -1,32 +0,0 @@
From 439af27f7641185933d7810b6c4eb17086438df3 Mon Sep 17 00:00:00 2001
From: Yogesh Tyagi <yogesh.tyagi@intel.com>
Date: Mon, 19 May 2025 17:50:40 +0530
Subject: [PATCH] LMS : fix build issue with gcc 15
include cstdint header to resolve the below error with gcc 15
| In file included from /lms/2406.0.0.0/git/MEIClient/src/MEICommand.cpp:11:
| /lms/2406.0.0.0/git/MEIClient/Include/MEICommand.h:40:54: error: 'uint8_t' was not declared in this scope
Upstream-Status: Submitted [https://github.com/intel/lms/pull/23]
Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
---
MEIClient/Include/MEICommand.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/MEIClient/Include/MEICommand.h b/MEIClient/Include/MEICommand.h
index 6192d26..5332e44 100644
--- a/MEIClient/Include/MEICommand.h
+++ b/MEIClient/Include/MEICommand.h
@@ -12,6 +12,7 @@
#define __MEI_COMMAND_H__
#include "heci.h"
#include "MEIClientException.h"
+#include <cstdint>
#include <memory>
#include <vector>
--
2.43.0

View File

@ -1,39 +0,0 @@
From e1f6129390706044112496b6f10baee5b604b4c8 Mon Sep 17 00:00:00 2001
From: Yogesh Tyagi <yogesh.tyagi@intel.com>
Date: Wed, 23 Jul 2025 23:48:41 +0800
Subject: [PATCH] cmake: Bump required CMake version to 3.5 to allow builds
with CMake 4+
This enables builds with CMake 4+, fixing:
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 3.5 has been removed from CMake.
Update the VERSION argument <min> value. Or, use the <min>...<max> syntax
to tell CMake that the project requires at least <min> but has been
updated to work with policies introduced by <max> or earlier.
Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.
Upstream-Status: Inappropriate
Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
---
CIM_Framework/openwsman/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CIM_Framework/openwsman/CMakeLists.txt b/CIM_Framework/openwsman/CMakeLists.txt
index 6e54c66..e2ffa5f 100644
--- a/CIM_Framework/openwsman/CMakeLists.txt
+++ b/CIM_Framework/openwsman/CMakeLists.txt
@@ -6,7 +6,7 @@ PROJECT(openwsman)
# 2.6 minimum because of CMP0005 (escaping defines)
# 2.8.12 minimum because CMake 3.19.7 says so
-cmake_minimum_required(VERSION 2.8.12)
+cmake_minimum_required(VERSION 3.5)
include(CTest)
enable_testing()
--
2.37.3

View File

@ -0,0 +1,41 @@
SUMMARY = "Intel(R) Local Managability Service"
DESCRIPTION = "Intel Local Manageability Service allows applications \
to access the Intel Active Management Technology (AMT) firmware via \
the Intel Management Engine Interface (MEI)."
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=2ee41112a44fe7014dce33e26468ba93"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
COMPATIBLE_HOST_libc-musl = "null"
inherit cmake systemd features_check
DEPENDS = "metee ace xerces-c libnl libxml2 glib-2.0 glib-2.0-native"
EXTRA_OECMAKE += "-DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3"
# Enable either connman or networkmanager or none but not both.
PACKAGECONFIG ??= "connman"
PACKAGECONFIG[connman] = "-DNETWORK_CN=ON, -DNETWORK_CN=OFF, connman"
PACKAGECONFIG[networkmanager] = "-DNETWORK_NM=ON, -DNETWORK_NM=OFF, networkmanager"
REQUIRED_DISTRO_FEATURES= "systemd"
FILES_${PN} += "${datadir}/dbus-1/system-services/*.service"
S = "${WORKDIR}/git"
SYSTEMD_SERVICE_${PN} = "lms.service"
SRC_URI = "git://github.com/intel/lms.git \
"
SRCREV = "e0ebda9d1e7884b51293b71c1bcda511a7942e1a"
do_install_append() {
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${B}/UNS/lms.service ${D}${systemd_system_unitdir}
}
RDEPENDS_${PN} += "ace"

View File

@ -1,48 +0,0 @@
SUMMARY = "Intel(R) Local Managability Service"
DESCRIPTION = "Intel Local Manageability Service allows applications \
to access the Intel Active Management Technology (AMT) firmware via \
the Intel Management Engine Interface (MEI)."
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=2ee41112a44fe7014dce33e26468ba93"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = "null"
inherit cmake systemd features_check python3native
DEPENDS = "metee ace xerces-c libnl libxml2 glib-2.0 glib-2.0-native pkgconfig-native python3-packaging-native"
# Enable either connman or networkmanager or none but not both.
PACKAGECONFIG ??= "connman"
PACKAGECONFIG[connman] = "-DNETWORK_CN=ON, -DNETWORK_CN=OFF, connman"
PACKAGECONFIG[networkmanager] = "-DNETWORK_NM=ON, -DNETWORK_NM=OFF, networkmanager"
REQUIRED_DISTRO_FEATURES = "systemd"
EXTRA_OECMAKE += " \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
"
FILES:${PN} += "${datadir}/dbus-1/system-services/*.service"
SYSTEMD_SERVICE:${PN} = "lms.service"
SRC_URI = "git://github.com/intel/lms.git;branch=master;protocol=https \
file://0001-LMS-fix-build-issue-with-gcc-15.patch \
file://0001-cmake-Bump-required-CMake-version-to-3.5-to-allow-bu.patch \
"
SRCREV = "388f115b2aeb3ea11499971c65f828daefd32c47"
do_install:append() {
install -d ${D}${sysconfdir}/lms
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${B}/UNS/lms.service ${D}${systemd_system_unitdir}
install -d ${D}${sysconfdir}/udev/rules.d
install -m 0644 ${S}/UNS/linux_scripts/70-mei-wdt.rules ${D}${sysconfdir}/udev/rules.d/70-mei-wdt.rules
}
RDEPENDS:${PN} += "ace"
CVE_STATUS[CVE-2018-1000535] = "cpe-incorrect: This CVE is for a different LMS - Lan Management System."

View File

@ -7,21 +7,20 @@ compensation using available cooling methods."
HOMEPAGE = "https://github.com/01org/thermal_daemon"
DEPENDS = "dbus dbus-glib dbus-glib-native libxml2 glib-2.0 glib-2.0-native upower libevdev"
DEPENDS += "autoconf-archive-native"
LICENSE = "GPL-2.0-only"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=ea8831610e926e2e469075b52bf08848"
SRC_URI = "git://github.com/intel/thermal_daemon/;branch=master;protocol=https \
SRC_URI = "git://github.com/intel/thermal_daemon/ \
"
SRCREV = "df3b9ab0ffe780c4fbad7750987eff76f659cfd5"
SRCREV = "d6f89c9e8afdb449a442646da46f3140634175c1"
S = "${WORKDIR}/git"
inherit pkgconfig autotools systemd gtk-doc
# gtkdocsize runs before autotools do_configure and it copies gtk-doc.m4 and fails
# to copy becuase there is no m4 dir yet.
do_configure:prepend () {
do_configure_prepend () {
mkdir -p ${S}/m4
}
@ -29,13 +28,13 @@ EXTRA_OECONF = " \
--with-systemdsystemunitdir=${systemd_system_unitdir} \
"
FILES:${PN} += "${datadir}/dbus-1"
FILES_${PN} += "${datadir}/dbus-1/system-services/*.service"
SYSTEMD_SERVICE:${PN} = "thermald.service"
SYSTEMD_SERVICE_${PN} = "thermald.service"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
CONFFILES:${PN} = " \
CONFFILES_${PN} = " \
${sysconfdir}/thermald/thermal-conf.xml \
${sysconfdir}/thermald/thermal-cpu-cdev-order.xml \
"

View File

@ -1,53 +0,0 @@
From deccc0c69c2c8759c52885be8bdda54d3cee481c Mon Sep 17 00:00:00 2001
From: Yogesh Tyagi <yogesh.tyagi@intel.com>
Date: Sun, 11 Dec 2022 22:34:15 +0800
Subject: [PATCH] Add print function to print test run status in ptest format
Upstream-Status: Inappropriate [OE ptest specific]
Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
---
run_tests.py | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/run_tests.py b/run_tests.py
index 1cd796dd..e3ffd1ab 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -327,6 +327,9 @@ def run_test(testname, host, target):
else:
ispc_exe_rel = add_prefix(host.ispc_cmd, host, target)
+ # to reslove the error '.rodata' can not be used when making a PIE object
+ ispc_exe_rel = ispc_exe_rel + " --pic"
+
# is this a test to make sure an error is issued?
want_error = (filename.find("tests_errors") != -1)
if want_error == True:
@@ -795,6 +798,17 @@ def check_compiler_exists(compiler_exe):
return
error("missing the required compiler: %s \n" % compiler_exe, 1)
+def print_test_run_status(results):
+ for fstatus in results:
+ if (fstatus[1] == Status.Success):
+ print( "%s: %s" % ("PASS", fstatus[0]))
+ elif (fstatus[1] == Status.Compfail):
+ print( "%s: %s" % ("FAIL", fstatus[0]))
+ elif (fstatus[1] == Status.Runfail):
+ print( "%s: %s" % ("FAIL", fstatus[0]))
+ elif (fstatus[1] == Status.Skip):
+ print( "%s: %s" % ("SKIP", fstatus[0]))
+
def print_result(status, results, s, run_tests_log, csv):
title = StatusStr[status]
file_list = [fname for fname, fstatus in results if status == fstatus]
@@ -938,6 +952,8 @@ def run_tests(options1, args, print_version):
pass_rate = -1
print_debug("PASSRATE (%d/%d) = %d%% \n\n" % (len(run_succeed_files), total_tests_executed, pass_rate), s, run_tests_log)
+ print_test_run_status(results)
+
for status in Status:
print_result(status, results, s, run_tests_log, options.csv)
fails = [status != Status.Compfail and status != Status.Runfail for _, status in results]

View File

@ -1,36 +0,0 @@
From 7beff95c11071170eb27b6fa7d0cc77588caee8e Mon Sep 17 00:00:00 2001
From: Yogesh Tyagi <yogesh.tyagi@intel.com>
Date: Tue, 26 Jul 2022 15:25:10 +0800
Subject: [PATCH] Fix QA Issues
Stop ispc from inserting host file path in generated headers which leads to reproducibility problems.
Upstream-Status: Inappropriate [OE build specific]
Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
---
src/module.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/module.cpp b/src/module.cpp
index e2084d2e..e2626865 100644
--- a/src/module.cpp
+++ b/src/module.cpp
@@ -2555,7 +2555,7 @@ bool Module::writeHeader(const char *fn) {
perror("fopen");
return false;
}
- fprintf(f, "//\n// %s\n// (Header automatically generated by the ispc compiler.)\n", fn);
+ fprintf(f, "//\n// \n// (Header automatically generated by the ispc compiler.)\n");
fprintf(f, "// DO NOT EDIT THIS FILE.\n//\n\n");
// Create a nice guard string from the filename, turning any
@@ -2677,7 +2677,7 @@ bool Module::writeDispatchHeader(DispatchHeaderInfo *DHI) {
FILE *f = DHI->file;
if (DHI->EmitFrontMatter) {
- fprintf(f, "//\n// %s\n// (Header automatically generated by the ispc compiler.)\n", DHI->fn);
+ fprintf(f, "//\n// \n// (Header automatically generated by the ispc compiler.)\n");
fprintf(f, "// DO NOT EDIT THIS FILE.\n//\n\n");
}
// Create a nice guard string from the filename, turning any

View File

@ -1,52 +0,0 @@
From 16a2c22339287122d2c25d8bb33a5a51b4e6ee51 Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Thu, 24 Feb 2022 20:01:11 +0530
Subject: [PATCH] cmake: don't build for 32-bit targets
Error log:
| tmp/work/corei7-64-poky-linux/ispc/1.16.0-r0/recipe-sysroot/usr/include/bits/long-double.h:23:10: fatal error: 'bits/long-double-32.h' file not found
| #include <bits/long-double-32.h>
| ^~~~~~~~~~~~~~~~~~~~~~~
| 1 error generated.
Remove SYSTEM include search path and set -isysroot dir path
for root dir for cross compilation.
Upstream-Status: Inappropriate
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
cmake/GenerateBuiltins.cmake | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/cmake/GenerateBuiltins.cmake b/cmake/GenerateBuiltins.cmake
index f84494ed..d90cb1ec 100644
--- a/cmake/GenerateBuiltins.cmake
+++ b/cmake/GenerateBuiltins.cmake
@@ -253,7 +253,7 @@ function(builtin_to_cpp bit os_name arch supported_archs supported_oses resultFi
# In this case headers will be installed in /usr/arm-linux-gnueabihf/include and will not be picked up
# by clang by default. So the following line adds such path explicitly. If this path doesn't exist and
# the headers can be found in other locations, this should not be a problem.
- set(includePath -isystem/usr/${debian_triple}/include)
+ set(includePath -isysroot${SYSROOT_DIR})
endif()
endif()
@@ -339,7 +339,7 @@ function (generate_target_builtins resultList)
set(regular_targets ${ARGN})
list(FILTER regular_targets EXCLUDE REGEX wasm)
foreach (ispc_target ${regular_targets})
- foreach (bit 32 64)
+ foreach (bit 64)
foreach (os_name ${TARGET_OS_LIST_FOR_LL})
target_ll_to_cpp(target-${ispc_target} ${bit} ${os_name} output${os_name}${bit})
list(APPEND tmpList ${output${os_name}${bit}})
@@ -405,7 +405,7 @@ function (generate_common_builtins resultList)
endif()
message (STATUS "ISPC will be built with support of ${supported_oses} for ${supported_archs}")
- foreach (bit 32 64)
+ foreach (bit 64)
foreach (os_name "windows" "linux" "freebsd" "macos" "android" "ios" "ps4" "web")
foreach (arch "x86" "arm" "wasm")
builtin_to_cpp(${bit} ${os_name} ${arch} "${supported_archs}" "${supported_oses}" res${bit}${os_name}${arch})

View File

@ -1,2 +0,0 @@
#!/bin/sh
python3 run_tests.py

View File

@ -1,62 +0,0 @@
SUMMARY = "Intel(R) Implicit SPMD Program Compiler"
DESCRIPTION = "ispc is a compiler for a variant of the C programming language, \
with extensions for single program, multiple data programming."
HOMEPAGE = "https://github.com/ispc/ispc"
LICENSE = "BSD-3-Clause & Apache-2.0-with-LLVM-exception"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=da5ecffdd210b3cf776b32b41c182e87 \
file://third-party-programs.txt;md5=2061218c7be521556719c8b504bf9ddd"
inherit cmake python3native ptest
SRC_URI = "git://github.com/ispc/ispc.git;protocol=https;branch=main \
file://0002-cmake-don-t-build-for-32-bit-targets.patch \
file://0001-Fix-QA-Issues.patch \
file://0001-Add-print-function-to-print-test-run-status-in-ptest.patch \
file://run-ptest \
"
SRCREV = "d394222aef59e4759b06e39ec160e4aba6ee5f40"
COMPATIBLE_HOST = '(x86_64).*-linux'
DEPENDS += " clang-native bison-native flex-native"
DEPENDS:append:class-target = " clang"
RDEPENDS:${PN}-ptest += " python3-multiprocessing"
PACKAGECONFIG ??= "tbb"
PACKAGECONFIG[tbb] = "-DISPCRT_BUILD_TASK_MODEL=TBB, -DISPCRT_BUILD_TASK_MODEL=OpenMP, tbb"
YFLAGS = '-d -t -v -y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}'
do_configure:prepend() {
sed -i -e 's#\${BISON_EXECUTABLE}.*#\${BISON_EXECUTABLE} ${YFLAGS} #g' ${S}/CMakeLists.txt
sed -i -e 's#\${FLEX_EXECUTABLE}.*#\${FLEX_EXECUTABLE} \-L #g' ${S}/CMakeLists.txt
}
do_install_ptest() {
cp -rf ${S}/run_tests.py ${D}${PTEST_PATH}
cp -rf ${S}/common.py ${D}${PTEST_PATH}
cp -rf ${S}/tests ${D}${PTEST_PATH}
cp -rf ${S}/test_static.isph ${D}${PTEST_PATH}
cp -rf ${S}/fail_db.txt ${D}${PTEST_PATH}
cp -rf ${S}/test_static.cpp ${D}${PTEST_PATH}
}
EXTRA_OECMAKE += " \
-DISPC_INCLUDE_TESTS=OFF \
-DISPC_INCLUDE_EXAMPLES=OFF \
-DARM_ENABLED=OFF \
-DISPC_CROSS=ON \
-DISPC_ANDROID_TARGET=OFF \
-DISPC_FREEBSD_TARGET=OFF \
-DISPC_WINDOWS_TARGET=OFF \
-DISPC_IOS_TARGET=OFF \
-DISPC_PS_TARGET=OFF \
-DSYSROOT_DIR=${STAGING_DIR} \
-DCLANG_EXECUTABLE=${STAGING_BINDIR_NATIVE}/clang \
-DCLANGPP_EXECUTABLE=${STAGING_BINDIR_NATIVE}/clang++ \
-DLLVM_AS_EXECUTABLE=${STAGING_BINDIR_NATIVE}/llvm-as \
"
BBCLASSEXTEND = "native nativesdk"

View File

@ -1,10 +1,11 @@
SUMMARY = "oneAPI Level Zero Specification Headers and Loader"
HOMEPAGE = "https://github.com/oneapi-src/level-zero"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=97957beb2f7808ffa247e5d93e6442cc"
LIC_FILES_CHKSUM = "file://LICENSE;md5=8956dfdba7f8169c4005d1e9753ffddc"
SRC_URI = "git://github.com/oneapi-src/level-zero.git;protocol=https;branch=master"
SRCREV = "9536683855b17a21508e5b54ba358225d6a976da"
SRC_URI = "git://github.com/oneapi-src/level-zero.git;protocol=https"
SRCREV = "0d30b1fa712253c68bfdfa3863d380df4301b8a4"
S = "${WORKDIR}/git"
inherit cmake
DEPENDS += "opencl-headers"
@ -13,7 +14,7 @@ UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$"
PACKAGES =+ "${PN}-headers ${PN}-samples ${PN}-loader"
do_install:append () {
do_install_append () {
install -d ${D}${bindir} ${D}${libdir}
install -m 755 ${B}/bin/zello* ${D}${bindir}
@ -21,12 +22,10 @@ do_install:append () {
}
FILES:${PN}-headers = "${includedir}"
FILES:${PN}-samples = "${bindir} ${libdir}/libze_null* ${libdir}/libze_validation*"
FILES:${PN}-loader = "${libdir}"
FILES_${PN}-headers = "${includedir}"
FILES_${PN}-samples = "${bindir} ${libdir}/libze_null* ${libdir}/libze_validation*"
FILES_${PN}-loader = "${libdir}"
# PN-loader (non -dev/-dbg/nativesdk- package) contains symlink .so
INSANE_SKIP:${PN}-loader = "dev-so"
INSANE_SKIP:${PN}-samples = "dev-so"
ALLOW_EMPTY:${PN} = "1"
BBCLASSEXTEND = "native nativesdk"
INSANE_SKIP_${PN}-loader = "dev-so"
INSANE_SKIP_${PN}-samples = "dev-so"

View File

@ -1,99 +0,0 @@
From b57297c14d94dac9bdef7570b7b33d70b10171f3 Mon Sep 17 00:00:00 2001
From: Jozef Wludzik <jozef.wludzik@intel.com>
Date: Tue, 26 Mar 2024 14:43:29 +0100
Subject: [PATCH 1/2] Fix the compilation warning when using gcc-13 (#25)
Added missing headers. Fixed compilation error about casting from
unsigned to signed int.
Upstream-Status: Backport [https://github.com/intel/linux-npu-driver/commit/4bcbf2abe94eb4d9c083bd616b58e309a82d008a]
Signed-off-by: Jozef Wludzik <jozef.wludzik@intel.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
umd/level_zero_driver/ext/source/graph/vcl_symbols.hpp | 7 ++++---
umd/vpu_driver/include/umd_common.hpp | 1 +
validation/umd-test/umd_prime_buffers.h | 9 +++++++--
validation/umd-test/utilities/data_handle.h | 1 +
4 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/umd/level_zero_driver/ext/source/graph/vcl_symbols.hpp b/umd/level_zero_driver/ext/source/graph/vcl_symbols.hpp
index f206ebe..682e5b4 100644
--- a/umd/level_zero_driver/ext/source/graph/vcl_symbols.hpp
+++ b/umd/level_zero_driver/ext/source/graph/vcl_symbols.hpp
@@ -5,12 +5,13 @@
*
*/
-#include <dlfcn.h>
-#include <memory>
-
#include "vpux_driver_compiler.h"
#include "vpu_driver/source/utilities/log.hpp"
+#include <array>
+#include <dlfcn.h>
+#include <memory>
+
class Vcl {
public:
static Vcl &sym() {
diff --git a/umd/vpu_driver/include/umd_common.hpp b/umd/vpu_driver/include/umd_common.hpp
index 0c874a3..5ad9be2 100644
--- a/umd/vpu_driver/include/umd_common.hpp
+++ b/umd/vpu_driver/include/umd_common.hpp
@@ -7,6 +7,7 @@
#pragma once
+#include <cstdint>
#include <limits>
#include <linux/kernel.h>
#include <stdexcept>
diff --git a/validation/umd-test/umd_prime_buffers.h b/validation/umd-test/umd_prime_buffers.h
index 6f7c7de..ab4814c 100644
--- a/validation/umd-test/umd_prime_buffers.h
+++ b/validation/umd-test/umd_prime_buffers.h
@@ -6,12 +6,17 @@
*/
#pragma once
+
+#include "umd_test.h"
+
#include <fcntl.h>
-#include <linux/kernel.h>
#include <linux/dma-buf.h>
#include <linux/dma-heap.h>
+#include <linux/kernel.h>
+#include <stdint.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
+#include <unistd.h>
#define ALLIGN_TO_PAGE(x) __ALIGN_KERNEL((x), (UmdTest::PAGE_SIZE))
@@ -60,7 +65,7 @@ class PrimeBufferHelper {
return false;
bufferFd = heapAlloc.fd;
- buffers.insert({heapAlloc.fd, {size, nullptr}});
+ buffers.insert({static_cast<int>(heapAlloc.fd), {size, nullptr}});
return true;
}
diff --git a/validation/umd-test/utilities/data_handle.h b/validation/umd-test/utilities/data_handle.h
index d6e0ec0..5d937b2 100644
--- a/validation/umd-test/utilities/data_handle.h
+++ b/validation/umd-test/utilities/data_handle.h
@@ -6,6 +6,7 @@
*/
#include <linux/kernel.h>
+#include <stdint.h>
#include <string>
#include <vector>
--
2.43.0

View File

@ -1,28 +0,0 @@
From 561e3b5edc0ec3d8835aaf8ef8e5c9e8f9b53061 Mon Sep 17 00:00:00 2001
From: Yogesh Tyagi <yogesh.tyagi@intel.com>
Date: Wed, 28 May 2025 13:35:18 +0800
Subject: [PATCH] linux-npu-driver : fix multilib install issue
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
---
firmware/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt
index 0c093ca..ba346a0 100644
--- a/firmware/CMakeLists.txt
+++ b/firmware/CMakeLists.txt
@@ -12,7 +12,7 @@ target_include_directories(${PROJECT_NAME} INTERFACE include)
file(GLOB FIRMWARE_BINARIES ${CMAKE_CURRENT_SOURCE_DIR}/bin/*.bin)
if (FIRMWARE_BINARIES)
install(FILES ${FIRMWARE_BINARIES}
- DESTINATION /lib/firmware/updates/intel/vpu/
+ DESTINATION ${CMAKE_INSTALL_FIRMWARE_DIR}/firmware/updates/intel/vpu/
PERMISSIONS OWNER_READ
COMPONENT fw-npu)
endif()
--
2.37.3

View File

@ -1,110 +0,0 @@
From a9f51fd88effb7d324609e692ca7da576d6dad2e Mon Sep 17 00:00:00 2001
From: Naveen Saini <naveen.kumar.saini@intel.com>
Date: Tue, 28 May 2024 10:23:42 +0800
Subject: [PATCH 2/2] Fix compilation failure with GCC-14
umd/level_zero_driver/core/source/event/event.cpp:65:31: error: 'remove_if' is not a member of 'std'; did you mean 'remove_cv'?
| 65 | associatedJobs.erase(std::remove_if(associatedJobs.begin(),
| | ^~~~~~~~~
| | remove_cv
| umd/vpu_driver/source/command/vpu_command.cpp: In member function 'void VPU::VPUCommand::appendAssociateBufferObject(VPU::VPUBufferObject*)':
| umd/vpu_driver/source/command/vpu_command.cpp:126:20: error: 'find' is not a member of 'std'; did you mean 'bind'?
| 126 | auto it = std::find(bufferObjects.begin(), bufferObjects.end(), bo);
| | ^~~~
| | bind
| umd/vpu_driver/source/command/vpu_command_buffer.cpp: In member function 'bool VPU::VPUCommandBuffer::addCommand(VPU::VPUCommand*, uint64_t&, uint64_t&)':
| umd/vpu_driver/source/command/vpu_command_buffer.cpp:185:24: error: 'find' is not a member of 'std'; did you mean 'bind'?
| 185 | auto it = std::find(bufferHandles.begin(), bufferHandles.end(), bo->getHandle());
| | ^~~~
| | bind
| umd/level_zero_driver/ext/source/graph/elf_parser.cpp:301:32: error: 'max_element' is not a member of 'std'; did you mean 'tuple_element'?
| 301 | std::max_element(stride_begin + TENSOR_5D_STRIDE_C, stride_end));
| | ^~~~~~~~~~~
| | tuple_element
| umd/level_zero_driver/ext/source/graph/elf_parser.cpp:315:37: error: 'max_element' is not a member of 'std'; did you mean 'tuple_element'?
| 315 | auto max_stride_val = *std::max_element(stride_begin + TENSOR_4D_STRIDE_C, stride_end);
| | ^~~~~~~~~~~
| umd/level_zero_driver/tools/source/metrics/metric.cpp: In member function 'void L0::MetricContext::deactivateMetricGroups(int)':
| umd/level_zero_driver/tools/source/metrics/metric.cpp:275:38: error: 'remove_if' is not a member of 'std'; did you mean 'remove_cv'?
| 275 | activatedMetricGroups.erase(std::remove_if(activatedMetricGroups.begin(),
| | ^~~~~~~~~
| | remove_cv
Upstream-Status: Submitted [https://github.com/intel/linux-npu-driver/pull/30]
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
umd/level_zero_driver/core/source/event/event.cpp | 1 +
umd/level_zero_driver/ext/source/graph/elf_parser.cpp | 1 +
umd/level_zero_driver/tools/source/metrics/metric.cpp | 1 +
umd/vpu_driver/source/command/vpu_command.cpp | 1 +
umd/vpu_driver/source/command/vpu_command_buffer.cpp | 1 +
5 files changed, 5 insertions(+)
diff --git a/umd/level_zero_driver/core/source/event/event.cpp b/umd/level_zero_driver/core/source/event/event.cpp
index a92248f..196d176 100644
--- a/umd/level_zero_driver/core/source/event/event.cpp
+++ b/umd/level_zero_driver/core/source/event/event.cpp
@@ -14,6 +14,7 @@
#include <level_zero/ze_api.h>
#include <thread>
+#include <algorithm>
namespace L0 {
diff --git a/umd/level_zero_driver/ext/source/graph/elf_parser.cpp b/umd/level_zero_driver/ext/source/graph/elf_parser.cpp
index a1c8e14..dfbd61d 100644
--- a/umd/level_zero_driver/ext/source/graph/elf_parser.cpp
+++ b/umd/level_zero_driver/ext/source/graph/elf_parser.cpp
@@ -21,6 +21,7 @@
#include <vpux_headers/metadata.hpp>
#include <vpux_elf/types/vpu_extensions.hpp>
#include <vpux_elf/utils/error.hpp>
+#include <algorithm>
namespace L0 {
diff --git a/umd/level_zero_driver/tools/source/metrics/metric.cpp b/umd/level_zero_driver/tools/source/metrics/metric.cpp
index b67750f..9497311 100644
--- a/umd/level_zero_driver/tools/source/metrics/metric.cpp
+++ b/umd/level_zero_driver/tools/source/metrics/metric.cpp
@@ -7,6 +7,7 @@
#include "level_zero_driver/tools/source/metrics/metric.hpp"
#include "vpu_driver/source/utilities/log.hpp"
+#include <algorithm>
namespace L0 {
diff --git a/umd/vpu_driver/source/command/vpu_command.cpp b/umd/vpu_driver/source/command/vpu_command.cpp
index f4ca23f..75331d9 100644
--- a/umd/vpu_driver/source/command/vpu_command.cpp
+++ b/umd/vpu_driver/source/command/vpu_command.cpp
@@ -14,6 +14,7 @@
#include <cstdint>
#include <vector>
#include <map>
+#include <algorithm>
namespace VPU {
diff --git a/umd/vpu_driver/source/command/vpu_command_buffer.cpp b/umd/vpu_driver/source/command/vpu_command_buffer.cpp
index c4ad052..bbb80ec 100644
--- a/umd/vpu_driver/source/command/vpu_command_buffer.cpp
+++ b/umd/vpu_driver/source/command/vpu_command_buffer.cpp
@@ -11,6 +11,7 @@
#include "vpu_driver/source/command/vpu_command_buffer.hpp"
#include "vpu_driver/source/command/vpu_copy_command.hpp"
#include "vpu_driver/source/utilities/log.hpp"
+#include <algorithm>
namespace VPU {
--
2.43.0

View File

@ -1,47 +0,0 @@
SUMMARY = "User Mode Driver for Intel® NPU device"
HOMEPAGE = "https://github.com/intel/linux-npu-driver"
LICENSE = "MIT & Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=7b256470048be42466f7d10e1d6482e6 \
file://third-party-programs.txt;md5=0ae40d7f1ef3bbd509197e427fdd7e70 \
file://third_party/vpux_elf/LICENSE;md5=5f51ea09f42b161b3013558e48d0fb20 \
file://third_party/level-zero/LICENSE;md5=97957beb2f7808ffa247e5d93e6442cc \
"
SRC_URI = "git://github.com/intel/linux-npu-driver.git;protocol=https;name=linux-npu-driver;branch=main;lfs=1 \
git://github.com/openvinotoolkit/npu_plugin_elf.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/vpux_elf;name=vpux-elf;nobranch=1 \
git://github.com/jbeder/yaml-cpp.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/yaml-cpp;name=yaml-cpp;nobranch=1 \
git://github.com/intel/level-zero-npu-extensions.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/level-zero-npu-extensions;name=lzvext;nobranch=1 \
git://github.com/google/googletest.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/googletest;name=googletest;nobranch=1 \
git://github.com/oneapi-src/level-zero.git;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/third_party/level-zero;name=level-zero;nobranch=1 \
file://0001-linux-npu-driver-fix-multilib-install-issue.patch \
"
SRCREV_linux-npu-driver = "59845101f5445e66dcc691f4f8be6371700fbdf5"
SRCREV_vpux-elf = "4b0a4a06ae09c0c3a973f8f18761c549ec2309eb"
SRCREV_yaml-cpp = "f7320141120f720aecc4c32be25586e7da9eb978"
SRCREV_lzvext = "8cf113bd4a4568f6555d81f316504d7ac3b82ee8"
SRCREV_googletest = "b514bdc898e2951020cbdca1304b75f5950d1f59"
SRCREV_level-zero = "e3b6efdd91d67bb03024b266094afabd39e213bf"
SRCREV_FORMAT = "linux-npu-driver_vpux-elf_yaml-cpp_lzvext_googletest_level-zero"
inherit cmake
# Fix warning _FORTIFY_SOURCE requires compiling with optimization (-O)
EXTRA_OECMAKE += " -DCMAKE_BUILD_TYPE=Release "
EXTRA_OECMAKE += " -DCMAKE_CXX_FLAGS_RELEASE=-O2 "
EXTRA_OECMAKE += " -DCMAKE_INSTALL_FIRMWARE_DIR=${nonarch_base_libdir}"
EXTRA_OECMAKE += " -DCMAKE_POLICY_VERSION_MINIMUM=3.5"
DEPENDS = "level-zero dpkg-native pkgconfig-native"
PACKAGES =+ "${PN}-firmware ${PN}-tests"
FILES:${PN}-firmware = "${nonarch_base_libdir}/firmware/updates/intel/vpu/*"
FILES:${PN}-tests = "${bindir}"
INSANE_SKIP:${PN} += "buildpaths"
INSANE_SKIP:${PN}-dbg += "buildpaths"
INSANE_SKIP:${PN}-tests += "buildpaths"
INSANE_SKIP:${PN}-firmware += "buildpaths"

View File

@ -1,54 +0,0 @@
SUMMARY = "Intel® oneAPI DPC++/C++ Compiler runtime files"
DESCRIPTION = "The Intel® oneAPI DPC++/C++ Compiler provides optimizations \
that help your applications run faster on Intel® 64 architectures with support \
for the latest C, C++, and SYCL language standards. This compiler produces \
optimized code that can run significantly faster by taking advantage of the \
ever-increasing core count and vector register width in Intel® Xeon® processors \
and compatible processors."
HOMEPAGE = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html"
LICENSE = "EULA"
COMPILERMAINVER = "2024.0"
LIC_FILES_CHKSUM = " \
file://opt/intel/oneapi/licensing/${COMPILERMAINVER}/licensing/${COMPILERMAINVER}/license.htm;md5=5ff64c6ff3ef98089ed69360e7a84c39 \
"
COMPILERDOTVER = "2024.0.0-49406"
DEVUTILITVERSION = "2024.0-2024.0.0-49320"
SRC_URI = " \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=dpcpp-runtime \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-dpcpp-cpp-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=dpcpp-common \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-runtime-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=compiler-shared-runtime \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-common-vars-${COMPILERDOTVER}_all.deb;subdir=${BPN};name=common-vars \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-openmp-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=openmp \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-openmp-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=openmp-common \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-common-licensing-${COMPILERMAINVER}-${COMPILERDOTVER}_all.deb;subdir=${BPN};name=license \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-dev-utilities-${DEVUTILITVERSION}_amd64.deb;subdir=${BPN};name=dev-utils \
"
SRC_URI[dpcpp-runtime.sha256sum] = "e24f0ba69daf3f66ceaf23d5e632f183cdb90bac69f65407fdb4407fc9034f33"
SRC_URI[dpcpp-common.sha256sum] = "f5a3db6a725598224edf1099260955aee3e36beadcaed2af5b8b453e873a82fa"
SRC_URI[compiler-shared-runtime.sha256sum] = "bce010cbe076259ddd3feb8e69792869e22fccd5b4e2c9af9e815826f2c1a394"
SRC_URI[common-vars.sha256sum] = "368553c99db1b52060b8225355336778be0b00e5991d0f769c42f891c6328750"
SRC_URI[openmp.sha256sum] = "154ff1e81adfdc872ba1d47bd860de70d62188417c7128422435dfd0ceca62fe"
SRC_URI[openmp-common.sha256sum] = "8217001d78311cbef97dd139e684c6767932b532309c3843ba57d7894d15c07d"
SRC_URI[license.sha256sum] = "9f9c8a12fc0bc82ab5b71e118e66745eff23f42224eba304068225b366cd74b6"
SRC_URI[dev-utils.sha256sum] = "c675d960a5abca361cead9217d6e74adee499ee0a095c4e44092bd710b304d50"
S = "${UNPACKDIR}/${BPN}"
inherit bin_package
RDEPENDS:${PN} += "virtual-opencl-icd zlib tbb level-zero-loader bash tcsh"
SKIP_FILEDEPS:${PN} = '1'
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
# doesn't have GNU_HASH (didn't pass LDFLAGS?)
INSANE_SKIP:${PN} += "textrel dev-so dev-elf ldflags already-stripped staticdev rpaths arch useless-rpaths file-rdeps"
FILES_SOLIBSDEV = ""
BBCLASSEXTEND = "native nativesdk"

View File

@ -1,45 +0,0 @@
SUMMARY = "Intel® oneAPI DPC++/C++ Compiler"
DESCRIPTION = "The Intel® oneAPI DPC++/C++ Compiler provides optimizations \
that help your applications run faster on Intel® 64 architectures with support \
for the latest C, C++, and SYCL language standards. This compiler produces \
optimized code that can run significantly faster by taking advantage of the \
ever-increasing core count and vector register width in Intel® Xeon® processors \
and compatible processors."
HOMEPAGE = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html"
LICENSE = "EULA"
COMPILERMAINVER = "2024.0"
LIC_FILES_CHKSUM = " \
file://opt/intel/oneapi/compiler/${COMPILERMAINVER}/share/doc/compiler/credist.txt;md5=b41f55af9f479b9570fc35b955d5ba1a \
"
SRC_URI = " \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-dpcpp-cpp-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=icx-compiler \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=compiler-linker \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=shared-common \
"
SRC_URI[icx-compiler.sha256sum] = "0dcbac766d5a1519d4cf393f5a85e71d19024fef65f77638f3f849796b62cd82"
SRC_URI[compiler-linker.sha256sum] = "e00faea6d797934d62143e4aa70b727ce30f80fdf30769d22122b3051140c236"
SRC_URI[shared-common.sha256sum] = "cf490a4a790f349da79e618359598d3b32312ca3b2639e5d4c84e1cfa2745558"
S = "${UNPACKDIR}/${BPN}"
inherit bin_package
RDEPENDS:${PN} += "intel-oneapi-dpcpp-cpp-runtime"
SKIP_FILEDEPS:${PN} = '1'
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
# doesn't have GNU_HASH (didn't pass LDFLAGS?)
INSANE_SKIP:${PN} += "textrel dev-so dev-elf ldflags already-stripped file-rdeps staticdev rpaths arch useless-rpaths"
FILES_SOLIBSDEV = ""
EXCLUDE_FROM_SHLIBS = "1"
BBCLASSEXTEND = "native nativesdk"

View File

@ -1,30 +0,0 @@
SUMMARY = "Collection of high-performance ray tracing kernels"
DESCRIPTION = "A collection of high-performance ray tracing kernels \
intended to graphics application engineers that want to improve the \
performance of their application."
HOMEPAGE = "https://github.com/embree/embree"
LICENSE = "Apache-2.0 & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
file://third-party-programs.txt;md5=f989f5b74cfff0d45d3ccf0e1366cbdc \
file://common/math/transcendental.h;beginline=6;endline=8;md5=73380bb2ab6613b30b8464f114bd0ca8"
inherit pkgconfig cmake
SRC_URI = "git://github.com/embree/embree.git;protocol=https;branch=master"
SRCREV = "5730b150471602d6dc02d9b7d8a4a6ce9ceffe16"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = "null"
DEPENDS = "tbb jpeg libpng glfw ispc-native"
EXTRA_OECMAKE += " \
-DEMBREE_IGNORE_CMAKE_CXX_FLAGS=OFF \
-DEMBREE_MAX_ISA=DEFAULT \
-DEMBREE_TUTORIALS=OFF \
-DEMBREE_ISPC_SUPPORT=ON \
-DEMBREE_ZIP_MODE=OFF \
"
UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$"

View File

@ -1,35 +0,0 @@
DESCRIPTION = "Intel® Integrated Performance Primitives are production-ready \
building blocks for cross-platform performance. Develop high-performance vision, \
signal, security, and storage applications with this multithreaded software library."
HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html"
LICENSE = "ISSL"
MAXVER = "2021.10"
LIC_FILES_CHKSUM = " \
file://opt/intel/oneapi/ipp/${MAXVER}/share/doc/ipp/licensing/license.txt;md5=d7cdc92ed6c4de1263da879599ddc3e2 \
file://opt/intel/oneapi/ipp/${MAXVER}/share/doc/ipp/licensing/third-party-programs.txt;md5=22bd13987911dcf790907041b43081f3 \
"
SRC_URI = " \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-${MAXVER}-${PV}_amd64.deb;subdir=${BPN};name=ipp \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-common-devel-${MAXVER}-${PV}_all.deb;subdir=${BPN};name=headers \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-common-${MAXVER}-${PV}_all.deb;subdir=${BPN};name=env \
"
SRC_URI[ipp.sha256sum] = "b51e45c6e691aa46c7136b0ab61f5abe346388433e017a30cf53fd23e92bea07"
SRC_URI[headers.sha256sum] = "342f37ab2f82bc9f4498435f848ee660591c2488b44d988bf6ee96b2a71fd005"
SRC_URI[env.sha256sum] = "731e8c28a3b8b757730cd874d0941de2eb744856128f24ade59d36c12b415bf6"
S = "${UNPACKDIR}/${BPN}"
COMPATIBLE_HOST:libc-musl = "null"
inherit bin_package
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_DEFAULT_DEPS = ""
RDEPENDS:${PN} += "tbb setup-intel-oneapi-env"
INSANE_SKIP:${PN} += "ldflags dev-so"

View File

@ -1,74 +0,0 @@
SUMMARY = "Intel® oneAPI Math Kernel Library (oneMKL)"
DESCRIPTION = "The Intel® oneAPI Math Kernel Library (oneMKL) is a computing \
math library of highly optimized and extensively parallelized routines \
for applications that require maximum performance. oneMKL contains \
the high-performance optimizations from the full Intel® Math Kernel Library \
for CPU architectures (with C/Fortran programming language interfaces)\
and adds to them a set of DPC++ programming language interfaces for \
achieving performance on various CPU architectures \
and Intel Graphics Technology for certain key functionalities."
HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html"
LICENSE = "ISSL"
MKLMAINVER = "2024.0"
LIC_FILES_CHKSUM = " \
file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/license.txt;md5=8510d21bf355a76e378c3216c3929ccd \
file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-benchmarks.txt;md5=cb98e1a1f14c05ea85a979ea8982e7a4 \
file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-ipp.txt;md5=a4b2bf15e38f5c1267cdafed18bc0b09 \
file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-openmp.txt;md5=6b3c1aa2a11393060074c0346ce21e49 \
file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-safestring.txt;md5=c3aeee91c6d35a0f0753aed6c2633b82 \
file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs.txt;md5=27de873e4084d62530fe828406b33ca9 \
"
SRC_URI = " \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-${MKLMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=runtime \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-common-devel-${MKLMAINVER}-${PV}_all.deb;subdir=${BPN};name=common-devel \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-devel-${MKLMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=devel \
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-common-${MKLMAINVER}-${PV}_all.deb;subdir=${BPN};name=common-vars \
"
SRC_URI[runtime.sha256sum] = "10a86e24051d6ef4a80fd839c570e629190638a3c0ac9bcca99ab855f534b959"
SRC_URI[common-devel.sha256sum] = "adbf0ea946f63946d29b7f9c750c38a42ea7a65d8c81655b268aa2c7bb908192"
SRC_URI[devel.sha256sum] = "fab2a6f15e18bfd9b4d425f2703e4e98928c57f52c4feebc9ed886f097062e84"
SRC_URI[common-vars.sha256sum] = "ec2b67813739fa4a2895f63479a41acba2174afe2d0cb8a0c1c9119d1317d8ef"
S = "${UNPACKDIR}/${BPN}"
inherit bin_package
do_install:append () {
install -d ${D}${bindir}
(cd ${D}${bindir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/bin/* .)
install -d ${D}${libdir}
(cd ${D}${libdir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/intel64/*.so* .)
(cd ${D}${libdir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/intel64/*.a* .)
install -d ${D}${libdir}/pkgconfig
(cd ${D}${libdir}/pkgconfig ; ln -s ../../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/pkgconfig/* .)
install -d ${D}${libdir}/cmake
(cd ${D}${libdir}/cmake ; ln -s ../../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/cmake/* .)
install -d ${D}${includedir}
find ${D}/opt/intel/oneapi/mkl/${MKLMAINVER}/include/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read srcdir; do
install -d ${D}${includedir}/$srcdir
(cd ${D}${includedir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/include/$srcdir/* ./$srcdir/)
done
find ${D}/opt/intel/oneapi/mkl/${MKLMAINVER}/include/ -mindepth 1 -maxdepth 1 -type f -printf '%f\n' | while read srcfile; do
(cd ${D}${includedir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/include/$srcfile .)
done
}
AUTO_LIBNAME_PKGS = ""
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
RDEPENDS:${PN} += "bash tbb intel-oneapi-dpcpp-cpp-runtime setup-intel-oneapi-env virtual-opencl-icd"
INSANE_SKIP:${PN} = "ldflags textrel dev-so staticdev arch already-stripped"
FILES:${PN}-staticdev += "/opt/intel/oneapi/mkl/${MKLMAINVER}/lib/*.a*"
SKIP_FILEDEPS:${PN} = '1'
SYSROOT_DIRS += "/opt"

View File

@ -1,27 +0,0 @@
SUMMARY = "Intel® Open Image Denoise"
DESCRIPTION = "Intel Open Image Denoise is an open source library of \
high-performance, high-quality denoising filters for images \
rendered with ray tracing. Intel Open Image Denoise is part \
of the Intel® oneAPI Rendering Toolkit"
HOMEPAGE = "https://www.openimagedenoise.org/"
LICENSE = "Apache-2.0 & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
file://external/mkl-dnn/LICENSE;md5=b48e3de3bfd47c27882a0d85b20823f5 \
file://external/mkl-dnn/src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \
file://external/mkl-dnn/src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \
file://weights/LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRC_URI = "https://github.com/OpenImageDenoise/${BPN}/releases/download/v${PV}/${BP}.src.tar.gz\
"
SRC_URI[sha256sum] = "ce144ba582ff36563d9442ee07fa2a4d249bc85aa93e5b25fc527ff4ee755ed6"
inherit cmake
DEPENDS += "tbb ispc-native"
do_install:append() {
chrpath -d ${D}${bindir}/* ${D}${libdir}/*${SOLIBS}
}
UPSTREAM_CHECK_URI = "https://github.com/OpenImageDenoise/oidn/releases"

View File

@ -1,42 +0,0 @@
SUMMARY = "Intel(R) Open Volume Kernel Library"
DESCRIPTION = "Intel(R) Open Volume Kernel Library (Intel(R) Open VKL) is a \
collection of high-performance volume computation kernels. The target users \
of Open VKL are graphics application engineers who want to improve the \
performance of their volume rendering applications by leveraging Open VKLs \
performance-optimized kernels, which include volume traversal and sampling \
functionality for a variety of volumetric data formats. The kernels are optimized \
for the latest Intel(R) processors with support for SSE, AVX, AVX2, and AVX-512 \
instructions."
HOMEPAGE = "https://www.openvkl.org/"
LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & Zlib"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
file://third-party-programs.txt;md5=69ec7caf49616c471161b921f53d5ec0 \
file://testing/external/half.hpp;beginline=1;endline=17;md5=4b60058493630c3bd0ef145470f04a7b"
inherit pkgconfig cmake
SRC_URI = "git://github.com/openvkl/openvkl.git;protocol=https;branch=master \
"
SRCREV = "8c6ba526813b871a624cb9d73d4cbb689ac7f4ce"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = "null"
DEPENDS = "ispc ispc-native rkcommon embree"
EXTRA_OECMAKE += " \
-DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
"
EXTRA_OECMAKE:intel-corei7-64 += " \
-DOPENVKL_ISA_AVX=OFF \
-DOPENVKL_ISA_AVX2=OFF \
-DOPENVKL_ISA_AVX512SKX=OFF \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
"
PACKAGES =+ "${PN}-examples"
FILES:${PN}-examples = "\
${bindir} \
"

View File

@ -1,28 +0,0 @@
From 09e6b6615d9a16e9555eff9d569356e32bd26aa4 Mon Sep 17 00:00:00 2001
From: benradel <86351445+benradel@users.noreply.github.com>
Date: Wed, 23 Jun 2021 11:56:03 +0200
Subject: [PATCH] Fix GCC11 Compile Error in benchmark_register.h
Fix GCC11 compilation error due to missing header "limits" in benchmark_register.h
Upstream-Status: Submitted [https://github.com/ospray/ospray/pull/484/files]
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
apps/common/external/benchmark/src/benchmark_register.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/apps/common/external/benchmark/src/benchmark_register.h b/apps/common/external/benchmark/src/benchmark_register.h
index 61377d742..8f1bb7795 100644
--- a/apps/common/external/benchmark/src/benchmark_register.h
+++ b/apps/common/external/benchmark/src/benchmark_register.h
@@ -2,6 +2,7 @@
#define BENCHMARK_REGISTER_H
#include <vector>
+#include <limits>
#include "check.h"
--
2.32.0

View File

@ -1,38 +0,0 @@
SUMMARY = "Intel OSPray, Ray Tracing based Rendering Engine"
DESCRIPTION = "Intel OSPRay is an open source, scalable, and portable ray \
tracing engine for high-performance, high-fidelity visualization on \
Intel Architecture CPUs."
HOMEPAGE = "https://www.ospray.org/"
LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & Zlib"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1dece7821bf3fd70fe1309eaa37d52a2 \
file://third-party-programs.txt;md5=e37b77e3bd997abccc359c710fb1f1db \
"
inherit pkgconfig cmake
SRC_URI = "git://github.com/ospray/ospray.git;protocol=https;branch=master;name=ospray \
git://github.com/nothings/stb;protocol=https;destsuffix=${BB_GIT_DEFAULT_DESTSUFFIX}/apps/common/external/stb_image/stb;name=stb;nobranch=1 \
"
SRCREV_ospray ?= "85af2929937d516997451cbd52d352cf93125ed2"
SRCREV_stb ?= "af1a5bc36dff44f0a019df21c271db697d51f1a6"
SRCREV_FORMAT = "ospray_stb"
COMPATIBLE_HOST = '(x86_64).*-linux'
COMPATIBLE_HOST:libc-musl = "null"
DEPENDS = "rkcommon ispc ispc-native openvkl embree"
EXTRA_OECMAKE += " \
-DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \
-DOSPRAY_ENABLE_APPS_BENCHMARK=OFF \
-DOSPRAY_ENABLE_APPS_TESTING=OFF \
-DOSPRAY_ENABLE_APPS_EXAMPLES=OFF \
"
PACKAGES =+ "${PN}-apps"
FILES:${PN}-apps = "\
${bindir} \
"
UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$"

View File

@ -1,49 +0,0 @@
From f0885d7d97e98ad586bbacf5edf7fa4022b425b9 Mon Sep 17 00:00:00 2001
From: Yogesh Tyagi <yogesh.tyagi@intel.com>
Date: Mon, 11 Aug 2025 14:00:50 +0800
Subject: [PATCH] use fully-qualified rkcommon::math::rsqrt to avoid overload
ambiguity
Explicitly calling rkcommon::math::rsqrt() prevents conflict with the
standard rsqrt(double) declared in bits/mathcalls.h, fixing the build
error in Quaternion tests.
Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
Upstream-Status: Submitted [https://github.com/RenderKit/rkcommon/pull/16]
---
tests/math/test_Quaternion.cpp | 2 +-
tests/math/test_rkmath.cpp | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/math/test_Quaternion.cpp b/tests/math/test_Quaternion.cpp
index 760d815..f527824 100644
--- a/tests/math/test_Quaternion.cpp
+++ b/tests/math/test_Quaternion.cpp
@@ -187,7 +187,7 @@ template <typename T>
inline void test_slerp()
{
typename T::Scalar two = 2;
- REQUIRE(CmpT(slerp(.5f, T(1, 0, 0, 0), T(0, 1, 0, 0)), T(rsqrt(two), rsqrt(two), 0, 0)));
+ REQUIRE(CmpT(slerp(.5f, T(1, 0, 0, 0), T(0, 1, 0, 0)), T(rkcommon::math::rsqrt(two), rkcommon::math::rsqrt(two), 0, 0)));
}
TEST_CASE("Quaternion functions", "[quat]")
diff --git a/tests/math/test_rkmath.cpp b/tests/math/test_rkmath.cpp
index 7f66532..fd18df4 100644
--- a/tests/math/test_rkmath.cpp
+++ b/tests/math/test_rkmath.cpp
@@ -49,8 +49,8 @@ TEST_CASE("rkmath rcp_safe function", "[rkmath]")
template <typename T>
inline void test_rsqrt()
{
- REQUIRE(CmpT<T>(rsqrt(T(1)), T(1)));
- REQUIRE(CmpT<T>(rsqrt(T(4)), T(.5)));
+ REQUIRE(CmpT<T>(rkcommon::math::rsqrt(T(1)), T(1)));
+ REQUIRE(CmpT<T>(rkcommon::math::rsqrt(T(4)), T(.5)));
}
TEST_CASE("rkmath rsqrt function", "[rkmath]")
--
2.37.3

View File

@ -1,18 +0,0 @@
SUMMARY = "rkcommon - C++/CMake infrastructure"
DESCRIPTION = "A common set of C++ infrastructure and CMake utilities \
used by various components of Intel® oneAPI Rendering Toolkit."
HOMEPAGE = "https://github.com/ospray/rkcommon"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
inherit pkgconfig cmake
SRC_URI = "git://github.com/ospray/rkcommon.git;protocol=https;branch=master \
file://0001-use-fully-qualified-rkcommon-math-rsqrt-to-avoid-ove.patch \
"
SRCREV = "4a00047ae5a3ac705b6b33b4a7574588d91e7953"
DEPENDS = "tbb"
EXTRA_OECMAKE += " -DBUILD_TESTING=OFF"

View File

@ -1,38 +0,0 @@
From ef56be8e6bf2ea273cbeb960f3131164e7b517b6 Mon Sep 17 00:00:00 2001
From: Anuj Mittal <anuj.mittal@intel.com>
Date: Wed, 18 May 2022 12:24:03 +0800
Subject: [PATCH] CMakeLists: disable Werror
gcc12 highlights minor warnings that cause the build to fail. Ignore
those until they aren't fixed upstream.
Upstream-Status: Inappropriate
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 418483f7..c019fea0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -146,7 +146,7 @@ else()
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fno-strict-aliasing -D_FORTIFY_SOURCE=2")
if(LNX_BUILD)
#A few warnings yet to resolve under esx
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Werror")
+ #set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Werror")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Werror")
endif()
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ggdb")
@@ -791,4 +791,4 @@ if(ESX_BUILD)
include(CMake/esx.cmake)
endif()
-add_subdirectory(src/os/nvm_api_sample)
\ No newline at end of file
+add_subdirectory(src/os/nvm_api_sample)
--
2.35.3

Some files were not shown because too many files have changed in this diff Show More