index : builder | |
Archlinux32 build system | gitolite user |
summaryrefslogtreecommitdiff |
@@ -1 +1,2 @@ work +.idea @@ -38,12 +38,8 @@ The standard configuration in `conf/*.conf.example` can be locally overwritten b * enable `[releng]` repository in `/etc/pacman.conf` with an i686 mirror ## tools for the build master and the build slaves -* `check-opcodes`: -Scan binaries for certain opcodes. * `clean-git`: Clean the packages' git repositories. -* `opcode`: -Helper for `check-opcodes`. * `strict-bashism-check`: Strict style check for this code base. diff --git a/bin/build-master-status b/bin/build-master-status index 7a17923..b66ba2b 100755 --- a/bin/build-master-status +++ b/bin/build-master-status @@ -18,7 +18,7 @@ if ! verbose_flock -n 9; then fi # update todos -find "${base_dir}/bin/" "${base_dir}/conf/" "${base_dir}/lib/" -type f \ +find "${base_dir}/bin/" "${conf_dir}/" "${base_dir}/lib/" -type f \ -exec grep -nHF '' '{}' \; | \ sed 's,^'"$(str_to_regex "${base_dir}")"'/,,' | \ sed -n ' diff --git a/bin/build-packages b/bin/build-packages index 9c5ab03..b39546d 100755 --- a/bin/build-packages +++ b/bin/build-packages @@ -21,7 +21,7 @@ # TODO: the following things need proper locking and/or proper handling of # external locks: # - `git` on the package source -# - `archbuild` (e.g. /var/lib/archbuilds/staging-i686-build/root.lock) +# - `archbuild` (e.g. /var/lib/archbuilds/extra-staging-i686-build/root.lock) # - `find ... -exec umount` on the build chroot # TODO: releave some locking conditions - meta goal: be able to run multiple @@ -38,12 +38,6 @@ usage() { >&2 echo 'build-packages: build package(s) on the build-list' >&2 echo '' >&2 echo 'possible options:' - >&2 echo ' -d|--diff source-directory:' - >&2 echo ' Apply the diff between $source-directory/PKGBUILD and' - >&2 echo ' $source-directory/../../trunk/PKGBUILD before building.' - >&2 echo ' This option is intended for building from trunk where minor' - >&2 echo ' fixes did not get released yet. Hence, it conflicts intentionally' - >&2 echo ' with -n, -l, -t or -x and it requires -p.' >&2 echo ' -h|--help: Show this help and exit.' >&2 echo ' -l|--local pkgname.git-revision.git-mod-revision.repository.architecture:' >&2 echo ' Build the given package without asking / reporting to the' @@ -74,10 +68,10 @@ usage() { >&2 echo ' clean the chroot before building' >&2 echo ' :haskell_without_check:' >&2 echo ' try with :without_check: iff this is a haskell-*, python-* or python2-* package' - >&2 echo ' :mirrored_source:' - >&2 echo ' compile from source tarbal from sources.archlinux.org if possible' >&2 echo ' :mirrored_source_by_hash:' >&2 echo ' download sources from sources.archlinux32.org by hash if possible' + >&2 echo ' :on_x86_64:' + >&2 echo ' build any package with x86_64 arch' >&2 echo ' :without_check:' >&2 echo ' run makepkg with "--no-check"' >&2 echo ' :without_systemd_nspawn:' @@ -90,8 +84,7 @@ usage() { } eval set -- "$( - getopt -o d:hl:n:p:s:t:ux \ - --long diff: \ + getopt -o hl:n:p:s:t:ux \ --long help \ --long local: \ --long prefer: \ @@ -102,7 +95,6 @@ eval set -- "$( )" unset count -unset diff_source_dir unset forced_package unset forced_straws unset prefered_package @@ -112,14 +104,6 @@ timeout=0 while true do case "$1" in - -d|--diff) - shift - if [ -n "${diff_source_dir}" ]; then - >&2 echo 'Option -d, --diff can be given only once.' - usage - fi - diff_source_dir="$1" - ;; -h|--help) usage 0 ;; @@ -173,17 +157,6 @@ if [ $# -ne 0 ]; then usage fi -if [ -n "${diff_source_dir}" ]; then - if [ -n "${count}" ] || \ - [ -n "${forced_package}" ] || \ - [ "${timeout}" -ne 0 ] || \ - ${exit_after_failure} || \ - [ -z "${prefered_package}" ]; then - >&2 echo 'Conflicting flags.' - usage - fi -fi - if [ -n "${forced_package}" ]; then if [ -n "${count}" ] || \ [ "${timeout}" -ne 0 ] || \ @@ -222,6 +195,14 @@ checksum=$( while [ "${count}" -ne 0 ] && \ [ "$(calculate_script_checksum)" = "${checksum}" ]; do + if [ -f '/tmp/do-not-run-build-slave' ]; then + >&2 echo 'build slave is on halt.' + >&2 echo 'I will terminate the loop and stop now.' + # non-zero exit code to signal systemctl that the process should not + # be restarted automatically + exit 1 + fi + if [ "${timeout}" -ne 0 ] && [ "${timeout}" -lt "$(date +%s)" ]; then break @@ -249,7 +230,7 @@ while [ "${count}" -ne 0 ] && \ if [ -z "${forced_package}" ]; then package=$( # shellcheck disable=SC2029 - ssh \ + ssh -o PasswordAuthentication=No \ -i "${master_build_server_identity}" \ -p "${master_build_server_port}" \ "${master_build_server_user}@${master_build_server}" \ @@ -277,7 +258,7 @@ while [ "${count}" -ne 0 ] && \ # 0: ok, I gave you an assignment 0) - [ ${count} -gt 0 ] && \ + [ "${count}" -gt 0 ] && \ count=$((count-1)) arch="${package##* }" package="${package% *}" @@ -291,19 +272,9 @@ while [ "${count}" -ne 0 ] && \ package="${package% *}" if [ "${arch}" = 'any' ]; then arch="${my_arch}" - fi - - if [ -n "${diff_source_dir}" ] && - [ "${prefered_package}" != "${package}" ]; then - >&2 echo 'The prefered package was not handed out.' - >&2 echo 'Because -d was given, I will abort.' - # shellcheck disable=SC2029 - ssh \ - -i "${master_build_server_identity}" \ - -p "${master_build_server_port}" \ - "${master_build_server_user}@${master_build_server}" \ - 'return-assignment' 'ABORT' - exit 2 + assignment_was_any=true + else + assignment_was_any=false fi if [ "${git_revision##*-}" = 'HEAD' ]; then @@ -376,14 +347,10 @@ while [ "${count}" -ne 0 ] && \ tmp_dir=$(mktemp -d "${work_dir}/tmp.build-packages.XXXXXX") trap bail_out EXIT - if ! git_repo=$(find_repository_with_commit "${git_revision}") || \ - [ -z "${git_repo}" ] || \ - ! find_pkgbuilds "${package}" "${repository}" "${git_repo}" "${git_revision}" "${mod_git_revision}" || \ - ! extract_source_directory "${git_repo}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" "${sub_pkgrel}" || \ - ! apply_trunk_patch "${tmp_dir}" "${diff_source_dir}"; then + if ! extract_source_directory "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" "${sub_pkgrel}"; then # report local failure (probably a missing commit) to build-master # shellcheck disable=SC2029 - ssh \ + ssh -o PasswordAuthentication=No \ -i "${master_build_server_identity}" \ -p "${master_build_server_port}" \ "${master_build_server_user}@${master_build_server}" \ @@ -394,17 +361,21 @@ while [ "${count}" -ne 0 ] && \ continue fi + if [ -d "${tmp_dir}/keys/pgp" ]; then + find "${tmp_dir}/keys/pgp" -type f -exec gpg --import {} + + fi + cd "${tmp_dir}" echo 'nothing' > "${tmp_dir}/.ping-build-master" if [ -z "${forced_package}" ]; then - # we get a lock on "${work_dir}/ping-build-master.lock", + # we get a lock on "${tmp_dir}/ping-build-master.lock", # if we release that lock, ping-to-master should stop _immediately_ - exec 9> "${work_dir}/ping-build-master.lock" + exec 9> "${tmp_dir}/ping-build-master.lock" if ! verbose_flock -n 9; then >&2 echo 'ERROR: Cannot lock ping-to-master - this should not happen.' exit 2 fi - "${base_dir}/bin/ping-to-master" "$$" "${tmp_dir}" & + "${base_dir}/bin/ping-to-master" "$$" "${tmp_dir}" "${tmp_dir}/ping-build-master.lock" & fi success=false @@ -448,7 +419,7 @@ while [ "${count}" -ne 0 ] && \ if echo "${straw}" | \ grep -qF ':with_build_support:'; then - build_command='staging-with-build-support-'"${arch}"'-build' + build_command="${repository}-staging-with-build-support-${arch}-build" elif echo "${straw}" | \ grep -qF ':without_systemd_nspawn:'; then if [ -z "${prefered_package}" ]; then @@ -459,7 +430,7 @@ while [ "${count}" -ne 0 ] && \ >&2 echo 'The prefered package was not handed out.' >&2 echo 'Because straw :without_systemd_nspawn: is active, I will abort.' # shellcheck disable=SC2029 - ssh \ + ssh -o PasswordAuthentication=No \ -i "${master_build_server_identity}" \ -p "${master_build_server_port}" \ "${master_build_server_user}@${master_build_server}" \ @@ -485,8 +456,30 @@ while [ "${count}" -ne 0 ] && \ outerParameters="${innerParameters} -fcrs --asdeps --noconfirm --holdver" middleParameters='' innerParameters='' + elif echo "${straw}" | \ + grep -qF ':on_x86_64:'; then + if [ -z "${prefered_package}" ]; then + >&2 echo 'straw :on_x86_64: only allowed with -p' + exit 2 + fi + if [ "${prefered_package}" != "${package}" ]; then + >&2 echo 'The prefered package was not handed out.' + >&2 echo 'Because straw :on_x86_64: is active, I will abort.' + # shellcheck disable=SC2029 + ssh -o PasswordAuthentication=No \ + -i "${master_build_server_identity}" \ + -p "${master_build_server_port}" \ + "${master_build_server_user}@${master_build_server}" \ + 'return-assignment' 'ABORT' + exit 2 + fi + if ! ${assignment_was_any}; then + >&2 printf 'Can only build "any" packages with :on_x86_64:, but got a "%s" package.\n' "${arch}" + exit 2 + fi + build_command="${repository}-staging-x86_64-build" else - build_command='staging-'"${arch}"'-build' + build_command="${repository}-staging-${arch}-build" fi find . -maxdepth 1 -type f \( \ @@ -501,13 +494,13 @@ while [ "${count}" -ne 0 ] && \ echo 'checking-source' > "${tmp_dir}/.ping-build-master" success=false verifysource_trial=0 - while [ ${verifysource_trial} -lt 5 ]; do + while [ ${verifysource_trial} -lt 4 ]; do verifysource_trial=$((verifysource_trial + 1)) log_file="${tmp_dir}/$( date -u --iso-8601=seconds | \ cut -d+ -f1 ).build-log" - if CARCH="${arch}" makepkg --verifysource 2> "${log_file}"; then + if GIT_TERMINAL_PROMPT=0 CARCH="${arch}" makepkg --verifysource 2> "${log_file}"; then success=true rm "${log_file}" break @@ -557,53 +550,8 @@ while [ "${count}" -ne 0 ] && \ verifysource_trial=$((verifysource_trial + 1)) fi - # try to download source from sources.archlinux.org/sources/$repo/$source - if [ ${verifysource_trial} -eq 3 ]; then - if echo "${straw}" | \ - grep -qF ':mirrored_source:'; then - source_name=$( - makepkg --printsrcinfo | \ - sed -n ' - /^\s*\(epoch\|pkg\(base\|ver\|rel\)\) = /{s|^\s\+||;p} - /^pkgname = /q - ' | \ - sed ' - s|^pkgbase = \(.*\)$|0 \1-| - s|^epoch = \(.*\)$|1 \1:| - s|^pkgver = \(.*\)$|2 \1-| - s|^pkgrel = \([^.]*\)\(\..*\)\?$|3 \1.src.tar.gz| - ' | \ - sort -k1n,1 | \ - sed ' - s|^[0-9] || - :a - N - s|\n[0-9] \(\S\+\)$|\1| - ta - ' - ) - if wget -q --timeout=15 -nc -nd "https://sources.archlinux.org/sources/${git_repo}/${source_name}"; then - # shellcheck disable=SC2046 - tar -zst --overwrite \ - -f "${source_name}" \ - --exclude PKGBUILD \ - $( - if [ -n "${PKGBUILD_mod}" ]; then - git -C "${repo_paths__archlinux32}/${PKGBUILD_mod%/*}" archive "${mod_git_revision}" -- . | \ - tar -t | \ - sed 's/^/--exclude /' - fi - ) \ - --strip-components=1 \ - || true - continue - fi - fi - verifysource_trial=$((verifysource_trial + 1)) - fi - # try to download source from sources.archlinux32.org by its hash - if [ ${verifysource_trial} -eq 4 ]; then + if [ ${verifysource_trial} -eq 3 ]; then if echo "${straw}" | \ grep -qF ':mirrored_source_by_hash:'; then if download_sources_by_hash; then @@ -730,13 +678,22 @@ while [ "${count}" -ne 0 ] && \ } | \ sort | \ uniq -u | \ - while read -r unexpected_package; do - >&2 printf 'removing unexpected build artifact "%s"\n' \ - "${unexpected_package}" - rm "${unexpected_package}"* - done + { + removed_something_unexpected=false + while read -r unexpected_package; do + >&2 printf 'removing unexpected build artifact "%s"\n' \ + "${unexpected_package}" + rm "${unexpected_package}"* + removed_something_unexpected=true + done + if "${removed_something_unexpected}"; then + >&2 printf 'I was only expecting:\n%s\n' \ + "${expected_packages}" + fi + } fi >&2 printf 'signing package(s)\n' + mv "${log_file}" "${tar_content_dir}/" find . -maxdepth 1 -type f -name '*.pkg.tar.zst' \ -execdir gpg --local-user="${package_key}" --detach-sign '{}' \; \ -execdir mv '{}' '{}.sig' '{}-namcap.log' "${tar_content_dir}/" \; \ @@ -977,7 +934,8 @@ while [ "${count}" -ne 0 ] && \ \( \ -name '*.pkg.tar.zst-namcap.log' -o \ -name '*.pkg.tar.zst.so.needs' -o \ - -name '*.pkg.tar.zst.so.provides' \ + -name '*.pkg.tar.zst.so.provides' -o \ + -name '*.build-log' \ \) \ -execdir gzip '{}' \; else @@ -1015,7 +973,7 @@ while [ "${count}" -ne 0 ] && \ while ${upload_to_build_master}; do err=0 # shellcheck disable=SC2029 - ssh \ + ssh -o PasswordAuthentication=No \ -i "${master_build_server_identity}" \ -p "${master_build_server_port}" \ "${master_build_server_user}@${master_build_server}" \ @@ -1078,7 +1036,7 @@ while [ "${count}" -ne 0 ] && \ while true; do err=0 # shellcheck disable=SC2029 - ssh \ + ssh -o PasswordAuthentication=No \ -i "${master_build_server_identity}" \ -p "${master_build_server_port}" \ "${master_build_server_user}@${master_build_server}" \ @@ -1174,7 +1132,7 @@ while [ "${count}" -ne 0 ] && \ done -# remove the slave switch file if it exists (and if we are runnig on a slave) +# remove the slave switch file if it exists (and if we are running on a slave) if ! ${i_am_the_master}; then SLAVE=$(whoami) [ -f "/tmp/do-not-run-build-slave.$SLAVE" ] && rm "/tmp/do-not-run-build-slave.$SLAVE" diff --git a/bin/change-git-remotes b/bin/change-git-remotes index 9f9e4a5..fc50b7a 100755 --- a/bin/change-git-remotes +++ b/bin/change-git-remotes @@ -68,7 +68,7 @@ fi printf '%s\n' \ 'git://github.com/archlinux/svntogit-'"${git_name}" \ 'https://github.com/archlinux/svntogit-'"${git_name}" \ - 'https://git.archlinux.org/'"${git_name}" + 'git://git.archlinux.org/svntogit/'"${git_name}"'.git' ) ;; *) diff --git a/bin/check-mirrors b/bin/check-mirrors index d106201..d0b626c 100755 --- a/bin/check-mirrors +++ b/bin/check-mirrors @@ -5,6 +5,16 @@ if [ $# -eq 0 ]; then +# Create a lock file. + + exec 9> "${check_mirrors_lock_file}" + if ! verbose_flock 9; then + >&2 echo 'come back (shortly) later - I cannot lock check-mirrors.' + exit + fi + + echo 'updating mirrors from git...' >&2 + if [ -d "${releng_directory}/.git" ]; then git -C "${releng_directory}" remote update else @@ -54,6 +64,8 @@ if [ $# -eq 0 ]; then parallel -j10 "$0" "{}" > \ "${tmp_file}" + echo 'loading mirror data into database...' >&2 + # shellcheck disable=SC2016 { printf 'LOAD DATA LOCAL INFILE "%s" INTO TABLE `mirror_statuses` (' \ @@ -83,6 +95,8 @@ if [ $# -eq 0 ]; then } | \ mysql_run_query + echo 'done' >&2 + elif [ $# -eq 1 ]; then # check a single mirror url="$1" @@ -143,14 +157,16 @@ elif [ $# -eq 1 ]; then cnt=$( curl -s "${ip_flag}" "${url}archisos/" ) || has_isos=0 - for suffix in 'i686' 'dual'; do - # shellcheck disable=SC2059 - if ! printf '%s\n' "${cnt}" | \ - grep -qF "$(printf "$(date '+archlinux-%Y.%m.%%02d-'"${suffix}"'.iso\n')" $(seq 31))" -; then - has_isos=0 - break - fi - done +# doesn't really work: dual doesn't exist anymore and the other test sometimes fails, sometimes succeeds? +# let's assume the precense of the 'archisos' directory is enough +# for suffix in 'i686' 'dual'; do +# # shellcheck disable=SC2059 +# if ! printf '%s\n' "${cnt}" | \ +# grep -qF "$(printf "$(date '+archlinux-%Y.%m.%%02d-'"${suffix}"'.iso\n')" $(seq 31))" -; then +# has_isos=0 +# break +# fi +# done else has_isos=0 last_sync='0' diff --git a/bin/check-opcodes b/bin/check-opcodes deleted file mode 100755 index e8bb807..0000000 --- a/bin/check-opcodes +++ /dev/null @@ -1,199 +0,0 @@ -#!/bin/sh - -# shellcheck disable=SC2086,SC2119,SC2120 - -# shellcheck source=../lib/load-configuration -. "${0%/*}/../lib/load-configuration" - -usage( ) { - >&2 cat <<EOF - -check_opcodes: [options] [ -a <arch> ] <package> - -possible optons: - -h|--help: Show this help page - -a|--architecture: architecture family to check against, one of - i486, i686, pentium3 (meaning target architecture - the package should be runnable on) - -v|--verbose: Verbose output, print result of check for logs - -d|--debug: Debug output, used for development and testing - -EOF - exit 1 -} - -VERBOSE=0 -DEBUG=0 -EXIT_CODE=0 - -verbose( ) { - if test $VERBOSE = 1; then - echo "$@" - fi -} - -debug( ) { - if test $DEBUG = 1; then - echo "$@" - fi -} - -err( ) { - echo "ERROR: $*" - EXIT_CODE=1 -} - -tmp_dir=$(mktemp -d "${work_dir}/tmp.check-opcodes.XXXXXX") -trap 'rm -rf --one-file-system "${tmp_dir:?}"' EXIT - -ARCH=i686 - -while getopts ":vda:h-:" opt; do - case $opt in - -) - case "$OPTARG" in - help) - usage - ;; - verbose) - VERBOSE=1 - ;; - debug) - DEBUG=1 - ;; - *) - echo "ERROR: Invalid option: --$OPTARG" >&2 - usage - ;; - esac - ;; - h) - usage - ;; - v) - VERBOSE=1 - ;; - d) - DEBUG=1 - ;; - a) - ARCH=$OPTARG - ;; - \?) - echo "ERROR: Invalid option: -$OPTARG" >&2 - usage - ;; - esac -done - -shift $((OPTIND-1)) - -PACKAGE=$1 - -if test "$PACKAGE" = ""; then - echo "ERROR: Filename of a package required as argument" >&2 - usage - exit 1 -fi - -OPCODE_ARGS="" -case $ARCH in - i486) - OPCODE_ARGS='-r -a 386 -v' - ;; - i686) - OPCODE_ARGS='-s MMX -s SSE' - ;; -# TODO: pentium4 - pentium3) - OPCODE_ARGS='-s SSE2 -s SSE3' - ;; - *) - echo "ERROR: architecture must currently be one of i486, i686 and pentium3" >&2 - usage - exit 1 -esac - -debug "Unpacking $PACKAGE to $tmp_dir.." -bsdtar --no-fflags -x -C $tmp_dir -f $PACKAGE - -debug "Checking for architecture: $ARCH ($OPCODE_ARGS).." - -# shellcheck disable=SC2044 -for absfile in $(find $tmp_dir \( -regextype grep -regex '.*\.so\(\.[0-9.]\+\)\?' -type f \) -o \( -executable -type f \) ); do - file=$(basename $absfile) - relfile=${absfile#$tmp_dir} - debug "Checking file: $relfile" - if ! readelf -a $absfile > $tmp_dir/$file.elf 2>/dev/null; then - debug "readelf failed, ignoring file" - continue - fi - if ! objdump -f $absfile > $tmp_dir/$file.objdump 2>/dev/null; then - debug "objdump failed, ignoring file" - continue - fi - file $absfile > $tmp_dir/$file.file - - arch=$(grep ^architecture $tmp_dir/$file.objdump | sed 's/^architecture: //g' | cut -f 1 -d ,) - case $arch in - i386:x86-64) - arch='x86_64' - ;; - i386) - arch='x86' - ;; - *) - arch='unknown' - ;; - esac - debug " Objdump architecture: $arch" - - archelf=$(grep '^ \+Class' $tmp_dir/$file.elf | cut -f 2 -d : | tr -d ' ') - case $archelf in - ELF64) - archelf='x86_64' - ;; - ELF32) - archelf='x86' - ;; - *) - archelf='unknown' - ;; - esac - debug " Readelf architecture: $archelf" - - if test $arch != $archelf; then - err "ERROR: $file ambigous architecture information (objdump: $arch, ELF: $archelf)" - fi - - if test $arch = "x86_64"; then - err "ERROR: $file is a 64-bit library!" - continue - fi - - objdump -M intel -d $absfile > $tmp_dir/$file.asm - bad_opcodes=$(${base_dir}/bin/opcode $OPCODE_ARGS -m 1 < $tmp_dir/$file.asm | wc -l) - if test $bad_opcodes != 0; then - case $ARCH in - i486) - err "$relfile is not built for plain i486 opcodes" - ;; - i686) - err "$relfile contains MMX, SSE or newer opcodes" - ;; - pentium3) - err "$relfile contains SSE2 or newer opcodes" - ;; - esac - if test $DEBUG = 1; then - ${base_dir}/bin/opcode $OPCODE_ARGS -B 2 -A 2 < $tmp_dir/$file.asm - fi - else - if test $VERBOSE = 1; then - verbose "OK: $relfile fullfills architecture constraint for $ARCH" - fi - fi - -done - -exit $EXIT_CODE diff --git a/bin/cleanup b/bin/cleanup index 57c4e07..14d08ac 100755 --- a/bin/cleanup +++ b/bin/cleanup @@ -19,6 +19,14 @@ if [ -s "${work_dir}/build-master-sanity" ]; then exit fi +# Lock the database - we should not run in parallel with db-update. +exec 9> "${package_database_lock_file}" +# shellcheck disable=SC2086 +if ! verbose_flock -n 9; then + >&2 echo 'come back (shortly) later - I cannot lock package database.' + exit 0 +fi + # only keep newest logs per failed package and fail_reason # shellcheck disable=SC2016 @@ -68,6 +76,9 @@ fi rm "${build_log_directory}/error/${file}" done +# Release database lock. +flock -u 9 || true + # only keep namcap logs of last 2 weeks for succeeded packages find "${build_log_directory}/success" -maxdepth 1 -type f -mtime +14 \ -not -exec zgrep -q '^+.*ELF file .* has text relocations' '{}' \; \ diff --git a/bin/create-build-support-package b/bin/create-build-support-package index 09374ec..d786dcc 100755 --- a/bin/create-build-support-package +++ b/bin/create-build-support-package @@ -7,6 +7,10 @@ # TODO: use the intention-queue +# TODO: add the possibility to add an "external" package - TBD: How to +# create / Where to take from database information (e.g. +# package_sources). + # shellcheck disable=SC2016 usage() { >&2 echo 'usage:' @@ -169,7 +173,7 @@ if [ -n "${source_package}" ]; then fi new_pkg="${pkg%-*-*-*}" - new_pkg="${new_pkg}-shim${pkg#${new_pkg}}" + new_pkg="${new_pkg}-shim${pkg#"${new_pkg}"}" failsafe_rsync \ "${master_mirror_rsync_directory}/pool/${pkg}" \ diff --git a/bin/db-update b/bin/db-update index 88c567d..2d0f50e 100755 --- a/bin/db-update +++ b/bin/db-update @@ -683,12 +683,10 @@ mysql_query_update_replaced_bpir() { # somewhat inaccurate { - printf '{\n' - printf ' mysql_run_query' - printf ' | sort -u' - printf ' >> "%s/rm"\n' \ + printf 'mysql_run_query' + printf ' >> "%s/rm"' \ "${perma_tmp_dir}" - printf '} <<END_OF_MYSQL_QUERY\n' + printf ' <<END_OF_MYSQL_QUERY\n' printf 'CREATE TEMPORARY TABLE `replaced_bpir` (`id` BIGINT, UNIQUE KEY (`id`));\n' printf 'CREATE TEMPORARY TABLE `moved_bpir` (`id` BIGINT, `new_repository` MEDIUMINT, UNIQUE KEY (`id`));\n' @@ -738,8 +736,10 @@ mysql_query_update_replaced_bpir() { # and push our local *.db.tar.gz via rsync while read -r arch repo; do { - printf 'recompress_gz "%s"' \ - "${tmp_dir}" + printf 'mkdir -p "%s/recompress_gz.tmp"\n' \ + "${perma_tmp_dir}" + printf 'recompress_gz "%s/recompress_gz.tmp"' \ + "${perma_tmp_dir}" for suffix in '' '.old'; do printf ' "%s/dbs/%s/%s/%s."*".tar.gz%s"' \ "${perma_tmp_dir}" \ diff --git a/bin/delete-packages b/bin/delete-packages index 2bb3072..0026c88 100755 --- a/bin/delete-packages +++ b/bin/delete-packages @@ -160,7 +160,8 @@ export TMPDIR="${tmp_dir}" mysql_join_binary_packages_in_repositories_binary_packages mysql_join_binary_packages_in_repositories_repositories mysql_join_repositories_architectures - printf ' WHERE CONCAT(' + printf ' WHERE `repositories`.`is_on_master_mirror`' + printf ' AND CONCAT(' printf '`architectures`.`name`,"/",' printf '`repositories`.`name`,"/",' printf '`binary_packages`.`pkgname`' diff --git a/bin/generate-key-graph b/bin/generate-key-graph index 3c5063f..b409d42 100755 --- a/bin/generate-key-graph +++ b/bin/generate-key-graph @@ -23,7 +23,7 @@ trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT # shellcheck disable=SC2046 ${master_mirror_rsync_command} $( ls_master_mirror pool \ - | grep '^archlinux32-keyring\(-transition\)\?\(-[^-]\+\)\{3\}\.pkg\.tar\.zst$' \ + | grep '^archlinux32-keyring\(-[^-]\+\)\{3\}\.pkg\.tar\.zst$' \ | sed 's#^#'"${master_mirror_rsync_directory}"'/pool/#' ) "${tmp_dir}/" diff --git a/bin/get-assignment b/bin/get-assignment index 6abfaef..8b399a3 100755 --- a/bin/get-assignment +++ b/bin/get-assignment @@ -96,6 +96,7 @@ if ! verbose_flock -s -n 8; then fi clean_up() { + # shellcheck disable=SC2317 rm -rf --one-file-system "${tmp_dir}" } @@ -200,16 +201,15 @@ while [ -s "${work_dir}/forced-package-builds.${slave}" ]; do fi done -# a package with [all dependencies met (or unsuccessfully built) or which is part of a loop] -# and which is currently not being built, ordered by: +# a package with [all dependencies met (or unsuccessfully built) or which is part of a loop], +# which is currently not being built and which has the highest priority, ordered by: # 1: we requested it # 2: tool chain priority -# 3: its priority -# 4: was built the least times -# 5: architecture matches (or the slave is from the majority architecture) -# 6: is part of a loop -# 7: has the oldes package source -# 8: build_assignment id +# 3: was built the least times +# 4: architecture matches (or the slave is from the majority architecture) +# 5: is part of a loop +# 6: has the oldes package source +# 7: build_assignment id next_building=$( # shellcheck disable=SC2016 { @@ -260,6 +260,21 @@ next_building=$( printf ' AND `architectures`.`name` = from_base64("%s");\n' \ "${arch}" + printf 'SET @`max_priority`=(' + printf 'SELECT MAX(`build_assignments`.`priority`)' + printf ' FROM `considered_build_assignments`' + printf ' JOIN `build_assignments`' + printf ' ON `build_assignments`.`id`=`considered_build_assignments`.`id`' + printf ');\n' + + printf 'DELETE `considered_build_assignments`' + printf ' FROM `considered_build_assignments`' + printf ' JOIN `build_assignments`' + printf ' ON `build_assignments`.`id`=`considered_build_assignments`.`id`' + printf ' WHERE `build_assignments`.`priority`<@`max_priority`' + printf ';\n' + + printf 'INSERT IGNORE INTO `considered_build_assignments_2` (`id`)' printf ' SELECT `considered_build_assignments`.`id`' printf ' FROM `considered_build_assignments`;\n' @@ -539,7 +554,6 @@ next_building=$( # 1: in toolchain, should be built later # 2: not in toolchain printf 'IFNULL(`toolchain_query`.`priority`,2),' - printf '`build_assignments`.`priority` DESC,' printf 'IFNULL(`latest_failed_builds`.`count`,0),' printf 'IF(' printf '`architectures`.`id`=%s' \ diff --git a/bin/get-package-updates b/bin/get-package-updates index 8e7e4ef..b067233 100755 --- a/bin/get-package-updates +++ b/bin/get-package-updates @@ -21,7 +21,12 @@ usage() { >&2 echo ' (yyyy-mm-ddThh:mm:ss). Conflicts -n.' >&2 echo ' -h|--help: Show this help and exit.' >&2 echo ' -i|--ignore-insanity:' - >&2 echo ' Do not abort when insane.' + >&2 echo ' Do not abort when insane.' + >&2 echo ' -m|--max-upstream-packages $number:' + >&2 echo ' Do not update more than $number upstream packages.' + >&2 echo ' Do not update git head of state repository.' + >&2 echo ' USE WITH CAUTION: This may remove packages, if they' + >&2 echo ' were moved. Always do a final run without -m.' >&2 echo ' -n|--no-pull: Do not pull git repos, merely reorder build list.' >&2 echo ' Conflicts -d.' >&2 echo ' -r|--recent-modifications:' @@ -33,10 +38,11 @@ usage() { } eval set -- "$( - getopt -o d:hinrw \ + getopt -o d:him:nrw \ --long date: \ --long help \ --long ignore-insanity \ + --long max-upstream-packages: \ --long no-pull \ --long recent-modifications \ --long wait \ @@ -47,6 +53,7 @@ eval set -- "$( block_flag='-n' date_time='' ignore_insanity=false +max_upstream_packages='' pull=true recent_modifications=false @@ -63,6 +70,10 @@ do -i|--ignore-insanity) ignore_insanity=true ;; + -m|--max-upstream-packages) + shift + max_upstream_packages="$1" + ;; -n|--no-pull) pull=false ;; @@ -106,16 +117,22 @@ if [ -s "${work_dir}/build-master-sanity" ]; then fi fi -# delete_package arch package +# delete_package arch package repository # mark $arch/$package for deletion + +# shellcheck disable=SC3043 delete_package() { + local architecture="$1" + local pkgbase="$2" + local repository="$3" + >&2 printf 'delete_package %s %s %s\n' "${architecture}" "${pkgbase}" "${repository}" # shellcheck disable=SC2016 query_delete_packages=$( printf '`architectures` AS `d_a`' printf ' JOIN `architecture_compatibilities` AS `a_c`' printf ' ON `a_c`.`runs_on`=`d_a`.`id`' printf ' AND `d_a`.`name`=from_base64("%s")' \ - "$(printf '%s' "$1" | base64 -w0)" + "$(printf '%s' "${architecture}" | base64 -w0)" printf ' JOIN `build_assignments`' printf ' ON (`a_c`.`built_for`=`build_assignments`.`architecture`' # "any" references all architectures, but this is not represented @@ -125,9 +142,12 @@ delete_package() { printf ' OR `d_a`.`name`="any")' mysql_join_build_assignments_package_sources printf ' AND `package_sources`.`pkgbase`=from_base64("%s")' \ - "$(printf '%s' "$2" | base64 -w0)" + "$(printf '%s' "${pkgbase}" | base64 -w0)" mysql_join_build_assignments_binary_packages mysql_join_binary_packages_binary_packages_in_repositories + mysql_join_package_sources_upstream_repositories + printf ' AND `upstream_repositories`.`name` LIKE from_base64("%s")' \ + "$(printf '%s' "${repository}" | base64 -w0)" ) # shellcheck disable=SC2016 { @@ -165,6 +185,8 @@ delete_package() { printf 'COMMIT;\n' + # no need to remove the binary_package, because it is now on the + # deletion-lists printf 'DELETE `binary_packages_in_repositories`' printf ' FROM %s' "${query_delete_packages}" mysql_join_binary_packages_in_repositories_repositories @@ -186,11 +208,16 @@ something_new=false for repo in ${repo_names}; do eval repo_path='"${repo_paths__'"${repo}"'}"' - # Update git repositories (official packages, community packages and the repository of package customizations). + if [ "${repo}" = 'archlinux32' ]; then + branch='master' + else + branch='main' + fi + # Update git repositories (upstream state and our package customizations). if [ -d "${repo_path}/.git" ]; then git -C "${repo_path}" pull --ff-only else - git -C "${repo_path}" fetch origin master:master + git -C "${repo_path}" fetch origin "${branch}:${branch}" fi || \ true # read previous git revision numbers from database. @@ -238,18 +265,9 @@ if ${pull} && \ exit fi -# Create a lock file for build list. - -exec 9> "${build_list_lock_file}" -# shellcheck disable=SC2086 -if ! verbose_flock ${block_flag} 9; then - >&2 echo 'come back (shortly) later - I cannot lock build list.' - exit -fi - -exec 8> "${sanity_check_lock_file}" +exec 9> "${sanity_check_lock_file}" # shellcheck disable=SC2086 -if ! verbose_flock -s ${block_flag} 8; then +if ! verbose_flock -s ${block_flag} 9; then >&2 echo 'come back (shortly) later - sanity-check running.' exit fi @@ -272,227 +290,203 @@ echo 'Check modified packages from the last update, and put them to the build li # If a package is deleted, remove from the rebuild list, and add it to the deletion list. # If a new package is added, then ensure that it's not on the deletion list. -# shellcheck disable=SC2016 -{ - printf 'SELECT DISTINCT' - printf ' `package_sources`.`pkgbase`,' - printf '`upstream_repositories`.`name`,' - printf 'IF(`build_assignments`.`architecture`=%s,"any","x86_64")' \ - "${architecture_ids__any}" - printf ' FROM `binary_packages`' - mysql_join_binary_packages_binary_packages_in_repositories - mysql_join_binary_packages_build_assignments - mysql_join_build_assignments_package_sources - mysql_join_package_sources_upstream_repositories - printf ' WHERE `binary_packages_in_repositories`.`repository`=%s;\n' \ - "${repository_ids__any_build_list}" -} | \ - mysql_run_query | \ - sed ' - s@^\(\S*\)\t\(\S*\)\t\(\S*\)$@s,^\\(.\\t\1/repos/\2-\3/\\)[^/]\\+$,\\1PKGBUILD,\ns,^\\(.\\t\2/\1/\\)[^/]\\+$,\\1PKGBUILD,@ - ' > \ - "${tmp_dir}/trigger-rebuild-on-any-file-sed-expression" - { - # trigger rebuild of packages removed from blacklist + directories=$( + # shellcheck disable=SC2154 + git -C "${repo_paths__state}" archive "${new_repo_revisions__state}" \ + | tar -t \ + | cut -d/ -f1 \ + | grep -vF -- '-testing-' \ + | grep -vF -- '-staging-' \ + | sort -u + ) # shellcheck disable=SC2016 { - printf 'SELECT `package_sources`.`pkgbase`,`upstream_repositories`.`name`,`git_repositories`.`name`' + printf 'SELECT DISTINCT `package_sources`.`pkgbase`,' + printf '`package_sources`.`git_revision`,' + printf '`upstream_repositories`.`name`' printf ' FROM `package_sources`' mysql_join_package_sources_upstream_repositories - mysql_join_upstream_repositories_git_repositories - printf ' WHERE `package_sources`.`pkgbase` IN (' + mysql_join_package_sources_build_assignments + mysql_join_build_assignments_binary_packages + mysql_join_binary_packages_binary_packages_in_repositories + printf ' AND NOT `binary_packages_in_repositories`.`is_to_be_deleted`' + } \ + | mysql_run_query \ + | tr '\t' ' ' \ + | sort -u \ + > "${tmp_dir}/mysql-packages" + for directory in ${directories}; do # shellcheck disable=SC2154 - git -C "${repo_paths__archlinux32}" diff --name-status "${old_repo_revisions__archlinux32}" "${new_repo_revisions__archlinux32}" -- 'blacklist' | \ - sed ' - s@^D\tblacklist/[^/]\+/[^/]\+/@@ - t - d - ' | \ - base64_encode_each | \ - sed ' - s/^/from_base64("/ - s/$/")/ - ' | \ - tr '\n' ',' - printf '"");\n' - } | \ - mysql_run_query | \ - while read -r pkgbase repository git_repository; do - eval 'git_rev="${new_repo_revisions__'"${git_repository}"'}"' - eval 'git_dir="${repo_paths__'"${git_repository}"'}"' - # TODO: maybe, we want to exclude our own packages here, too? But why - # would they be black listed in the first place? - # shellcheck disable=SC2154 - if git -C "${git_dir}" archive "${git_rev}" -- "${pkgbase}/repos" \ - | tar -tf - \ - | grep -q -- '-\(any\|x86_64\)/PKGBUILD$'; then - printf 'A %s %s %s\n' \ - "${pkgbase}" \ - "${git_rev}" \ - "${repository}" - fi - done - # actual updates/removes - for repo in ${repo_names}; do - eval repo_path='"${repo_paths__'"${repo}"'}"' - eval old_repo_revision='"${old_repo_revisions__'"${repo}"'}"' - eval new_repo_revision='"${new_repo_revisions__'"${repo}"'}"' - # if old revision unknown, mimic "git diff"-output + git -C "${repo_paths__state}" archive "${new_repo_revisions__state}" -- "${directory}" \ + | tar -Ox \ + | grep -v '^\S\+\( \S\+\)\1\1$' \ + | grep ' [0-9a-f]\{40\}$' \ + | cut -d' ' -f1,4 \ + | sed ' + s@$@ '"${directory%-*}"'@ + ' + done \ + | grep -v '^lib32-' \ + | sort -u \ + > "${tmp_dir}/upstream-packages" + diff "${tmp_dir}/mysql-packages" "${tmp_dir}/upstream-packages" \ + | grep '^>' \ + | awk '{print $3 " " $2 " " $4}' \ + | sort -k2,2 -k3,3 \ + | uniq -uf1 \ + | while read -r git_revision pkgbase repository; do # shellcheck disable=SC2154 - if [ "${old_repo_revision}" = "NONE" ]; then - git -C "${repo_path}" archive --format=tar HEAD | \ - tar -t | \ - sed 's|^|A\t|' + if git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" -- "${repository}/${pkgbase}" >/dev/null 2>&1; then + mod_git_revision="${new_repo_revisions__archlinux32}" else - git -C "${repo_path}" diff --no-renames --name-status "${old_repo_revision}" "${new_repo_revision}" - fi | \ - # rename any file to "PKGBUILD" for packages on the build-list - sed -f "${tmp_dir}/trigger-rebuild-on-any-file-sed-expression" | \ - # only track changes in PKGBUILDs - grep '/PKGBUILD$' | \ - if [ "${repo}" = "archlinux32" ]; then - # modify the directory structure from the modifiaction-repository - # to the one of an original source repository - # shellcheck disable=SC2016 - sed 's|^\(.\t\)\([^/]\+\)/\([^/]\+\)/\(.\+\)$|\2 \1\3/repos/\2-x86_64/\4|' | \ - while read -r pkg_repo rest; do - repo=$(find_git_repository_to_package_repository "${pkg_repo}") - eval 'printf '"'"'%s %s\n'"'" \ - "$(printf '"${new_repo_revisions__%s}"' "${repo}")" \ - "'${rest}'" - done - else - sed "s|^|${new_repo_revision} |" - fi | \ - grep '^\S\+ .\s[^/]\+/repos/[^/]\+/PKGBUILD$' | \ - # ignore i686 - grep -- '-\(any\|x86_64\)/PKGBUILD$' | \ - # ignore staging and testing - grep -v -- '[-/]\(staging\|testing\|unstable\)-[^/]\+/PKGBUILD$' | \ - sed 's|^\(\S\+\) \(.\)\t\([^/]\+\)/repos/\([^/]\+\)-[^/-]\+/PKGBUILD$|\2 \3 \1 \4|' - done | \ - sort -u | \ - sed ' - s|^D\s|0 \0| - t - s|^[AM]\s|1 \0| - t - s|^|2 | - ' | \ - sort -k1,1 | \ - sed 's|^[012] ||' -} | \ - while read -r mode package git_revision repository; do - if [ "${mode}" = 'D' ]; then - # deleted PKGBUILD - # shellcheck disable=SC2154 - git_revision="${new_repo_revisions__archlinux32}" - found_package=false - # we need to test archlinux32 last, because otherwise - # find_package_repository_to_package might look in the wrong git - # repository of a package w/o upstream - for repository in ${repo_names} archlinux32; do - eval 'repo_path="${repo_paths__'"${repository}"'}"' - if [ "${repository}" = "archlinux32" ]; then - if git -C "${repo_path}" archive "${new_repo_revisions__archlinux32}" 2> /dev/null | \ - tar -t 2> /dev/null | \ - grep -q '^[^/]\+/'"$(str_to_regex "${package}")"'/PKGBUILD$'; then - found_package=true - fi - else - # shellcheck disable=SC2154 - if eval 'git -C "${repo_path}" archive "${new_repo_revisions__'"${repository}"'}" -- "${package}/repos"' 2> /dev/null | \ - tar -t --wildcards "${package}/repos/*/PKGBUILD" 2> /dev/null | \ - cut -d/ -f3 | \ - grep -v 'staging\|testing\|-unstable' | \ - grep -vq -- '-i686$'; then - eval 'git_revision="${new_repo_revisions__'"${repository}"'}"' - found_package=true - break - fi - fi - done - if ${found_package}; then - mode='M' - repository=$( - find_package_repository_to_package "${package}" "${repository}" "${git_revision}" - ) - else - delete_package 'any' "${package}" - continue - fi + mod_git_revision='0000000000000000000000000000000000000000' fi - if [ "${mode}" = 'A' ] || [ "${mode}" = 'M' ]; then - # shellcheck disable=SC2016 - { - # delete old binary packages which are not yet built or on the - # deletion list - mysql_query_delete_packages \ - '`package_sources`.`pkgbase`=from_base64("'"$( - printf '%s' "${package}" | \ - base64 -w0 - )"'")' \ - '`repositories`.`stability` IN ('"${repository_stability_ids__unbuilt}"','"${repository_stability_ids__forbidden}"')' - # remove is-to-be-deleted marker from old binary packages - printf 'UPDATE `binary_packages_in_repositories`' - mysql_join_binary_packages_in_repositories_binary_packages - mysql_join_binary_packages_build_assignments - mysql_join_build_assignments_package_sources - printf ' SET `binary_packages_in_repositories`.`is_to_be_deleted`=0' - printf ' WHERE `package_sources`.`pkgbase`=from_base64("%s");\n' \ - "$( - printf '%s' "${package}" | \ - base64 -w0 - )" - } | \ - mysql_run_query - printf '%s\n' "${package}" >> "${tmp_dir}/modified-packages" - # shellcheck disable=SC2154 - printf '%s ' "${package}" "${git_revision}" "${new_repo_revisions__archlinux32}" "${repository}" >&2 -# TODO: sometimes we schedule the identical package twice (once "normal" -# and once, because we found the deleted package elsewhere) - this could -# be avoided - mysql_generate_package_metadata "${repository_ids__any_to_be_decided}" "${package}" "${git_revision}" "${new_repo_revisions__archlinux32}" "${repository}" - printf '\n' >&2 - continue + printf '%s %s %s %s\n' "${pkgbase}" "${repository}" "${git_revision}" "${mod_git_revision}" + done \ + | if [ -n "${max_upstream_packages}" ]; then + head -n"${max_upstream_packages}" + else + cat + fi + # shellcheck disable=SC2154 + git -C "${repo_paths__archlinux32}" diff "${old_repo_revisions__archlinux32}" "${new_repo_revisions__archlinux32}" --name-status \ + | tr '\t/' ' ' \ + | grep '^[AM]' \ + | cut -d' ' -f2,3 \ + | grep -v '^blacklist ' \ + | while read -r repository pkgbase; do + git_revision=$( + # shellcheck disable=SC2046 + git -C "${repo_paths__state}" archive "${new_repo_revisions__state}" -- $( + printf '%s\n' "${directories}" \ + | grep '^'"${repository}"'-' + ) \ + | tar -Ox \ + | sort -k1,1 \ + > "${tmp_dir}/git-revisions" + echo "${pkgbase}" \ + | join -1 1 -2 1 -o 1.4 "${tmp_dir}/git-revisions" - + ) + if [ -z "${git_revision}" ]; then + git_revision='0000000000000000000000000000000000000000' fi - - >&2 echo "unknown git diff mode '${mode}'" - exit 1 + if [ ${#git_revision} != 40 ] \ + || printf '%s\n' "${git_revision}" \ + | grep -vq '[0-9]'; then + >&2 printf 'invalid git revision "%s"\n' "${git_revision}" + exit 1 + fi + printf '%s %s %s %s\n' "${pkgbase}" "${repository}" "${git_revision}" "${new_repo_revisions__archlinux32}" done +} \ +| sort -u \ +| sort -k1,1 -k2,2 \ +> "${tmp_dir}/modified-packages" + +errors=$( + awk '{print $3 " " $4 " " $1 " " $2}' \ + < "${tmp_dir}/modified-packages" \ + | uniq -Df2 +) +if [ -n "${errors}" ]; then + >&2 printf 'Some packages are scheduled with different versions - this should not happen:\n' + >&2 printf '%s\n' "${errors}" + exit 1 +fi -if [ -s "${tmp_dir}/modified-packages" ] || ! ${pull}; then - echo 'Delete black-listed packages.' - if [ -s "${tmp_dir}/modified-packages" ]; then - sort -u "${tmp_dir}/modified-packages" --output "${tmp_dir}/modified-packages" +echo 'Mark to be deleted packages for removal' + +cut -d' ' -f1,3 "${tmp_dir}/mysql-packages" \ +| sort -u \ +| sponge "${tmp_dir}/mysql-packages" + +{ + cut -d' ' -f1,3 "${tmp_dir}/upstream-packages" + git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" \ + | tar -t \ + | grep -v '^blacklist/' \ + | tr '/' ' ' \ + | awk '{print $2 " " $1}' +} \ +| sort -u \ +| sponge "${tmp_dir}/upstream-packages" + +diff "${tmp_dir}/mysql-packages" "${tmp_dir}/upstream-packages" \ +| grep '^<' \ +| cut -d' ' -f2,3 \ +| while read -r pkgbase repository; do + delete_package 'any' "${pkgbase}" "${repository}" +done + +echo 'Insert updated packages' + +while read -r pkgbase repository git_revision mod_git_revision; do + if test "$repository" = "kde-unstable"; then + continue fi - # extract black-listed packages - git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" -- 'blacklist' | \ - tar -t 'blacklist' | \ - sed ' - s@^blacklist/\([^/]\+\)/[^/]\+/\([^/]\+\)$@\1\t\2@ - t - d - ' | \ - expand_blacklist_architectures "${tmp_dir}/architecture-compatibilities" | \ - if [ -s "${tmp_dir}/modified-packages" ]; then - sort -k2,2 | \ - join -1 1 -2 2 -o 2.1,2.2 "${tmp_dir}/modified-packages" - - sed ' - /^lib32-/ s/^/any / - t - d - ' "${tmp_dir}/modified-packages" - else - cat - fi | \ - sort -u | \ - while read -r arch pkgbase; do - delete_package "${arch}" "${pkgbase}" - done - rm "${tmp_dir}/architecture-compatibilities" -fi + if test "$repository" = "gnome-unstable"; then + continue + fi + # shellcheck disable=SC2016 + { + # delete old binary packages which are not yet built or on the + # deletion list + mysql_query_delete_packages \ + '`package_sources`.`pkgbase`=from_base64("'"$( + printf '%s' "${pkgbase}" \ + | base64 -w0 + )"'")' \ + '`repositories`.`stability` IN ('"${repository_stability_ids__unbuilt}"','"${repository_stability_ids__forbidden}"')' + # remove is-to-be-deleted marker from old binary packages + printf 'UPDATE `binary_packages_in_repositories`' + mysql_join_binary_packages_in_repositories_binary_packages + mysql_join_binary_packages_build_assignments + mysql_join_build_assignments_package_sources + mysql_join_package_sources_upstream_repositories + printf ' SET `binary_packages_in_repositories`.`is_to_be_deleted`=0' + printf ' WHERE `package_sources`.`pkgbase`=from_base64("%s")' \ + "$( + printf '%s' "${pkgbase}" \ + | base64 -w0 + )" + printf ' AND `upstream_repositories`.`name`=from_base64("%s");\n' \ + "$( + printf '%s' "${repository}" \ + | base64 -w0 + )" + } \ + | mysql_run_query + # shellcheck disable=SC2154 + >&2 printf '%s ' "${pkgbase}" "${git_revision}" "${mod_git_revision}" "${repository}" + mysql_generate_package_metadata "${repository_ids__any_to_be_decided}" "${pkgbase}" "${git_revision}" "${mod_git_revision}" "${repository}" + >&2 printf '\n' +done \ +< "${tmp_dir}/modified-packages" + +echo 'remove blacklisted packages' + +{ + git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" -- 'blacklist' \ + | tar -t 'blacklist' \ + | sed ' + s@^blacklist/\([^/]\+\)/[^/]\+/\([^/]\+\)$@\1 \2@ + t + d + ' \ + | sort -k2,2 \ + | join -1 1 -2 2 -o 2.1,2.2 "${tmp_dir}/modified-packages" - + git -C "${repo_paths__archlinux32}" diff --name-status "${old_repo_revisions__archlinux32}" "${new_repo_revisions__archlinux32}" -- 'blacklist' \ + | sed ' + s@^[AM]\sblacklist/\([^/]\+\)/[^/]\+/\([^/]\+\)$@\1 \2@ + t + d + ' +} \ +| sort -u \ +| while read -r arch pkgbase; do + delete_package "${arch}" "${pkgbase}" '%' +done echo 'Done - mark decisions as final.' @@ -539,6 +533,10 @@ echo 'Done - mark decisions as final.' # update hashes of repositories in mysql database for repo in ${repo_names}; do + if [ -n "${max_upstream_packages}" ] \ + && [ "${repo}" = 'state' ]; then + continue + fi printf 'UPDATE `git_repositories`' printf ' SET `git_repositories`.`head`=from_base64("%s")' \ "$(eval 'printf '"'"'%s'"'"' "${new_repo_revisions__'"${repo}"'}"' | base64 -w0)" diff --git a/bin/get-source-info b/bin/get-source-info new file mode 100755 index 0000000..73dc504 --- /dev/null +++ b/bin/get-source-info @@ -0,0 +1,83 @@ +#!/bin/sh + +# shellcheck disable=SC2119,SC2120 + +# get-source-info <package> <repository> <git_revision> <mod_git_revision> +# create .SRCINFO from PKGBUILD within git repositories, output to stdout, +# cache it on https://mirror.archlinux32.org/pkginfo + +# build .SRCINFO if necessary, fetch it from cache when already computed, +# +# this can be used to cache srcinfo (especially for blacklisted packages) +# as it uses quite some time to compute + +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" + +# shellcheck disable=SC2016 +usage() { + >&2 echo '' + >&2 echo 'get-source-info <package> <repository> <git_revision> <mod_git_revision> [options]:' + >&2 echo ' get package srcinfo' + >&2 echo '' + >&2 echo 'possible options:' + >&2 echo ' -c|--cache:' + >&2 echo ' Respect the cache when fetching pkginfo' + >&2 echo ' -h|--help:' + >&2 echo ' Show this help and exit.' + [ -z "$1" ] && exit 1 || exit "$1" +} + +eval set -- "$( + getopt -o hc \ + --long help \ + --long cache \ + -n "$(basename "$0")" -- "$@" || \ + echo usage + )" + +respect_cache=0 + +while true +do + case "$1" in + -h|--help) + usage 0 + ;; + -c|--cache) + respect_cache=1 + ;; + --) + shift + break + ;; + *) + >&2 printf 'Whoops, forgot to implement option "%s" internally.\n' \ + "$1" + exit 42 + ;; + esac + shift +done + +if [ $# -ne 4 ]; then + usage 1 +fi + +tmp_dir=$(mktemp -d "${work_dir}/tmp.get-source-info.XXXXXX") +trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT + +PACKAGE="$1" +REPOSITORY="$2" +GIT_REVISION="$3" +MOD_GIT_REVISION="$4" +SRCINFO="${tmp_dir}/SRCINFO" + +if [ "${respect_cache}" = 1 ]; then + curl -LSs "https://buildmaster.archlinux32.org/pkginfo/${PACKAGE}=${REPOSITORY}=${GIT_REVISION}=${MOD_GIT_REVISION}" \ + >"${SRCINFO}" +else + make_source_info "${PACKAGE}" "${REPOSITORY}" "${GIT_REVISION}" "${MOD_GIT_REVISION}" "${SRCINFO}" +fi + +cat "${SRCINFO}" diff --git a/bin/harvest-commit-times b/bin/harvest-commit-times index a978b41..9c6b0eb 100755 --- a/bin/harvest-commit-times +++ b/bin/harvest-commit-times @@ -12,13 +12,15 @@ usage() { >&2 echo ' sources from git and put them into the database' >&2 echo '' >&2 echo 'possible options:' + >&2 echo ' -f|--force: Do not abort on error.' >&2 echo ' -h|--help: Show this help and exit.' >&2 echo ' -w|--wait: If necessary, wait for lock blocking.' [ -z "$1" ] && exit 1 || exit "$1" } eval set -- "$( - getopt -o hw \ + getopt -o fhw \ + --long force \ --long help \ --long wait \ -n "$(basename "$0")" -- "$@" || \ @@ -26,9 +28,13 @@ eval set -- "$( )" block_flag='-n' +force=false; while true; do case "$1" in + -f|--force) + force=true + ;; -h|--help) usage 0 ;; @@ -76,9 +82,9 @@ trap 'rm "${tmp_file}"' EXIT if ! ${i_am_the_master}; then tmp_remote_file=$( - ssh buildmaster "mktemp 'tmp.harvest-commit-times.remotely.XXXXXXXXXX' --tmpdir" + ssh -o PasswordAuthentication=No buildmaster "mktemp 'tmp.harvest-commit-times.remotely.XXXXXXXXXX' --tmpdir" ) - trap 'rm "${tmp_file}"; ssh buildmaster rm "${tmp_remote_file}"' EXIT + trap 'rm "${tmp_file}"; ssh -o PasswordAuthentication=No buildmaster rm "${tmp_remote_file}"' EXIT fi while true; do @@ -91,43 +97,44 @@ while true; do printf '`package_sources`.`git_revision`,' printf '`package_sources`.`mod_git_revision`,' printf '`upstream_repositories`.`name`,' - printf '`git_repositories`.`name`' + printf 'IF(`build_assignments`.`architecture`=%s,"any","x86_64")' "${architecture_ids__any}" printf ' FROM `package_sources`' mysql_join_package_sources_upstream_repositories - mysql_join_upstream_repositories_git_repositories + mysql_join_package_sources_build_assignments printf ' WHERE `package_sources`.`commit_time`="0000-00-00 00:00:00"' printf ' AND `package_sources`.`uses_upstream`' - if ! ${i_am_the_master}; then - printf ' ORDER BY RAND()' - fi + printf ' ORDER BY RAND()' printf ' LIMIT 10' - } | \ - mysql_run_query 'unimportant' | \ - sponge | \ - while read -r id pkgbase git_revision mod_git_revision repository git_repository; do - eval 'git_directory="${repo_paths__'"${git_repository}"'}"' - find_pkgbuilds "${pkgbase}" "${repository}" "${git_repository}" "${git_revision}" "${mod_git_revision}" - commit_time=$( - # shellcheck disable=SC2154 - git -C "${git_directory}" log -n 1 --pretty=format:%ct "${git_revision}" -- "${PKGBUILD}" - ) - if [ -n "${commit_time}" ]; then - printf '%s\t%s\n' \ - "${id}" \ - "${commit_time}" - else - >&2 printf 'Package source %s is not available in git.\n' \ - "${id}" + } \ + | mysql_run_query 'unimportant' \ + | sponge \ + | while read -r id pkgbase git_revision mod_git_revision repository architecture; do + commit_time=$( + # shellcheck disable=SC2154 + git -C "${repo_paths__state}" log -n 1 --pretty=format:%ct HEAD -- "${repository}-${architecture}/${pkgbase}" + ) + if [ -n "${commit_time}" ]; then + printf '%s\t%s\n' \ + "${id}" \ + "${commit_time}" + else + >&2 printf 'Package source %s is not available in git:\n' \ + "${id}" + >&2 printf '%s ' \ + "${pkgbase}" "${git_revision}" "${mod_git_revision}" "${repository}" "${architecture}" + >&2 printf '\n' + if ! ${force}; then exit 2 fi - done > \ - "${tmp_file}" + fi + done > \ + "${tmp_file}" >&2 printf '.' if [ -s "${tmp_file}" ]; then if ! ${i_am_the_master}; then - ssh buildmaster 'cat > "'"${tmp_remote_file}"'"' < \ + ssh -o PasswordAuthentication=No buildmaster 'cat > "'"${tmp_remote_file}"'"' < \ "${tmp_file}" fi # shellcheck disable=SC2016 @@ -149,7 +156,7 @@ while true; do if ${i_am_the_master}; then mysql_run_query 'unimportant' else - ssh buildmaster 'mysql buildmaster -N --raw --batch' + ssh -o PasswordAuthentication=No buildmaster 'mysql buildmaster -N --raw --batch' fi else >&2 printf '\n' diff --git a/bin/ii-watch b/bin/ii-watch index ae008c4..6ae30c0 100755 --- a/bin/ii-watch +++ b/bin/ii-watch @@ -18,7 +18,7 @@ while pgrep -x 'ii' >/dev/null && \ # this avoids missing modifications during our last execution if [ "$(date +%s)" -ge ${next_connection_check} ]; then # request this more often on startup - if [ ${last_seen} -ne 0 ]; then + if [ "${last_seen}" -ne 0 ]; then next_connection_check=$(( $(date +%s) + 60*5 )) diff --git a/bin/interpret-mail b/bin/interpret-mail index 2580c00..06eb4f0 100755 --- a/bin/interpret-mail +++ b/bin/interpret-mail @@ -310,7 +310,7 @@ fi if [ -s "${tmp_dir}/schedule" ]; then # shellcheck disable=SC2046 - "${base_dir}/bin/seed-build-list" --wait $( + "${base_dir}/bin/schedule-for-rebuild" --wait $( tr '[:space:]' '\n' < \ "${tmp_dir}/schedule" | \ grep -vxF '' | \ diff --git a/bin/local-build-package b/bin/local-build-package deleted file mode 100755 index fd4fdab..0000000 --- a/bin/local-build-package +++ /dev/null @@ -1,220 +0,0 @@ -#!/bin/sh - -# build one package to test if modifications are ok (before opening a pull -# request in https://github.com/archlinux32/packages) -# package is built directly on a i486/i686/pentium4 host without any chroots - -# shellcheck source=../lib/load-configuration -. "${0%/*}/../lib/load-configuration" - -# TODO: remove hard-coded package suffixes - -# shellcheck disable=SC2016 -usage() { - >&2 echo '' - >&2 echo 'test-build-package <repository> <package>: build package for testing' - >&2 echo '' - >&2 echo 'possible options:' - >&2 echo ' -h|--help: Show this help and exit.' - >&2 echo ' -a|--arch "i486" | "i686" | "pentium4"' - >&2 echo ' Build locally for this architecture.' - >&2 echo ' -b|--bootstrap' - >&2 echo ' Publishes signed package to the bootstrap directory.' - >&2 echo ' -H|--host <user>@<host>: host and user for bootstrapping' - >&2 echo ' -D|--dir <dir>: bootstrapping directory' - >&2 echo ' $arch and $repo are attached to this path.' - >&2 echo ' -p|--port <SSH port>: the SSH port for bootstrapping.' - >&2 echo ' -n|--nocheck:' - >&2 echo ' Normally execute all checks and do all tests.' - >&2 echo ' This switches off check() and all integrity checks.' - >&2 echo ' -t|--tmpdir <dir>:' - >&2 echo ' Specify tmpdir instead of using a random one, usually with -N' - >&2 echo ' -N|--nobuild:' - >&2 echo ' Assume packages have already been built, just upload them.' - >&2 echo ' -s|--signkey:' - >&2 echo ' Use explicit sign key instead of the one from the configuration.' - [ -z "$1" ] && exit 1 || exit "$1" -} - -eval set -- "$( - getopt -o a:bhnNp:H:D:t:s: \ - --long arch \ - --long bootstrap \ - --long nocheck \ - --long nobuild \ - --long port \ - --long dir \ - --long host \ - --long tmpdir \ - --long signkey \ - --long help \ - -n "$(basename "$0")" -- "$@" || \ - echo usage -)" - -arch=$(uname -m) -bootstrap=false -nocheck=false -nobuild=false -bootstrap_port=22 -bootstrap_host='' -bootstrap_dir='' -tmp_dir=$(mktemp -d "${work_dir}/tmp.XXXXXX") -signkey="${package_key}" -while true -do - case "$1" in - -a|--arch) - shift - arch="$1" - ;; - -b|--bootstrap) - bootstrap=true - ;; - -H|--host) - shift - bootstrap_host="$1" - ;; - -D|--dir) - shift - bootstrap_dir="$1" - ;; - -n|--nocheck) - nocheck=true - ;; - -N|--nobuild) - nobuild=true - ;; - -p|--port) - shift - bootstrap_port="$1" - ;; - -t|--tmpdir) - shift - tmp_dir="$1" - ;; - -s|--signkey) - shift - signkey="$1" - ;; - -h|--help) - usage 0 - ;; - --) - shift - break - ;; - *) - >&2 echo 'Whoops, forgot to implement option "'"$1"'" internally.' - exit 42 - ;; - esac - shift -done - -if [ $# -ne 2 ]; then - >&2 echo 'Too few or too many arguments. Expecting exactly a repository and a package name of the package to test.' - usage -fi - -if [ "$arch" != "any" ] && [ "$arch" != "i486" ] && [ "$arch" != "i686" ] && [ "$arch" != "pentium4" ]; then - >&2 echo "Illegal architecture '$arch', epxecting one of 'any', 'i486', 'i686' or 'pentium4'." - usage -fi - -if ${bootstrap}; then - if [ -z "${bootstrap_host}" ]; then - >&2 echo -- '-b option requires a bootstrapping host to be set with -H' - usage - fi - if [ -z "${bootstrap_dir}" ]; then - >&2 echo -- '-b option requires a bootstrapping directory to be set with -d' - usage - fi -fi - -if ! ${nobuild}; then - # Update git repositories (official packages, community packages and the repository of package customizations). - for repo_name in ${repo_names}; do - eval repo_path='"${repo_paths__'"${repo_name}"'}"' - git -C "${repo_path}" pull - done - - repository=$1 - package=$2 - case $repository in - core) - repo_path='../work/repos/packages' - ;; - extra) - repo_path='../work/repos/packages' - ;; - community) - repo_path='../work/repos/community' - ;; - *) - >&2 echo 'Repository is either "core", "extra" or "community"' - usage - esac - git_revision=$(git -C "${repo_path}" rev-parse HEAD) - - mod_git_revision=$(git -C "${repo_paths__archlinux32}" stash create) - if [ -z "${mod_git_revision}" ]; then - mod_git_revision=$(git -C "${repo_paths__archlinux32}" rev-parse HEAD) - fi - build_command="staging-${arch}-build" - parameters='' - if ${nocheck}; then - parameters='-- -- --nocheck' - fi - - git_repo=$(find_repository_with_commit "${git_revision}") - find_pkgbuilds "${package}" "${repository}" "${git_repo}" "${git_revision}" "${mod_git_revision}" - - extract_source_directory "${git_repo}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" - - rm -f \ - ./*"-${arch}.pkg.tar.xz" ./*"-${arch}.pkg.tar.xz.sig" \ - ./*"-${arch}.pkg.tar.zst" ./*"-${arch}.pkg.tar.zst.sig" - - cd "${tmp_dir}" || exit 1 - - makepkg_parameters='' - if ${nocheck}; then - makepkg_parameters='--skippgpcheck' - fi - makepkg ${makepkg_parameters} --verifysource - - # shellcheck disable=SC2086 - "${build_command}" ${parameters} -else - cd "${tmp_dir}" || exit 1 -fi - -if ${bootstrap}; then - rm -f \ - ./*"-${arch}.pkg.tar.xz.sig" \ - ./*"-${arch}.pkg.tar.zst.sig" - - find . -maxdepth 1 -type f -name "*${arch}.pkg.tar.zst" \ - -execdir gpg --local-user="${signkey}" --detach-sign '{}' \; - - case "$repository" in - core|extra) - staging_repo="staging" - ;; - community) - staging_repo="community-staging" - ;; - *) - staging_repo="staging" - ;; - esac - - scp -P "${bootstrap_port}" -rC "${tmp_dir}/"*"-${arch}.pkg.tar.zst" "${tmp_dir}/"*"-${arch}.pkg.tar.zst.sig" "${bootstrap_host}:${bootstrap_dir}/${staging_repo}/." - ssh -p "${bootstrap_port}" "${bootstrap_host}" bash -l -c "'cd ${bootstrap_dir}/${staging_repo} && repo-add -n bootstrap-${staging_repo}.db.tar.gz *-${arch}.pkg.tar.zst'" -fi - -# do not delete build reports, why might actually to want to have a look for things -# like checksums, logfiles, etc. -#recursively_umount_and_rm "${tmp_dir}" diff --git a/bin/manage-slaves b/bin/manage-slaves index cddda84..fa1413d 100755 --- a/bin/manage-slaves +++ b/bin/manage-slaves @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash # shellcheck source=../lib/load-configuration . "${0%/*}/../lib/load-configuration" @@ -9,7 +9,8 @@ usage() { >&2 echo 'manage-slaves $action [parameters]: manage the list of build slaves' >&2 echo '' >&2 echo 'possible actions:' - >&2 echo ' add $name $owner $ssh-key-fingerprint' + >&2 echo ' list' + >&2 echo ' add $name $owner $ssh-key-type $ssh-key-fingerprint' >&2 echo ' disable $name' >&2 echo ' enable $name' exit 1 @@ -33,10 +34,26 @@ if errors=$( fi case "$1" in + 'list') + # shellcheck disable=SC2016 + { + printf 'SELECT' + printf ' name, CASE WHEN access_allowed = 1 THEN "enabled" ELSE "disabled" END ' + printf ' name, CASE WHEN is_sane = 1 THEN "sane" ELSE "not sane" END ' + printf ' FROM build_slaves' + printf ';\n' + } | \ + mysql_run_query | \ + tr '\t' ' ' + ;; 'add') shift - if [ $# -ne 3 ]; then - >&2 printf '"add" expects 3 parameters, %s were given\n' "$#" + if [ $# -ne 4 ]; then + >&2 printf '"add" expects 4 parameters, %s were given\n' "$#" + usage + fi + if [[ $3 != ssh-* ]]; then + >&2 printf '"$ssh-key-type" must start with "ssh-", "%s" was given\n' "${3}" usage fi person_id=$( @@ -81,10 +98,11 @@ case "$1" in fi # shellcheck disable=SC2016 { - printf 'INSERT INTO `ssh_keys`(`owner`,`fingerprint`)' + printf 'INSERT INTO `ssh_keys`(`owner`,`fingerprint`,`type`)' printf ' VALUES' - printf ' (%s,"%s");\n' \ + printf ' (%s,"%s","%s");\n' \ "${person_id}" \ + "${4}" \ "${3}" printf 'INSERT INTO `build_slaves`(' printf '`name`,' @@ -96,10 +114,11 @@ case "$1" in "${1}" } | \ mysql_run_query - printf 'command="%s/bin/slave-build-connect %s" ssh-rsa %s %s@%s\n' \ + printf 'command="%s/bin/slave-build-connect %s" %s %s %s@%s\n' \ "${base_dir}" \ "${1}" \ "${3}" \ + "${4}" \ "${2}" \ "${1}" >> \ ~/".ssh/authorized_keys" @@ -122,7 +141,9 @@ case "$1" in printf '"command=\\\"%s/bin/slave-build-connect ",' \ "${base_dir}" printf '`build_slaves`.`name`,' - printf '"\\\" ssh-rsa ",' + printf '"\\\" ",' + printf '`ssh_keys`.`type`,' + printf '" ",' printf '`ssh_keys`.`fingerprint`,' printf '" ",' printf '`persons`.`name`,' diff --git a/bin/manual-fix b/bin/manual-fix new file mode 100755 index 0000000..f9cc7b9 --- /dev/null +++ b/bin/manual-fix @@ -0,0 +1,55 @@ +#!/bin/bash + +# shellcheck disable=SC2119,SC2120 + +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" + +eval "$( + declare -F \ + | sed ' + s@^declare -f _fix_@unset _fix_@ + t + d + ' +)" + +_fix_package_on_build_and_deletion_list() { + # shellcheck disable=SC2016 + { + printf 'DELETE `bin_del`' + printf ' FROM `binary_packages` AS `bin_del`' + mysql_join_binary_packages_binary_packages_in_repositories 'bin_del' 'bir_del' + mysql_join_binary_packages_in_repositories_repositories 'bir_del' 'r_del' + printf ' AND `r_del`.`name`="deletion-list"' + printf ' JOIN `binary_packages` AS `bin_keep`' + printf ' ON `bin_keep`.`pkgname`=`bin_del`.`pkgname`' + printf ' AND `bin_del`.`architecture`=`bin_keep`.`architecture`' + printf ' AND `bin_del`.`id`!=`bin_keep`.`id`' + printf ' AND `bin_keep`.`sha512sum` IS NULL' + mysql_join_binary_packages_binary_packages_in_repositories 'bin_keep' 'bir_keep' + mysql_join_binary_packages_in_repositories_repositories 'bir_keep' 'r_keep' + printf ' AND `r_keep`.`name`="build-list"' + } \ + | mysql_run_query +} + +usage() { + # shellcheck disable=SC2016 + >&2 printf 'usage: %s $issue\n\n' "${0##*/}" + >&2 printf 'Manually fix an issue.\n\n' + >&2 printf 'fixable issues:\n' + declare -F \ + | sed ' + s@^declare -f _fix_@ @ + t + d + ' >&2 + exit 1 +} + +if [ $# -ne 1 ] || ! declare -f "_fix_$1" >/dev/null; then + usage +fi + +eval "_fix_$1" diff --git a/bin/nit-picker b/bin/nit-picker index 8dd0156..ed5b7da 100755 --- a/bin/nit-picker +++ b/bin/nit-picker @@ -281,9 +281,9 @@ while pgrep -x ii >/dev/null \ case "${action}" in 'commit') # check whether a given commit is present in the git repo git_repo="${parameters%% *}" - git_rev="${parameters#${git_repo} }" + git_rev="${parameters#"${git_repo}" }" git_head="${git_rev%% *}" - git_rev="${git_rev#${git_head} }" + git_rev="${git_rev#"${git_head}" }" # shellcheck disable=SC2016 eval "$( printf 'git_dir="${repo_paths__%s}"\n' \ @@ -881,6 +881,6 @@ done printf ';\n' fi } \ -| ifne ssh buildmaster 'mysql buildmaster +| ifne ssh -o PasswordAuthentication=No buildmaster 'mysql buildmaster rm -f "/tmp/add-those-dependencies" ' diff --git a/bin/opcode b/bin/opcode deleted file mode 100755 index 544c763..0000000 --- a/bin/opcode +++ /dev/null @@ -1,293 +0,0 @@ -#!/bin/bash -# -# Original see post in: -# -# https://superuser.com/questions/726395/how-to-check-if-a-binary-requires-sse4-or-avx-on-linux -# -# Searches disassembled code for specific instructions. -# -# Opcodes obtained from: https://github.com/Shirk/vim-gas/blob/master/syntax/gas.vim -# -# List of opcodes has been obtained using the following commands and making a few modifications: -# echo '#!/bin/bash' > Opcode_list -# wget -q -O- https://raw.githubusercontent.com/Shirk/vim-gas/master/syntax/gas.vim \ -# | grep -B1 -E 'syn keyword gasOpcode_|syn match gasOpcode' | \ -# sed -e '/^--$/d' -e 's/"-- Section:/\n#/g' \ -# -e 's/syn keyword gasOpcode_\([^\t]*\)*\(\t\)*\(.*\)/Opcode_\1="\${Opcode_\1} \3"/g' \ -# -e 's/Opcode_PENT_3DNOW/Opcode_ATHLON_3DNOW/g' -e 's/\\//g' \ -# -e 's/syn match gasOpcode_\([^\t]*\)*.*\/<\(.*\)>\//Opcode_\1="\${Opcode_\1} \2"/g' \ -# >> Opcode_list -# -# Modify file Opcode_list replacing all occurrences of: -# * Opcode_Base within the section "Tejas New Instructions (SSSE3)" with Opcode_SSSE3 -# * Opcode_Base within the section "Willamette MMX instructions (SSE2 SIMD Integer Instructions)" -# with Opcode_WILLAMETTE_Base -# * Remove all line in Opcode_ARM_THUMB -# return values - - -# return values -EXIT_FOUND=0 -EXIT_NOT_FOUND=1 -EXIT_USAGE=2 - -# settings -InstSet_Base="" -Recursive=false -Count_Matching=false -Leading_Separator='\s' -Trailing_Separator='(\s|$)' # $ matches end of line for non-parametric instructions like nop -Case_Insensitive=false -Invert=false -Verbose=false -Stop_After=0 -Line_Numbers=false -Leading_Context=0 -Trailing_Context=0 - -source "${0%/*}/../lib/opcode_list" # include opcodes from a separate file - -# GAS-specific opcodes (unofficial names) belonging to the x64 instruction set. -# They are generated by GNU tools (e.g. GDB, objdump) and specify a variant of ordinal opcodes like NOP and MOV. -# If you do not want these opcodes to be recognized by this script, comment out the following line. -Opcode_X64_GAS="nopw nopl movabs" - - -# instruction sets -InstSet_X86="8086_Base 186_Base 286_Base 386_Base 486_Base PENT_Base P6_Base KATMAI_Base WILLAMETTE_Base PENTM_Base" -InstSet_IA64="IA64_Base" -InstSet_X64="PRESCOTT_Base X64_Base X86_64_Base NEHALEM_Base X64_GAS" -InstSet_MMX="PENT_MMX KATMAI_MMX X64_MMX" -InstSet_MMX2="KATMAI_MMX2" -InstSet_3DNOW="ATHLON_3DNOW" -InstSet_SSE="KATMAI_SSE P6_SSE X64_SSE" -InstSet_SSE2="SSE2 X64_SSE2" -InstSet_SSE3="PRESCOTT_SSE3" -InstSet_SSSE3="SSSE3" -InstSet_VMX="VMX X64_VMX" -InstSet_SSE4_1="SSE41 X64_SSE41" -InstSet_SSE4_2="SSE42 X64_SSE42" -InstSet_SSE4A="AMD_SSE4A" -InstSet_SSE5="AMD_SSE5" -InstSet_FMA="FUTURE_FMA" -InstSet_AVX="SANDYBRIDGE_AVX" - -InstSetDep_X64="X86" -InstSetDep_MMX2="MMX" -InstSetDep_SSE2="SSE" -InstSetDep_SSE3="SSE2" -InstSetDep_SSSE3="SSE3" -InstSetDep_SSE4_1="SSSE3" -InstSetDep_SSE4_2="SSE4_1" -InstSetDep_SSE4A="SSE3" -InstSetDep_SSE5="FMA AVX" # FIXME not reliable - -InstSetList="X86 IA64 X64 MMX MMX2 3DNOW SSE SSE2 SSE3 SSSE3 VMX SSE4_1 SSE4_2 SSE4A SSE5 FMA AVX" - - -# architectures -Arch_8086="8086_Base" -Arch_186="186_Base" -Arch_286="286_Base" -Arch_386="386_Base" -Arch_486="486_Base" -Arch_Pentium="PENT_Base PENT_MMX" # Pentium = P5 architecture -Arch_Athlon="ATHLON_3DNOW" -Arch_Deschutes="P6_Base P6_SSE" # Pentium II -Arch_Katmai="KATMAI_Base KATMAI_MMX KATMAI_MMX2 KATMAI_SSE" # Pentium III -Arch_Willamette="WILLAMETTE_Base SSE2" # original Pentium IV (x86) -Arch_PentiumM="PENTM_Base" -Arch_Prescott="PRESCOTT_Base X64_Base X86_64_Base X64_SSE2 PRESCOTT_SSE3 VMX X64_VMX X64_GAS" # later Pentium IV (x64) with SSE3 (Willamette only implemented SSE2 instructions) and VT (VT-x, aka VMX) -Arch_P6="" -Arch_Barcelona="ATHLON_3DNOW AMD_SSE4A" -Arch_IA64="IA64_Base" # 64-bit Itanium RISC processor; incompatible with x64 architecture -Arch_Penryn="SSSE3 SSE41 X64_SSE41" # later (45nm) Core 2 with SSE4.1 -Arch_Nehalem="NEHALEM_Base SSE42 X64_SSE42" # Core i# -Arch_SandyBridge="SANDYBRIDGE_AVX" -Arch_Haswell="FUTURE_FMA" -Arch_Bulldozer="AMD_SSE5" - -ArchDep_8086="" -ArchDep_186="8086" -ArchDep_286="186" -ArchDep_386="286" -ArchDep_486="386" -ArchDep_Pentium="486" -ArchDep_Athlon="Pentium" # FIXME not reliable -ArchDep_Deschutes="Pentium" -ArchDep_Katmai="Deschutes" -ArchDep_Willamette="Katmai" -ArchDep_PentiumM="Willamette" # FIXME Pentium M is a Pentium III modification (with SSE2). Does it support also WILLAMETTE_Base instructions? -ArchDep_Prescott="Willamette" -ArchDep_P6="Prescott" # P6 started with Pentium Pro; FIXME Pentium Pro did not support MMX instructions (introduced again in Pentium II aka Deschutes) -ArchDep_Barcelona="Prescott" # FIXME not reliable -ArchDep_IA64="" -ArchDep_Penryn="P6" -ArchDep_Nehalem="Penryn" -ArchDep_SandyBridge="Nehalem" -ArchDep_Haswell="SandyBridge" -ArchDep_Bulldozer="Haswell" # FIXME not reliable - -ArchList="8086 186 286 386 486 Pentium Athlon Deschutes Katmai Willamette PentiumM Prescott P6 Barcelona IA64 Penryn Nehalem SandyBridge Haswell Bulldozer" - -usage() { - echo "Usage: $0 OPTIONS" - echo "" - echo " -r set instruction sets recursively according to dependency tree (must precede -a or -s)" - echo " -a set architecture" - echo " -s set instruction set" - echo " -L show list of available architectures" - echo " -l show list of available instruction sets" - echo " -i show base instruction sets of current instruction set (requires -a and/or -s)" - echo " -I show instructions in current instruction set (requires -a and/or -s)" - echo " -c print number of matching instructions instead of normal output" - echo " -f find instruction set of the following instruction (regex allowed)" - echo " -d set leading opcode separator (default '$Leading_Separator')" - echo " -D set trailing opcode separator (default '$Trailing_Separator')" - echo " -C case-insensitive" - echo " -v invert the sense of matching" - echo " -V print all lines, not just the highlighted" - echo " -m stop searching after n matched instructions" - echo " -n print line numbers within the original input" - echo " -B print n instructions of leading context" - echo " -A print n instructions of trailing context" - echo " -h print this help" - echo - echo "Multiple architectures and instruction sets can be used." - echo - echo "Typical usage is:" - echo " objdump -M intel -d FILE | $0 OPTIONS" - echo " objdump -M intel -d FILE | $0 -s SSE2 -s SSE3 -V Highlight SSE2 and SSE3 within FILE." - echo " objdump -M intel -d FILE | tail -n +8 | $0 -r -a Haswell -v -m 1 Find first unknown instruction." - echo " $0 -C -f ADDSD Find which instruction set an opcode belongs to." - echo " $0 -f .*fma.* Find all matching instructions and their instruction sets." - echo - echo "The script uses Intel opcode syntax. When used in conjunction with objdump, \`-M intel' must be set in order to prevent opcode translation using AT&T syntax." - echo - echo "BE AWARE THAT THE LIST OF KNOWN INSTRUCTIONS OR INSTRUCTIONS SUPPORTED BY PARTICULAR ARCHITECTURES (ESPECIALLY AMD'S) IS ONLY TENTATIVE AND MAY CONTAIN MISTAKES!" - kill -TRAP $TOP_PID -} - -list_contains() { # Returns 0 if $2 is in array $1, 1 otherwise. - local e - for e in $1; do - [ "$e" = "$2" ] && return 0 - done - return 1 -} - -build_instruction_set() { # $1 = enum { Arch, InstSet }, $2 = architecture or instruction set as obtained using -L or -l, $3 = "architecture"/"instruction set" to be used in error message - local e - list_contains "`eval echo \\\$${1}List`" "$2" || (echo "$2 is not a valid $3."; usage) # Test if the architecture/instruction set is valid. - if [ -n "`eval echo \\\$${1}_${2}`" ]; then # Add the instruction set(s) if any. - for e in `eval echo \\\$${1}_${2}`; do # Skip duplicates. - list_contains "$InstSet_Base" $e || InstSet_Base="$e $InstSet_Base" - done - fi - if [ $Recursive = true ]; then - for a in `eval echo \\\$${1}Dep_$2`; do - build_instruction_set $1 $a "$3" - done - fi - InstSet_Base="`echo $InstSet_Base | sed 's/$ *//'`" # Remove trailing space. -} - -trap "exit $EXIT_USAGE" TRAP # Allow usage() function to abort script execution. -export TOP_PID=$$ # PID of executing process. - -# Parse command line arguments. -while getopts ":ra:s:LliIcf:Fd:D:CvVm:nB:A:h" o; do - case $o in - r) Recursive=true ;; - a) build_instruction_set Arch "$OPTARG" "architecture" ;; - s) build_instruction_set InstSet "$OPTARG" "instruction set" ;; - L) echo $ArchList; exit $EXIT_USAGE ;; - l) echo $InstSetList; exit $EXIT_USAGE ;; - i) - if [ -n "$InstSet_Base" ]; then - echo $InstSet_Base - exit $EXIT_USAGE - else - echo -e "No instruction set or architecture set.\n" - usage - fi - ;; - I) - if [ -n "$InstSet_Base" ]; then - for s in $InstSet_Base; do - echo -ne "\e[31;1m$s:\e[0m " - eval echo "\$Opcode_$s" - done - exit $EXIT_USAGE - else - echo -e "No instruction set or architecture set.\n" - usage - fi - ;; - c) Count_Matching=true ;; - f) - # Unlike architectures, instruction sets are disjoint. - Found=false - for s in $InstSetList; do - for b in `eval echo \\\$InstSet_$s`; do - Found_In_Base=false - for i in `eval echo \\\$Opcode_$b`; do - if [[ "$i" =~ ^$OPTARG$ ]]; then - $Found_In_Base || echo -ne "Instruction set \e[33;1m$s\e[0m (base instruction set \e[32;1m$b\e[0m):" - echo -ne " \e[31;1m$i\e[0m" - Found_In_Base=true - Found=true - fi - done - $Found_In_Base && echo "" - done - done - if [ $Found = false ]; then - echo -e "Operation code \e[31;1m$OPTARG\e[0m has not been found in the database of known instructions." \ - "Perhaps it is translated using other than Intel syntax. If obtained from objdump, check if the \`-M intel' flag is set." \ - "Be aware that the search is case sensitive by default (you may use the -C flag, otherwise only lower case opcodes are accepted)." - exit $EXIT_NOT_FOUND - else - exit $EXIT_FOUND - fi - ;; - d) Leading_Separator="$OPTARG" ;; - D) Trailing_Separator="$OPTARG" ;; - C) Case_Insensitive=true ;; - v) Invert=true ;; - V) Verbose=true ;; - m) Stop_After=$OPTARG ;; - n) Line_Numbers=true ;; - B) Leading_Context=$OPTARG ;; - A) Trailing_Context=$OPTARG ;; - h) usage ;; - \?) - echo -e "Unknown option: -$OPTARG\n" - usage - ;; - esac -done -shift $((OPTIND-1)) -[ -n "$1" ] && echo -e "Unknown command line parameter: $1\n" && usage -[ -z "$InstSet_Base" ] && usage - -# Create list of grep parameters. -Grep_Params="--color=auto -B $Leading_Context -A $Trailing_Context" -[ $Count_Matching = true ] && Grep_Params="$Grep_Params -c" -[ $Case_Insensitive = true ] && Grep_Params="$Grep_Params -i" -[ $Invert = true ] && Grep_Params="$Grep_Params -v" -[ $Stop_After -gt 0 ] && Grep_Params="$Grep_Params -m $Stop_After" -[ $Line_Numbers = true ] && Grep_Params="$Grep_Params -n" - -# Build regular expression for use in grep. -RegEx="" -for s in $InstSet_Base; do - eval RegEx=\"$RegEx \$Opcode_$s\" -done -# Add leading and trailing opcode separators to prevent false positives. -RegEx="$Leading_Separator`echo $RegEx | sed "s/ /$(echo "$Trailing_Separator"|sed 's/[\/&]/\\\&/g')|$(echo "$Leading_Separator"|sed 's/[\/&]/\\\&/g')/g"`$Trailing_Separator" - -[ $Verbose = true -a $Count_Matching = false ] && RegEx="$RegEx|\$" - -# The actual search. -grep $Grep_Params -E "$RegEx" && exit $EXIT_FOUND || exit $EXIT_NOT_FOUND diff --git a/bin/ping-to-master b/bin/ping-to-master index b1539cc..b7b1eee 100755 --- a/bin/ping-to-master +++ b/bin/ping-to-master @@ -14,8 +14,9 @@ parent_pid="$1" parent_tmp_dir="$2" +lock_file="$3" -exec 9> "${work_dir}/ping-build-master.lock" +exec 9> "${lock_file}" while kill -0 "${parent_pid}" && \ [ -f "${parent_tmp_dir}/.ping-build-master" ]; do @@ -27,7 +28,7 @@ while kill -0 "${parent_pid}" && \ -name '*.build-log' \ -exec wc -l {} \; | \ sed 's, .*/, ,' | \ - ssh \ + ssh -o PasswordAuthentication=No \ -i "${master_build_server_identity}" \ -p "${master_build_server_port}" \ "${master_build_server_user}@${master_build_server}" \ diff --git a/bin/prioritize-build-list b/bin/prioritize-build-list index 04a9d4f..2391c1f 100755 --- a/bin/prioritize-build-list +++ b/bin/prioritize-build-list @@ -109,7 +109,7 @@ updated_rows=$( if ${dependencies}; then new_updated_rows=1 updated_rows=$((updated_rows-1)) - while [ ${new_updated_rows} -ne 0 ]; do + while [ "${new_updated_rows}" -ne 0 ]; do updated_rows=$((updated_rows+new_updated_rows)) new_updated_rows=$( # shellcheck disable=SC2016 diff --git a/bin/return-assignment b/bin/return-assignment index a0cbbbb..47e28f0 100755 --- a/bin/return-assignment +++ b/bin/return-assignment @@ -142,25 +142,25 @@ if [ "$6" = 'ERROR' ]; then exit 2 fi build_assignment_architecture="${infos##* }" - infos="${infos% ${build_assignment_architecture}}" + infos="${infos% "${build_assignment_architecture}"}" pkgrel="${infos##* }" - infos="${infos% ${pkgrel}}" + infos="${infos% "${pkgrel}"}" epoch="${infos##* }" - infos="${infos% ${epoch}}" + infos="${infos% "${epoch}"}" pkgver="${infos##* }" - infos="${infos% ${pkgver}}" + infos="${infos% "${pkgver}"}" pkgver=$( printf '%s' "${pkgver}" \ | base64 -d ) upstream_flag_date="${infos##* }" - infos="${infos% ${upstream_flag_date}}" + infos="${infos% "${upstream_flag_date}"}" upstream_flag_date=$( printf '%s' "${upstream_flag_date}" \ | base64 -d ) was_broken_before="${infos##* }" - build_assignment_id="${infos% ${was_broken_before}}" + build_assignment_id="${infos% "${was_broken_before}"}" # save sent build logs saved_build_logs=$( @@ -498,13 +498,13 @@ if [ "$6" = 'ERROR' ]; then ' ) - # release lock on build-list - otherwise seed-build-list won't run + # release lock on build-list - otherwise schedule-for-rebuild won't run flock -u 9 rescheduled_packages=$( if [ -n "${haskell_rebuild_packages}" ]; then # shellcheck disable=SC2086 - "${base_dir}/bin/seed-build-list" ${haskell_rebuild_packages} | \ + "${base_dir}/bin/schedule-for-rebuild" ${haskell_rebuild_packages} | \ sed 's/ .*$//' fi ) @@ -747,7 +747,8 @@ signatures=$( if [ -z "$( printf '%s\n' "${signatures}" | \ cut -d' ' -f2 | \ - grep -x 'file\|TRUST_FULLY' | \ + grep -x 'file\|TRUST_\(FULLY\|ULTIMATE\)' | \ + sed 's@_ULTIMATE$@_FULLY@' | \ sort | \ uniq -c | \ awk '{print $1}' | \ @@ -759,6 +760,9 @@ if [ -z "$( irc_say "${operator}" printf '%s\n' "${signatures}" | \ irc_say "${operator}" 'copy' >&2 + find . -maxdepth 1 -regextype sed \ + -regex '.*\.pkg\.\('"${package_compression_suffix_regex}"'\)' \ + -exec cp {} {}.sig "${work_dir}/" \; exit 3 fi @@ -956,6 +960,32 @@ if [ -n "${errors}" ]; then exit 1 fi +some_architecture=$( + # shellcheck disable=SC2012 + ls \ + | sed ' + s/^.*-\([^-]\+\)\.pkg\.\('"${package_compression_suffix_regex}"'\)$/\1/ + t + d + ' \ + | sort -u \ + | sed ' + s/^any$/0 \0/ + t + s/^/1 \0/ + ' \ + | sort -k1n,1 \ + | tail -n1 \ + | cut -d' ' -f2 +) + +for build_log in *.build-log.gz; do + [ -f "${build_log}" ] || continue; + mv -n \ + "${build_log}" \ + "${build_log_directory}/success/$1.$2.$3.$4.${some_architecture}.${build_log##*/}" +done + join -1 2 -2 2 -o 1.1,1.2,2.1 "${tmp_dir}/package-ids" "${tmp_dir}/signing-keys" \ | sponge "${tmp_dir}/package-ids" diff --git a/bin/sanity-check b/bin/sanity-check index 60cb958..9682c68 100755 --- a/bin/sanity-check +++ b/bin/sanity-check @@ -46,29 +46,6 @@ eval set -- "$( block_flag='-n' silence=0 -# shellcheck disable=SC2016 -repos=$( - { - printf 'SELECT DISTINCT `repositories`.`name`' - printf ' FROM `repositories`' - printf ' WHERE `repositories`.`is_on_master_mirror`;\n' - } | \ - mysql_run_query -) -# shellcheck disable=SC2016 -archs=$( - { - printf 'SELECT DISTINCT `architectures`.`name`' - printf ' FROM `architectures`' - printf ' WHERE EXISTS (' - printf 'SELECT 1' - printf ' FROM `repositories`' - printf ' WHERE `repositories`.`architecture`=`architectures`.`id`' - printf ' AND `repositories`.`is_on_master_mirror`' - printf ');\n' - } | \ - mysql_run_query -) while true do @@ -104,6 +81,32 @@ if ! verbose_flock ${block_flag} 9; then exit fi +execute_all_intentions + +# shellcheck disable=SC2016 +repos=$( + { + printf 'SELECT DISTINCT `repositories`.`name`' + printf ' FROM `repositories`' + printf ' WHERE `repositories`.`is_on_master_mirror`;\n' + } | \ + mysql_run_query +) +# shellcheck disable=SC2016 +archs=$( + { + printf 'SELECT DISTINCT `architectures`.`name`' + printf ' FROM `architectures`' + printf ' WHERE EXISTS (' + printf 'SELECT 1' + printf ' FROM `repositories`' + printf ' WHERE `repositories`.`architecture`=`architectures`.`id`' + printf ' AND `repositories`.`is_on_master_mirror`' + printf ');\n' + } | \ + mysql_run_query +) + mysql_cleanup finish() { @@ -368,7 +371,8 @@ while [ $# -gt 0 ]; do ) || true if [ -n "${errors}" ]; then if [ ${silence} -le 1 ]; then - printf '\nThe following packages in %s are missing a signature or vice versa:\n%s\n' \ + printf '\nThe following packages in %s/%s are missing a signature or vice versa:\n%s\n' \ + "${arch}" \ "${repo}" \ "${errors}" | \ tee -a "${tmp_dir}/messages" >&2 @@ -403,7 +407,8 @@ while [ $# -gt 0 ]; do ) if [ -n "${errors}" ]; then if [ ${silence} -le 1 ]; then - printf '\nThe following packages in %s are missing from the database or vice versa:\n%s\n' \ + printf '\nThe following packages in %s/%s are missing from the database or vice versa:\n%s\n' \ + "${arch}" \ "${repo}" \ "${errors}" | \ tee -a "${tmp_dir}/messages" >&2 @@ -432,7 +437,8 @@ while [ $# -gt 0 ]; do ) if [ -n "${errors}" ]; then if [ ${silence} -le 1 ]; then - printf '\nThe following packages in %s are missing from the file-database or vice versa:\n%s\n' \ + printf '\nThe following packages in %s/%s are missing from the file-database or vice versa:\n%s\n' \ + "${arch}" \ "${repo}" \ "${errors}" | \ tee -a "${tmp_dir}/messages" >&2 @@ -523,9 +529,9 @@ while [ $# -gt 0 ]; do [ ! -s "${work_dir}/build-master-sanity" ]; then # shellcheck disable=SC2119 { - printf 'girls, my database is dirty again ...\n' - printf 'dirty! girls, my database - so dirty :-(\n' - printf 'girls, please have a look at my dirty database' + printf 'girls, Tasos, my database is dirty again ...\n' + printf 'dirty! girls, Tasos, my database - so dirty :-(\n' + printf 'girls, Tasos, please have a look at my dirty database\n' } | \ shuf -n1 | \ irc_say @@ -584,7 +590,9 @@ while [ $# -gt 0 ]; do printf '"command=\\\"%s/bin/slave-build-connect ",' \ "${base_dir}" printf '`build_slaves`.`name`,' - printf '"\\\" ssh-rsa ",' + printf '"\\\" ",' + printf '`ssh_keys`.`type`,' + printf '" ",' printf '`ssh_keys`.`fingerprint`' printf ')' printf ' FROM' diff --git a/bin/seed-build-list b/bin/schedule-for-rebuild index 3303416..6c9bfbd 100755 --- a/bin/seed-build-list +++ b/bin/schedule-for-rebuild @@ -2,12 +2,11 @@ # shellcheck disable=SC2119,SC2120 -# seed the build list from various sources +# schedule selected packages for a rebuild # # This uses the following schedule: -# - find scheduleworthy packages by pkgname/pkgbase (diff to mirror, -# broken dependencies, explicite regex) and their architecture -# - find pkgbases of those packages (ask upstream, if necessary) +# - find scheduleworthy packages by pkgname/pkgbase (broken +# dependencies, explicite regex) and their architecture # - remove all ignored packages (seed-ignore, explicitely ignored, # blacklist) # - run mysql_generate_package_metadata on each of them once (ignoring @@ -27,12 +26,12 @@ # shellcheck disable=SC2016 usage() { >&2 echo '' - >&2 echo 'seed-build-list [options]:' - >&2 echo ' seed the build list from different sources' + >&2 echo 'schedule-for-rebuild [options]:' + >&2 echo ' schedule selected packages for a rebuild' >&2 echo '' >&2 echo 'possible options:' >&2 echo ' -a|--auto:' - >&2 echo ' Automatically reschedule packages which have run-time' + >&2 echo ' Automatically schedule packages which have run-time' >&2 echo ' dependencies that are not available from any real' >&2 echo ' repository and which cannot be replaced by another,' >&2 echo ' less stable version of the same package.' @@ -41,41 +40,37 @@ usage() { >&2 echo ' -h|--help:' >&2 echo ' Show this help and exit.' >&2 echo ' -i|--ignore $pkgbase|$arch/$pkgbase:' - >&2 echo ' Do not update the given package (for the given $arch).' + >&2 echo ' Never schedule the given package (for the given $arch).' >&2 echo ' -j|--jostle' >&2 echo ' Give new build assignments the highest priority.' - >&2 echo ' -m|--mirror $url:' - >&2 echo ' Schedule all packages, that are newer (this includes' - >&2 echo ' packages currently unavailable on archlinux32) on the' - >&2 echo ' given x86_64 mirror - except packages on the blacklist' - >&2 echo ' or in conf/seed-ignore-packages.' >&2 echo ' -n|--no-action:' - >&2 echo ' Do not actually update build-list, just print it.' + >&2 echo ' Do not actually schedule anything, just print it.' >&2 echo ' -p|--package $pkg_regex:' - >&2 echo ' Reschedule packages with matching pkgname or pkgbase.' - >&2 echo ' Note, that these packages must be known to the database.' + >&2 echo ' Schedule packages with matching pkgname or pkgbase.' >&2 echo ' -s|--skip-arch $arch:' - >&2 echo ' Ignore packages, that are outdated on $arch only (-a|-m).' + >&2 echo ' Ignore packages, that are outdated on $arch only (-a).' + >&2 echo ' -t|--interactive' + >&2 echo ' Ask which of the matching packages to schedule for rebuild.' >&2 echo ' -w|--wait:' >&2 echo ' Wait for lock if necessary.' [ -z "$1" ] && exit 1 || exit "$1" } -tmp_dir=$(mktemp -d 'tmp.seed-build-list.XXXXXXXXXX' --tmpdir) +tmp_dir=$(mktemp -d 'tmp.schedule-for-rebuild.XXXXXXXXXX' --tmpdir) # shellcheck disable=SC2064 trap "rm -rf --one-file-system '${tmp_dir:?}'" EXIT eval set -- "$( - getopt -o afhi:jm:np:s:w \ + getopt -o afhi:jnp:s:tw \ --long auto \ --long force \ --long help \ --long ignore: \ --long jostle \ - --long mirror: \ --long no-action \ --long package: \ --long skip-arch: \ + --long interactive \ --long wait \ -n "$(basename "$0")" -- "$@" || \ echo usage @@ -85,6 +80,7 @@ auto=false ignore_mysql_generate_package_metadata_errors=false jostle=false update=true +interactive=false wait_for_lock='-n' while true @@ -112,11 +108,6 @@ do -j|--jostle) jostle=true ;; - -m|--mirror) - shift - printf '%s\n' "$1" >> \ - "${tmp_dir}/mirrors" - ;; -n|--no-action) update=false ;; @@ -130,6 +121,9 @@ do printf '%s\n' "$1" >> \ "${tmp_dir}/skip-archs" ;; + -t|--interactive) + interactive=true + ;; -w|--wait) wait_for_lock='' ;; @@ -150,8 +144,7 @@ if [ $# -ne 0 ]; then usage 1 fi -if [ ! -s "${tmp_dir}/mirrors" ] && \ - [ ! -s "${tmp_dir}/package-regexes" ] && \ +if [ ! -s "${tmp_dir}/package-regexes" ] && \ ! ${auto}; then # nothing to do >&2 echo 'No options given to do anything.' @@ -160,9 +153,8 @@ if [ ! -s "${tmp_dir}/mirrors" ] && \ fi if [ -s "${tmp_dir}/skip-archs" ] && \ - ! ${auto} && \ - [ ! -s "${tmp_dir}/mirrors" ]; then - >&2 echo 'Invalid combination of options: -s|--skip-archs requires -m|--mirror or -a|--auto.' + ! ${auto}; then + >&2 echo 'Invalid combination of options: -s|--skip-archs requires -a|--auto.' usage 2 exit 2 fi @@ -184,25 +176,12 @@ if ${update}; then fi fi -# shellcheck disable=SC2016 -repos=$( - { - printf 'SELECT DISTINCT `repositories`.`name`' - printf ' FROM `repositories`' - # shellcheck disable=SC2154 - printf ' WHERE `repositories`.`stability`=%s;\n' \ - "${repository_stability_ids__stable}" - } | \ - mysql_run_query - printf '%s\n' 'multilib' -) - -if [ -r "${base_dir}/conf/seed-ignore-packages" ]; then +if [ -r "${conf_dir}/seed-ignore-packages" ]; then sed ' s@/@\t@ t s/^/any\t/ - ' "${base_dir}/conf/seed-ignore-packages" >> \ + ' "${conf_dir}/seed-ignore-packages" >> \ "${tmp_dir}/ignore-packages" fi @@ -223,87 +202,8 @@ for list in 'ignore-packages' 'blacklist'; do | sponge "${tmp_dir}/${list}" done -# TODO: translate lib32-* packages instead of ignoring them for -m - touch "${tmp_dir}/skip-archs" -# harvest pkgnames from mirror delta -if [ -s "${tmp_dir}/mirrors" ]; then - { - # theirs - while read -r mirror; do - if [ -z "${mirror}" ]; then - continue - fi - for repo in ${repos}; do - curl -sS "${mirror}/${repo}/os/x86_64/${repo}.db.tar.gz" | \ - tar -Oxz --wildcards '*/desc' | \ - sed ' - /^%FILENAME%$/!d - N - s/^.*\n// - /^lib32-/d - s/^\(.*-\)x86_64\.pkg\.tar\.\(xz\|zst\)$/'"$( - # shellcheck disable=SC2086,SC2154 - printf '%s\n' ${architectures} \ - | grep -vxF 'any' \ - | grep -vxFf "${tmp_dir}/skip-archs" \ - | sed ' - s/^.*$/\\1\0/ - ' \ - | sed ' - :a - $! N - $! ba - s/\n/\\n/g - ' - )"'/ - s/^\(.*-any\)\.pkg\.tar\.\(xz\|zst\)$/\1/ - ' | \ - sed ' - s/^\(.*\)-\([^-]\+-[^-]\+\)-\([^-]\+\)$/theirs \2 \3 \1/ - ' - done - done < \ - "${tmp_dir}/mirrors" - # ours - # shellcheck disable=SC2016 - { - printf 'SELECT ' - mysql_package_name_query - printf ' FROM `binary_packages`' - mysql_join_binary_packages_architectures - printf ' LEFT' - mysql_join_binary_packages_compressions - mysql_join_binary_packages_binary_packages_in_repositories - mysql_join_binary_packages_in_repositories_repositories - printf ' WHERE `repositories`.`is_on_master_mirror`' - printf ' OR `repositories`.`name`="build-list"' - } | \ - mysql_run_query | \ - sed ' - s/^\(.*\)-\([^-]\+-[^-.]\+\)\(\.[^-.]\+\)\?-\([^-]\+\)\.pkg\.tar\.\(xz\|zst\)$/ours \2 \4 \1/ - s/^\(.* \)any\( \S\+\)$/\0\n\1i486\2\n\1i686\2\n\1pentium4\2/ - ' - } | \ - expand_version 2 | \ - sort -k3,4 -k2Vr,2 -k1,1 | \ - shrink_version 2 | \ - uniq -f2 | \ - sed -n ' - s/^theirs \(\S\+ \)// - T - p - ' | \ - if [ -r "${tmp_dir}/ignore-packages" ]; then - grep -vxFf "${tmp_dir}/ignore-packages" - else - cat - fi | \ - sort -u >> \ - "${tmp_dir}/pkgnames" -fi - # harvest from the package-regexes if [ -s "${tmp_dir}/package-regexes" ]; then # shellcheck disable=SC2016 @@ -312,77 +212,79 @@ if [ -s "${tmp_dir}/package-regexes" ]; then printf 'LOAD DATA LOCAL INFILE "%s" INTO TABLE `names` (`name`);\n' \ "${tmp_dir}/package-regexes" - printf 'SELECT DISTINCT "pkgbase",`package_sources`.`pkgbase`,`upstream_repositories`.`name`' + printf 'SELECT DISTINCT ' + printf '"any",' + printf '`package_sources`.`pkgbase`,' + printf 'IF(' + printf '`package_sources`.`uses_upstream`,' + printf '`package_sources`.`git_revision`,' + printf '"0000000000000000000000000000000000000000"' + printf '),' + printf 'IF(' + printf '`package_sources`.`uses_modification`,' + printf '`package_sources`.`mod_git_revision`,' + printf '"0000000000000000000000000000000000000000"' + printf '),' + printf '`upstream_repositories`.`name`' printf ' FROM `names`' printf ' JOIN `package_sources`' printf ' ON `package_sources`.`pkgbase` REGEXP `names`.`name`' mysql_join_package_sources_upstream_repositories printf ';\n' - printf 'SELECT DISTINCT "pkgname",`binary_packages`.`pkgname`' - printf ' FROM `names`' - printf ' JOIN `binary_packages`' - printf ' ON `binary_packages`.`pkgname` REGEXP `names`.`name`;\n' + printf 'SELECT DISTINCT ' + printf '"any",' + printf '`package_sources`.`pkgbase`,' + printf 'IF(' + printf '`package_sources`.`uses_upstream`,' + printf '`package_sources`.`git_revision`,' + printf '"0000000000000000000000000000000000000000"' + printf '),' + printf 'IF(' + printf '`package_sources`.`uses_modification`,' + printf '`package_sources`.`mod_git_revision`,' + printf '"0000000000000000000000000000000000000000"' + printf '),' + printf '`upstream_repositories`.`name`' + printf ' FROM `binary_packages`' + mysql_join_binary_packages_build_assignments + mysql_join_build_assignments_package_sources + mysql_join_package_sources_upstream_repositories + printf ' JOIN `names`' + printf ' ON `binary_packages`.`pkgname` REGEXP `names`.`name`' + printf ' OR `package_sources`.`pkgbase` REGEXP `names`.`name`' + printf ' LEFT JOIN `versions`' + printf ' ON `versions`.`epoch`=`binary_packages`.`epoch`' + printf ' AND `versions`.`version`=`binary_packages`.`pkgver`' + printf ' WHERE NOT EXISTS (' + printf 'SELECT 1' + printf ' FROM `binary_packages` AS `newer_bp`' + printf ' JOIN `versions` AS `newer_v`' + printf ' ON `newer_v`.`epoch`=`newer_bp`.`epoch`' + printf ' AND `newer_v`.`version`=`newer_bp`.`pkgver`' + printf ' WHERE (`newer_v`.`order`>`versions`.`order`' + printf ' OR (' + printf '`newer_v`.`order`=`versions`.`order`' + printf ' AND `newer_bp`.`pkgrel`>`binary_packages`.`pkgrel`' + # sub_pkgrel does not need to be compared, as it is only + # relevant for binary_packages with the same build_assignment + printf ')' + printf ')' + printf ' AND `binary_packages`.`%s`=`newer_bp`.`%s`' \ + 'pkgname' 'pkgname' \ + 'architecture' 'architecture' + printf ');\n' } | \ mysql_run_query | \ tr '\t' ' ' | \ - sed -n ' - /^pkgbase / { - s/^\S\+ /any / - w /dev/stdout - d - } - /^pkgname / { - s/^\S\+ /any / - w /dev/stderr - d - } - ' \ - >>"${tmp_dir}/pkgbases" \ - 2>>"${tmp_dir}/pkgnames" + tac | awk '!seen[$0]++' | tac \ + >>"${tmp_dir}/pkgbases" fi -# shellcheck disable=SC2016 -{ - # create pkgbases to given pkgnames - if [ -s "${tmp_dir}/pkgnames" ]; then - printf 'CREATE TEMPORARY TABLE `pkgnames` (' - printf '`architecture` VARCHAR(16),' - printf '`pkgname` VARCHAR(64),' - printf 'UNIQUE KEY `content`(`architecture`,`pkgname`)' - printf ');\n' - printf 'LOAD DATA LOCAL INFILE "%s" INTO TABLE `pkgnames` COLUMNS TERMINATED BY " " (`architecture`,`pkgname`);\n' \ - "${tmp_dir}/pkgnames" - - printf 'SELECT DISTINCT' - printf ' "pkgbase",' - printf '`pkgnames`.`architecture`,' - printf '`package_sources`.`pkgbase`,' - printf '`upstream_repositories`.`name`' - printf ' FROM `pkgnames`' - printf ' JOIN `binary_packages`' - printf ' ON `binary_packages`.`pkgname`=`pkgnames`.`pkgname`' - mysql_join_binary_packages_build_assignments - mysql_join_build_assignments_package_sources - mysql_join_package_sources_upstream_repositories - printf ';\n' - - printf 'SELECT DISTINCT' - printf ' "pkgname",' - printf '`pkgnames`.`architecture`,' - printf '`pkgnames`.`pkgname`' - printf ' FROM `package_sources`' - mysql_join_package_sources_upstream_repositories - mysql_join_package_sources_build_assignments - mysql_join_build_assignments_binary_packages - printf ' RIGHT JOIN `pkgnames`' - printf ' ON `pkgnames`.`pkgname`=`binary_packages`.`pkgname`' - printf ' WHERE `package_sources`.`pkgbase` IS NULL;\n' - - printf 'DROP TEMPORARY TABLE `pkgnames`;\n' - fi - # auto-detect pkgbases - if ${auto}; then +# auto-detect pkgbases +if ${auto}; then + # shellcheck disable=SC2016 + { printf 'CREATE TEMPORARY TABLE `relevant_archs`(`id` SMALLINT, PRIMARY KEY `id`(`id`));\n' printf 'INSERT INTO `relevant_archs`(`id`)' printf ' SELECT `architectures`.`id`' @@ -485,7 +387,20 @@ fi "${tmp_dir}/ignore-packages" fi - printf 'SELECT DISTINCT "pkgbase",`ba_a`.`name`,`package_sources`.`pkgbase`,`upstream_repositories`.`name`' + printf 'SELECT DISTINCT ' + printf '`ba_a`.`name`,' + printf '`package_sources`.`pkgbase`,' + printf 'IF(' + printf '`package_sources`.`uses_upstream`,' + printf '`package_sources`.`git_revision`,' + printf '"0000000000000000000000000000000000000000"' + printf '),' + printf 'IF(' + printf '`package_sources`.`uses_modification`,' + printf '`package_sources`.`mod_git_revision`,' + printf '"0000000000000000000000000000000000000000"' + printf '),' + printf '`upstream_repositories`.`name`' printf ' FROM `least_stable_bp`' printf ' JOIN `binary_packages`' printf ' ON `least_stable_bp`.`id`=`binary_packages`.`id`' @@ -547,133 +462,48 @@ fi printf 'DROP TEMPORARY TABLE `least_stable_bp%s`;\n' \ '' '_copy' printf 'DROP TEMPORARY TABLE `ignore_packages`;\n' - fi -} | \ - mysql_run_query | \ - tr '\t' ' ' | \ - sed -n ' - /^pkgbase / { - s/^\S\+ // - w /dev/stderr - d - } - /^pkgname / { - s/^\S\+ // - w /dev/stdout - d - } - ' \ - 2>>"${tmp_dir}/pkgbases" \ - | sponge "${tmp_dir}/pkgnames" - -if [ ! -s "${tmp_dir}/pkgbases" ] && \ - [ ! -s "${tmp_dir}/pkgnames" ]; then + } \ + | mysql_run_query \ + | tr '\t' ' ' \ + | tac | awk '!seen[$0]++' | tac \ + >>"${tmp_dir}/pkgbases" +fi + +if [ ! -s "${tmp_dir}/pkgbases" ]; then >&2 echo 'No packages matched.' exit fi -for s in "${tmp_dir}/pkgbases" "${tmp_dir}/pkgnames"; do - if [ -s "${s}" ]; then - sort -u "${s}" | \ - sponge "${s}" - fi -done +tac "${tmp_dir}/pkgbases" | awk '!seen[$0]++' | tac \ +| sponge "${tmp_dir}/pkgbases" -# pkgnames -> pkgbases (with help from upstream) -if [ -s "${tmp_dir}/pkgnames" ]; then - while read -r architecture pkgname; do - content=$( - curl -Ss 'https://www.archlinux.org/packages/search/json/?name='"${pkgname}" | \ - tr ',' '\n' - ) - repo=$( - printf '%s\n' "${content}" | \ - sed -n ' - s/^\s*"repo"\s*:\s*"// - T - s/".*$// - T - p - ' - ) - pkgbase=$( - printf '%s\n' "${content}" | \ - sed -n ' - s/^\s*"pkgbase"\s*:\s*"// - T - s/".*$// - T - p - ' - ) - if [ -z "${pkgbase}" ] || [ -z "${repo}" ]; then - printf '%s %s\n' "${architecture}" "${pkgname}" - continue - fi - printf '%s %s %s\n' \ - "${architecture}" \ - "${pkgbase}" \ - "${repo}" >> \ - "${tmp_dir}/pkgbases" - done < \ - "${tmp_dir}/pkgnames" | \ - sponge "${tmp_dir}/pkgnames" -fi +if ${interactive}; then + echo "Which packages to rebuild? (Comma separated; Empty means all)" + nl "${tmp_dir}/pkgbases" + read -p "Choice: " pkg_rebuild_choice -if [ -s "${tmp_dir}/pkgnames" ]; then - >&2 echo 'Could not find some packages upstream:' - >&2 cat "${tmp_dir}/pkgnames" - exit 2 + if [ -n "$pkg_rebuild_choice" ]; then + readarray -td, pkg_rebuild_choice_array < <( printf '%s' "$pkg_rebuild_choice" | sed 's/\s//g;s/,\{2,\}/,/g' ) + sed -i -n "$(printf "%sp;" "${pkg_rebuild_choice_array[@]}")" "${tmp_dir}/pkgbases" + fi fi -sort -u "${tmp_dir}/pkgbases" \ -| sort -k3,3 \ -| sponge "${tmp_dir}/pkgbases" - # get the current HEADs - -# shellcheck disable=SC2016 -{ - printf 'SELECT' - printf ' `upstream_repositories`.`name`,' - printf '`git_repositories`.`head`' - printf ' FROM `upstream_repositories`' - mysql_join_upstream_repositories_git_repositories -} \ -| mysql_run_query \ -| tr '\t' ' ' \ -| sort -k1,1 \ -| join -1 3 -2 1 -o 1.1,1.2,1.3,2.2 "${tmp_dir}/pkgbases" - \ -| sponge "${tmp_dir}/pkgbases" - if ${update}; then - cut -d' ' -f 2,3,4 "${tmp_dir}/pkgbases" \ - | sort -u \ - | while read -r pkgbase repo git_rev; do + cut -d' ' -f 2,3,4,5 "${tmp_dir}/pkgbases" \ + | while read -r pkgbase git_rev git_mod_rev repo; do success=false # shellcheck disable=SC2154 - for gr_r in \ - "${git_rev}:${repo}" \ - "${repo_heads__packages}:core" \ - "${repo_heads__packages}:extra" \ - "${repo_heads__community}:community"; do - printf '%s ' "${pkgbase}" "${gr_r%:*}" "${repo_heads__archlinux32}" "${gr_r#*:}" | \ - sed 's/ $/\n/' - if mysql_generate_package_metadata "${repository_ids__any_build_list}" "${pkgbase}" "${gr_r%:*}" "${repo_heads__archlinux32}" "${gr_r#*:}"; then - success=true - break - fi - done - if ! ${success} && \ + printf '%s ' "${pkgbase}" "${git_rev}" "${git_mod_rev}" "${repo_heads__archlinux32}" "${repo}" \ + | sed 's/ $/\n/' + if ! mysql_generate_package_metadata "${repository_ids__any_build_list}" "${pkgbase}" "${git_rev}" "${git_mod_rev}" "${repo}" && \ ! ${ignore_mysql_generate_package_metadata_errors}; then exit 2 fi done - cut -d' ' -f1 < \ - "${tmp_dir}/pkgbases" | \ - sort -u | \ - sponge "${tmp_dir}/pkgbases" + cut -d' ' -f2 "${tmp_dir}/pkgbases" \ + | sponge "${tmp_dir}/pkgbases" # shellcheck disable=SC2016 { @@ -794,8 +624,8 @@ if ${update}; then mysql_join_binary_packages_binary_packages_in_repositories 'j_bp' 'j_bpir' )"' AND `j_bpir`.`repository`='"${repository_ids__any_build_list}" \ '`repositories`.`stability`='"${repository_stability_ids__forbidden}" - } | \ - mysql_run_query + } \ + | mysql_run_query mysql_cleanup @@ -804,8 +634,8 @@ if ${update}; then mysql_find_build_assignment_loops # remove duplicate binary_packages from "build-list" - mysql_query_remove_old_binary_packages_from_build_list | \ - mysql_run_query + mysql_query_remove_old_binary_packages_from_build_list \ + | mysql_run_query else cat "${tmp_dir}/pkgbases" fi diff --git a/bin/strict-bashism-check b/bin/strict-bashism-check index 8e58e05..f1a8de6 100755 --- a/bin/strict-bashism-check +++ b/bin/strict-bashism-check @@ -8,6 +8,11 @@ else against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 fi +check_files=$( + git diff --cached --name-status "${against}" \ + | cut -f2 +) + # If you want to allow non-ASCII filenames set this variable to true. allownonascii=$(git config --bool hooks.allownonascii) @@ -90,10 +95,14 @@ if command -v shellcheck >/dev/null 2>&1; then find bin conf lib \ -type f \ -executable \ - -not -name 'opcode' \ - -not -name 'opcode_list' \ -not -name '.*' \ - -execdir shellcheck -x '{}' \; 2>&1 + | grep -xF "${check_files}" \ + | while read -r file; do + ( + cd "${file%/*}" || exit $? + shellcheck -x "${file##*/}" 2>&1 + ) + done ) if [ -n "${errors}" ]; then diff --git a/bin/watch-build-logs b/bin/watch-build-logs new file mode 100755 index 0000000..064dc85 --- /dev/null +++ b/bin/watch-build-logs @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +trap 'echo ""; kill -- -$$' INT + +# shellcheck source=../lib/load-configuration +. "${0%/*}/../lib/load-configuration" + +runtail() { + # tail will quit with follow=name when the file is deleted + # thus no manual cleanup is needed + tail --follow=name "$1" -n +1 2>/dev/null & +} + +# Check if we're already building something, and if so, tail it before we wait for new files +CURRENTLOG=$(printf '%s\n' "$work_dir/"tmp.build-packages.*/*.build-log | sort | tail -n 1) +if [[ -f $CURRENTLOG ]]; then + runtail "$CURRENTLOG" +fi + +inotifywait -P -r -m "$work_dir" -e create --include '(\.build-log$)|(tmp\.build-packages\.[a-zA-Z0-9]+$)' --format '%w%f' -q | + while read -r FILE; do + if [[ -z $FILE || -d $FILE ]]; then + continue + fi + + runtail "$FILE" + done diff --git a/conf/master.conf.example b/conf/master.conf.example index 2234dfd..5cf9c90 100755 --- a/conf/master.conf.example +++ b/conf/master.conf.example @@ -3,7 +3,7 @@ # configurable variables used on the build master # default values are given as comments -# To change variables from their default, copy this file to common.conf, +# To change variables from their default, copy this file to master.conf, # uncomment and change the desired variables. #repo_key='0xdeadbeef' @@ -36,10 +36,12 @@ #mirror_refresh_trigger_urls='' # command to access the mysql database -#mysql_command='mysql buildmaster' +#mysql_command='mariadb buildmaster' #build_list_lock_file="${work_dir}/build-list.lock" +#check_mirrors_lock_file="${work_dir}/check-mirrors.lock" #harvest_commit_times_lock_file="${work_dir}/harvest-commit-times.lock" +#intentions_lock_file="${work_dir}/intentions.lock" #package_database_lock_file="${work_dir}/package-database.lock" #sanity_check_lock_file="${work_dir}/sanity-check.lock" #status_lock_file="${work_dir}/status.lock" diff --git a/conf/slave.conf.example b/conf/slave.conf.example index 3704e23..f378935 100755 --- a/conf/slave.conf.example +++ b/conf/slave.conf.example @@ -3,7 +3,7 @@ # configurable variables used on the build slaves # default values are given as comments -# To change variables from their default, copy this file to common.conf, +# To change variables from their default, copy this file to slave.conf, # uncomment and change the desired variables. #master_build_server="buildmaster.archlinux32.org" @@ -13,9 +13,7 @@ #package_key='0x15eebadc0de' -#repo_names='packages community archlinux32' -#repo_paths__packages="${work_dir}/repos/packages" -#repo_paths__community="${work_dir}/repos/community" +#repo_names='archlinux32' #repo_paths__archlinux32="${work_dir}/repos/packages32" # mirror of sources, identified (solely) by hash @@ -24,7 +22,7 @@ # what should be tried in what order to somehow repair a broken build #straws_that_might_repair_failing_builds=$( # printf '%s\n' \ -# ':mirrored_source:mirrored_source_by_hash:' \ +# ':mirrored_source_by_hash:' \ # ':clean_chroot:haskell_without_check:' \ # ':with_build_support:' \ # ':with_build_support:clean_chroot:' diff --git a/lib/common-functions b/lib/common-functions index 8c263ab..f13b1f2 100755 --- a/lib/common-functions +++ b/lib/common-functions @@ -9,109 +9,6 @@ if [ -z "${base_dir}" ]; then . '../lib/load-configuration' fi -# find_pkgbuilds package repository git_repository git_revision mod_git_revision -# find the PKGBUILD and modification of $package from $repository -# sets $PKGBUILD and $PKGBUILD_mod - -find_pkgbuilds() { - - local package="$1" - local repository="$2" - local git_repository="$3" - local git_revision="$4" - local mod_git_revision="$5" - - local repo_path - eval 'repo_path="${repo_paths__'"${git_repository}"'}"' - - if [ ! "$(git -C "${repo_path}" cat-file -t "${git_revision}" 2> /dev/null)" = "commit" ]; then - >&2 printf 'Repository %s does not contain commit %s, but it should.\n' \ - "${git_repository}" \ - "${git_revision}" - return 2 - fi - - if [ ! "$(git -C "${repo_paths__archlinux32}" cat-file -t "${mod_git_revision}" 2> /dev/null)" = "commit" ]; then - >&2 printf 'Repository archlinux32 does not contain commit %s, but it should.\n' \ - "${mod_git_revision}" - return 2 - fi - - PKGBUILD=$( - git -C "${repo_path}" archive "${git_revision}" -- "${package}/repos/${repository}-*/PKGBUILD" 2> /dev/null | \ - tar -t 2> /dev/null | \ - grep -- '/PKGBUILD$' | \ - grep -v -- '-i686/PKGBUILD$' | \ - grep -v -- '[-/]\(staging\|testing\|unstable\)-[^/]\+/PKGBUILD$' | \ - sort | \ - tail -n1 - ) - - PKGBUILD_mod=$( - git -C "${repo_paths__archlinux32}" archive "${mod_git_revision}" -- "${repository}/${package}/PKGBUILD" 2> /dev/null | \ - tar -t "${repository}/${package}/PKGBUILD" 2> /dev/null - ) || true - - if [ -z "${PKGBUILD}" ] && \ - [ -z "${PKGBUILD_mod}" ]; then - >&2 printf 'Neither PKGBUILD nor modification of PKGBUILD found for package "%s" from %s (%s), revisions %s and %s.\n' \ - "${package}" \ - "${repository}" \ - "${git_repository}" \ - "${git_revision}" \ - "${mod_git_revision}" - return 1 - fi - -} - -# find_repository_with_commit commit -# find the repository which has $commit - -find_repository_with_commit() { - - local repository - - for repository in ${repo_names}; do - # shellcheck disable=SC2016 - if [ "$(eval git -C "$(printf '"${repo_paths__%s}"' "${repository}")" cat-file -t '"$1"' 2> /dev/null)" = "commit" ]; then - echo "${repository}" - return 0 - fi - done - >&2 printf 'find_repository_with_commit: Cannot find repository with commit "%s"\n' "$1" - return 2 - -} - -# find_git_repository_to_package_repository repository -# find the git repository which tracks the package repository $repository - -find_git_repository_to_package_repository() { - - local repository - - repository=$( - # shellcheck disable=SC2016 - { - printf 'SELECT `git_repositories`.`name`' - printf ' FROM `git_repositories`' - mysql_join_git_repositories_upstream_repositories - printf ' WHERE `upstream_repositories`.`name`=from_base64("%s");\n' \ - "$(printf '%s' "$1" | base64 -w0)" - } | \ - mysql_run_query - ) - if [ -z "${repository}" ]; then - >&2 echo "can't find git repository with package repository '$1'" - exit 1 - else - echo "${repository}" - return 0 - fi - -} - # ls_master_mirror $path # list content of $path on the master mirror (via rsync) @@ -122,7 +19,8 @@ ls_master_mirror() { ${master_mirror_rsync_command} \ "${master_mirror_rsync_directory}/${path}/" | \ grep -v '\s\.$' | \ - awk '{print $5}' + awk '{print $5}' | \ + grep -v build-support-manual } @@ -277,8 +175,8 @@ remove_old_package_versions() { # wait between minimum and minimum+diff seconds (diff defaults to 30) wait_some_time() { - local minimum=$1 - local diff=$2 + local minimum="$1" + local diff="$2" local random if [ -z "${diff}" ]; then @@ -304,29 +202,27 @@ str_to_regex() { ' } -# make_source_info $package $repository $git_revision $mod_git_revision $output -# create .SRCINFO from PKGBUILD within git repositories, output to $output - -make_source_info() { +make_source_info_using_cache() { local package="$1" local repository="$2" local git_revision="$3" local mod_git_revision="$4" local output="$5" - local git_repo - local PKGBUILD - local PKGBUILD_mod + curl -LSs "https://buildmaster.archlinux32.org/pkginfo/${package}=${repository}=${git_revision}=${mod_git_revision}" \ + >"${output}" +} - if ! git_repo=$(find_repository_with_commit "${git_revision}") || \ - [ -z "${git_repo}" ]; then - return 1 - fi +# make_source_info $package $repository $git_revision $mod_git_revision $output +# create .SRCINFO from PKGBUILD within git repositories, output to $output +make_source_info() { - if ! find_pkgbuilds "${package}" "${repository}" "${git_repo}" "${git_revision}" "${mod_git_revision}"; then - return 1 - fi + local package="$1" + local repository="$2" + local git_revision="$3" + local mod_git_revision="$4" + local output="$5" ( # the new shell is intentional @@ -336,14 +232,10 @@ make_source_info() { tmp_dir=$(mktemp -d "${work_dir}/tmp.make_source_info.XXXXXX") trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT - extract_source_directory "${git_repo}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" '0' + extract_source_directory "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" '0' { cd "${tmp_dir}" - # some additional info - printf 'upstream_git_repository = %s\n' "${git_repo}" - printf 'PKGBUILD = %s\n' "${PKGBUILD}" - printf 'PKGBUILD_mod = %s\n' "${PKGBUILD_mod}" makepkg --printsrcinfo cd .. } > \ @@ -358,6 +250,7 @@ make_source_info() { p ' "${tmp_dir}/SRCINFO" )" + # shellcheck disable=SC2031 sed -i ' /^pkgname = /! b /= gtk-doc$/ b @@ -447,7 +340,7 @@ mangle_pkgbuild() { /^arch=[^#]*any/!{ /^arch=(/s/(/(i486 i686 pentium4 / } - s/^\(\s*pkgrel=\)['"'"'"]\?\([0-9.]\+\)['"'"'"]\?\s*\(#.*\)\?$/\1"\2'"${sub_pkgrel}"'"/ + s/^\(\s*pkgrel=\)['"'"'"]\?\([0-9]\+\)\(\.[0-9.]*\)\?['"'"'"]\?\s*\(#.*\)\?$/\1"\2'"${sub_pkgrel:-\\3}"'"/ ' "${PKGBUILD}" # shellcheck disable=SC2016 @@ -520,42 +413,105 @@ find_package_repository_to_package() { "${git_repository}" \ "${git_commit}" >&2 printf '%s\n' "${repo}" - return 1 + >&2 printf 'trying to filter based on git\n' + + if ! repo=$( + # shellcheck disable=SC2016 + { + printf 'SELECT `upstream_repositories`.`name`' + printf ' FROM `upstream_repositories`' + mysql_join_upstream_repositories_git_repositories + printf ' WHERE `git_repositories`.`name`=from_base64("%s")' \ + "$( + printf '%s' "${git_repository}" \ + | base64 -w0 + )" + } | \ + mysql_run_query 'unimportant' | \ + grep -xF "${repo}" + ); then + >&2 printf 'find_package_repository_to_package %s %s %s: no repo found after filtering\n' \ + "${package}" \ + "${git_repository}" \ + "${git_commit}" + return 1 + fi + + if [ "$( + echo "${repo}" | \ + wc -l + )" -ne 1 ]; then + >&2 printf 'find_package_repository_to_package %s %s %s: still multiple repos found after filter:\n' \ + "${package}" \ + "${git_repository}" \ + "${git_commit}" + >&2 printf '%s\n' "${repo}" + return 1 + fi fi echo "${repo}" } -# extract_source_directory $git_repo $rev $mod_rev $output $sub_pkgrel +# extract_source_directory $pkgbase $repository $revision $mod_revision $output $sub_pkgrel # extract files found in the svn/git source directories -# $PKGBUILD and $PKGBUILD_mod are expected to be set correctly extract_source_directory() { - local git_repo="$1" - # shellcheck disable=SC2034 - local rev="$2" - local mod_rev="$3" - local output="$4" - local sub_pkgrel="$5" - - if [ -n "${PKGBUILD}" ]; then - eval 'git -C "${repo_paths__'"${git_repo}"'}" archive "${rev}" -- "${PKGBUILD%/*}"' | \ - tar -x --strip-components=3 -C "${output}" - printf '\n' >> \ - "${output}/PKGBUILD" + local pkgbase="$1" + local repository="$2" + local revision="$3" + local mod_revision="$4" + local output="$5" + local sub_pkgrel="$6" + local res + local tmptarfile + local pkgtarfile + + if [ -n "${revision}" ] \ + && [ "${revision}" != '0000000000000000000000000000000000000000' ] \ + && [ "${repository}" != 'build-support' ]; then + local pkgbase_translated + pkgbase_translated=$(gitlab_project_name_to_path "${pkgbase}") + tmptarfile=$(mktemp "${tmp_dir}"'/tmp.upstream-package.XXXXXXXXXX') + url="https://buildmaster.archlinux32.org/upstream-packages/${pkgbase_translated}-${revision}.tar.gz" + for i in {1..4}; do + curl -o "$tmptarfile" -fLSs "${url}" + res=$? + if [ "$res" -ne 0 ]; then + >&2 printf 'Download upstream-package "%s" from upstream via buildmaster cache failed. Curl exit code was %s.' \ + "${url}" \ + "${res}" + return 1 + fi + + # If zero bytes, try again + if [ -s "${tmptarfile}" ]; then + break + fi + + sleep 5 + done + if [ -f "${tmptarfile}" ]; then + tar -xz -f "${tmptarfile}" --strip-components=1 -C "${output}" -- "${pkgbase_translated}-${revision}" + printf '\n' >> \ + "${output}/PKGBUILD" + else + >&2 echo 'No upstream tarfile, assuming the package is a local one and has a full PKGBUILD not a diff-PKGBUILD.' + fi fi - if [ -n "${PKGBUILD_mod}" ]; then - git -C "${repo_paths__archlinux32}" archive "${mod_rev}" -- "${PKGBUILD_mod%/*}" | \ - tar -x --overwrite --exclude 'PKGBUILD' --strip-components=2 -C "${output}" 2> /dev/null || \ - true - git -C "${repo_paths__archlinux32}" archive "${mod_rev}" -- "${PKGBUILD_mod}" | \ - tar -Ox "${PKGBUILD_mod}" >> \ - "${output}/PKGBUILD" - printf '\n' >> \ - "${output}/PKGBUILD" + if [ -n "${mod_revision}" ] \ + && [ "${mod_revision}" != '0000000000000000000000000000000000000000' ]; then + git -C "${repo_paths__archlinux32}" archive "${mod_revision}" -- "${repository}/${pkgbase}" \ + |tar -x --overwrite --exclude 'PKGBUILD' --strip-components=2 -C "${output}" 2> /dev/null \ + ||true + git -C "${repo_paths__archlinux32}" archive "${mod_revision}" -- "${repository}/${pkgbase}/PKGBUILD" \ + |tar -Ox "${repository}/${pkgbase}/PKGBUILD" \ + >>"${output}/PKGBUILD" + printf '\n' \ + >>"${output}/PKGBUILD" fi # we do not want to update pkgver, so we just undefine it @@ -570,7 +526,6 @@ extract_source_directory() { # we don't want write permissions on the PKGBUILD - otherwise pkgver() # will change the version! (**HACK**) chmod oga-w "${output}/PKGBUILD" - } # download_sources_by_hash @@ -950,31 +905,6 @@ failsafe_rsync() { return 1 } -# apply_trunk_patch source_dir diff_source_dir -# apply a patch between diff_source_dir/PKGBUILD and -# diff_source_dir/../../trunk/PKGBUILD onto source_dir/PKGBUILD -apply_trunk_patch() { - local source_dir="$1" - local diff_source_dir="$2" - if [ -z "${diff_source_dir}" ]; then - # no diff_source_dir => no action - return - fi - chmod +w "${source_dir}/PKGBUILD" - diff -u3 "${diff_source_dir}/PKGBUILD" "${diff_source_dir}/../../trunk/PKGBUILD" \ - | sed ' - 1,2 s#^\(\(+++\|---\)\s\+\)\S\+/\(PKGBUILD\s.*\)$#\1\3# - ' \ - | patch -p0 "${source_dir}/PKGBUILD" - chmod -w "${source_dir}/PKGBUILD" - find "${diff_source_dir}/../../trunk/" \ - -mindepth 1 \ - -maxdepth 1 \ - -not -name 'PKGBUILD' \ - -type f \ - -exec cp '{}' "${source_dir}" \; -} - # update_blocked_packages_count # update the count how many packages are blocked by a build assignment update_blocked_packages_count() { @@ -1129,4 +1059,29 @@ expand_blacklist_architectures() { sort -k1,1 \ | join -1 1 -2 1 -o 1.2,2.2 "$1" - \ | sort -u + rm "$1" +} + +# taken verbatim from upstream archlinux: +# https://gitlab.archlinux.org/archlinux/devtools/-/raw/master/src/lib/api/gitlab.sh + +# Convert arbitrary project names to GitLab valid path names. +# +# GitLab has several limitations on project and group names and also maintains +# a list of reserved keywords as documented on their docs. +# https://docs.gitlab.com/ee/user/reserved_names.html +# +# 1. replace single '+' between word boundaries with '-' +# 2. replace any other '+' with literal 'plus' +# 3. replace any special chars other than '_', '-' and '.' with '-' +# 4. replace consecutive '_-' chars with a single '-' +# 5. replace 'tree' with 'unix-tree' due to GitLab reserved keyword +gitlab_project_name_to_path() { + local name=$1 + printf "%s" "${name}" \ + | sed -E 's/([a-zA-Z0-9]+)\+([a-zA-Z]+)/\1-\2/g' \ + | sed -E 's/\+/plus/g' \ + | sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \ + | sed -E 's/[_\-]{2,}/-/g' \ + | sed -E 's/^tree$/unix-tree/g' } diff --git a/lib/intentions-queue b/lib/intentions-queue index 802d1ca..f244e1b 100755 --- a/lib/intentions-queue +++ b/lib/intentions-queue @@ -40,6 +40,7 @@ intent_something() { # shellcheck disable=SC2016 printf '%s\n' \ '#!/bin/sh' \ + '# called by '"${0}" \ '[ -n "${base_dir}" ] || . '"${base_dir}"'/lib/load-configuration' cat printf 'rm "%s"\n' "${intentions_directory}/intention.${next_number}" @@ -91,7 +92,15 @@ intentions_left() { # execute_all_intentions # executes all intentions execute_all_intentions() { + exec 6> "${intentions_lock_file}" + if ! verbose_flock 6; then + >&2 echo 'someone already executes intentions - no need to schedule a second run' + return + fi + while intentions_left -n; do execute_intention done + + flock -u 6 } diff --git a/lib/load-configuration b/lib/load-configuration index 4c825f1..e7af638 100755 --- a/lib/load-configuration +++ b/lib/load-configuration @@ -73,9 +73,7 @@ fi if ${i_am_the_master}; then releng_directory="${work_dir}/repos/releng" else - repo_names='packages community archlinux32' - repo_paths__packages="${work_dir}/repos/packages" - repo_paths__community="${work_dir}/repos/community" + repo_names='archlinux32' repo_paths__archlinux32="${work_dir}/repos/packages32" fi @@ -101,7 +99,7 @@ source_by_hash_mirror='https://sources.archlinux32.org/' # what should be tried in what order to somehow repair a broken build straws_that_might_repair_failing_builds=$( printf '%s\n' \ - ':mirrored_source:mirrored_source_by_hash:' \ + ':mirrored_source_by_hash:' \ ':clean_chroot:haskell_without_check:' \ ':with_build_support:' \ ':with_build_support:clean_chroot:' @@ -126,7 +124,7 @@ mirror_update_command='' mirror_refresh_trigger_urls='' # command to access the mysql database -mysql_command='mysql buildmaster' +mysql_command='mariadb buildmaster' # how long should packages be in [community-testing]/[testing] before # automatically being marked as tested @@ -143,21 +141,23 @@ fi # possibly pull in custom modifications -if [ -r "${base_dir}/conf/common.conf" ]; then +conf_dir="${CONFIG_DIR:-${base_dir}/conf}" + +if [ -r "${conf_dir}/common.conf" ]; then # shellcheck source=/dev/null - . "${base_dir}/conf/common.conf" + . "${conf_dir}/common.conf" fi if ${i_am_the_master} && \ - [ -r "${base_dir}/conf/master.conf" ]; then + [ -r "${conf_dir}/master.conf" ]; then # shellcheck source=/dev/null - . "${base_dir}/conf/master.conf" + . "${conf_dir}/master.conf" fi if ! ${i_am_the_master} && \ - [ -r "${base_dir}/conf/slave.conf" ]; then + [ -r "${conf_dir}/slave.conf" ]; then # shellcheck source=../conf/slave.conf.example - . "${base_dir}/conf/slave.conf" + . "${conf_dir}/slave.conf" fi # check / set up environment @@ -166,10 +166,18 @@ if [ -z "${build_list_lock_file}" ]; then build_list_lock_file="${work_dir}/build-list.lock" fi +if [ -z "${check_mirrors_lock_file}" ]; then + check_mirrors_lock_file="${work_dir}/check-mirrors.lock" +fi + if [ -z "${harvest_commit_times_lock_file}" ]; then harvest_commit_times_lock_file="${work_dir}/harvest-commit-times.lock" fi +if [ -z "${intentions_lock_file}" ]; then + intentions_lock_file="${work_dir}/intentions.lock" +fi + if [ -z "${package_database_lock_file}" ]; then package_database_lock_file="${work_dir}/package-database.lock" fi @@ -212,8 +220,12 @@ for repo in ${repo_names} 'releng'; do 'releng') repo_source='git@git.archlinux32.org:archlinux32/releng.git' ;; + 'state') + repo_source='https://gitlab.archlinux.org/archlinux/packaging/state.git' + ;; *) - repo_source="https://github.com/archlinux/svntogit-${repo}.git" + >&2 printf 'unknown repository "%s"\n' "${repo}" + exit 1 ;; esac git clone --mirror "${repo_source}" "${repo_path}" diff --git a/lib/mysql-functions b/lib/mysql-functions index af2c3ba..d58a7f5 100755 --- a/lib/mysql-functions +++ b/lib/mysql-functions @@ -33,6 +33,7 @@ mysql_run_query() { local file local files local number + local trial file_name_extra='' if [ "$1" = 'unimportant' ]; then @@ -46,10 +47,19 @@ mysql_run_query() { query_stdin=$(mktemp "${work_dir}/tmp.mysql-functions.${file_name_extra}query.$(date +'%Y-%m-%dT%T').XXXXXX.stdin") query_stdout="${query_stdin%.stdin}.stdout" query_stderr="${query_stdin%.stdin}.stderr" - cat > "${query_stdin}" - for _ in $(seq 10); do + { + printf -- '-- called by %s\n' "$0" + if printf '%s\n' "$0" \ + | grep -qF intention; then + sed ' + s@^@-- : @ + ' "$0" + fi + cat + } > "${query_stdin}" + for trial in $(seq 15); do if [ -f "${query_stdout}" ]; then - wait_some_time 10 10 + wait_some_time "$((20*trial))" "$((20*trial))" fi if ${mysql_command} -N --raw --batch "$@" \ < "${query_stdin}" \ @@ -147,15 +157,15 @@ mysql_add_package_source() { local repo local upstream_package_repository_id - if grep -qx 'PKGBUILD_mod = \S\+' "${srcinfo_file}"; then - uses_modification=1 - else + if [ "${mod_git_revision}" = '0000000000000000000000000000000000000000' ]; then uses_modification=0 - fi - if grep -qx 'PKGBUILD = \S\+' "${srcinfo_file}"; then - uses_upstream=1 else + uses_modification=1 + fi + if [ "${git_revision}" = '0000000000000000000000000000000000000000' ]; then uses_upstream=0 + else + uses_upstream=1 fi upstream_package_repository_id=$( @@ -231,7 +241,7 @@ mysql_generate_package_metadata() { temp_dir=$(mktemp -d 'tmp.mysql-functions.mysql_generate_package_metadata.XXXXXXXXXX' --tmpdir) trap 'rm -rf --one-file-system "${temp_dir}"' EXIT - if ! make_source_info "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"; then + if ! make_source_info_using_cache "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"; then >&2 printf '"make_source_info %s %s %s %s %s" failed.\n' "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO" exit 2 fi @@ -255,6 +265,7 @@ mysql_generate_package_metadata() { ) if [ -z "${pkgbase}" ]; then >&2 printf '"make_source_info" did not return a "pkgbase" - eh, what?\n' + >&2 sed 's@.*@>\0<@' "${temp_dir}/SRCINFO" exit 2 fi @@ -702,6 +713,16 @@ mysql_sanity_check() { mysql_join_binary_packages_in_repositories_repositories printf ' WHERE `repositories`.`is_on_master_mirror`' printf ' AND `binary_packages`.`sha512sum` IS NULL;\n' + printf 'SELECT DISTINCT CONCAT("non-virtual binary-package without signature: ",' + mysql_package_name_query + printf ') FROM `binary_packages`' + mysql_join_binary_packages_architectures + printf ' LEFT' + mysql_join_binary_packages_compressions + mysql_join_binary_packages_binary_packages_in_repositories + mysql_join_binary_packages_in_repositories_repositories + printf ' WHERE `repositories`.`is_on_master_mirror`' + printf ' AND `binary_packages`.`signing_key` IS NULL;\n' } | \ mysql_run_query | \ sed ' @@ -1266,6 +1287,18 @@ mysql_query_select_pkgbase_and_revision() { mysql_join_package_sources_upstream_repositories } +# mysql_package_version_query [binary_packages] +# print a mysql query of the full version of a package + +mysql_package_version_query() { + local bp_name="${1:-binary_packages}" + printf 'CONCAT(' + printf 'IF(`%s`.`epoch`=0,"",CONCAT(`%s`.`epoch`,":")),' "${bp_name}" "${bp_name}" + printf '`%s`.`pkgver`,"-",' "${bp_name}" + printf '`%s`.`pkgrel`' "${bp_name}" + printf ')' +} + # mysql_package_name_query [binary_packages] [architectures] [compressions] # print a mysql query of the full name of a package file @@ -1371,9 +1404,7 @@ for link in \ \ 'ssh_keys:owner:persons' \ \ - 'ssh_log:build_slave:build_slaves' \ - \ - 'upstream_repositories:git_repository:git_repositories'; do + 'ssh_log:build_slave:build_slaves'; do # A join for these cannot be done, because it's not clear on what to join: # 'repository_stability_relations:more_stable:repository_stabilities' # 'repository_stability_relations:less_stable:repository_stabilities' @@ -1745,20 +1776,24 @@ mysql_query_ordering_correct() { # active build slaves mysql_determine_majority_build_slave_architecture_id() { { - printf 'SELECT' - printf ' COUNT(DISTINCT `ssh_log`.`id`) AS `count`,' - printf '`architectures`.`id`' - printf ' FROM `ssh_log`' - printf ' JOIN `architectures`' - printf ' ON `ssh_log`.`parameters`=CONCAT(`architectures`.`name`," ")' - printf ' WHERE `action`="get-assignment"' - printf ' AND `ssh_log`.`date`>ADDTIME(NOW(),"-1 00:00:00")' - printf ' GROUP BY `ssh_log`.`parameters`' - printf ' ORDER BY `count` DESC' - printf ' LIMIT 1' + { + printf 'SELECT' + printf ' COUNT(DISTINCT `ssh_log`.`id`) AS `count`,' + printf '`architectures`.`id`' + printf ' FROM `ssh_log`' + printf ' JOIN `architectures`' + printf ' ON `ssh_log`.`parameters`=CONCAT(`architectures`.`name`," ")' + printf ' WHERE `action`="get-assignment"' + printf ' AND `ssh_log`.`date`>ADDTIME(NOW(),"-1 00:00:00")' + printf ' GROUP BY `ssh_log`.`parameters`' + printf ' ORDER BY `count` DESC' + printf ' LIMIT 1' + } | \ + mysql_run_query | \ + cut -f2 + echo '-1' } | \ - mysql_run_query | \ - cut -f2 + head -n1 } # mysql_query_delete_packages $package_sources_condition $repositories_condition diff --git a/lib/opcode_list b/lib/opcode_list deleted file mode 100755 index 213321f..0000000 --- a/lib/opcode_list +++ /dev/null @@ -1,1706 +0,0 @@ - -# Willamette MMX instructions (SSE2 SIMD Integer Instructions) -Opcode_SSE2="${Opcode_SSE2} movd movdb movdw movdl movdq" -Opcode_SSE2="${Opcode_SSE2} movdqa" -Opcode_SSE2="${Opcode_SSE2} movdqu" -Opcode_SSE2="${Opcode_SSE2} movdq2q" -Opcode_X64_SSE2="${Opcode_X64_SSE2} movq" -Opcode_SSE2="${Opcode_SSE2} movq2dq" -Opcode_SSE2="${Opcode_SSE2} packsswb packsswbb packsswbw packsswbl packsswbq" -Opcode_SSE2="${Opcode_SSE2} packssdw packssdwb packssdww packssdwl packssdwq" -Opcode_SSE2="${Opcode_SSE2} packuswb packuswbb packuswbw packuswbl packuswbq" -Opcode_SSE2="${Opcode_SSE2} paddb paddbb paddbw paddbl paddbq" -Opcode_SSE2="${Opcode_SSE2} paddw paddwb paddww paddwl paddwq" -Opcode_SSE2="${Opcode_SSE2} paddd padddb padddw padddl padddq" -Opcode_SSE2="${Opcode_SSE2} paddq paddqb paddqw paddql paddqq" -Opcode_SSE2="${Opcode_SSE2} paddsb paddsbb paddsbw paddsbl paddsbq" -Opcode_SSE2="${Opcode_SSE2} paddsw paddswb paddsww paddswl paddswq" -Opcode_SSE2="${Opcode_SSE2} paddusb paddusbb paddusbw paddusbl paddusbq" -Opcode_SSE2="${Opcode_SSE2} paddusw padduswb paddusww padduswl padduswq" -Opcode_SSE2="${Opcode_SSE2} pand pandb pandw pandl pandq" -Opcode_SSE2="${Opcode_SSE2} pandn pandnb pandnw pandnl pandnq" -Opcode_SSE2="${Opcode_SSE2} pavgb pavgbb pavgbw pavgbl pavgbq" -Opcode_SSE2="${Opcode_SSE2} pavgw pavgwb pavgww pavgwl pavgwq" -Opcode_SSE2="${Opcode_SSE2} pcmpeqb pcmpeqbb pcmpeqbw pcmpeqbl pcmpeqbq" -Opcode_SSE2="${Opcode_SSE2} pcmpeqw pcmpeqwb pcmpeqww pcmpeqwl pcmpeqwq" -Opcode_SSE2="${Opcode_SSE2} pcmpeqd pcmpeqdb pcmpeqdw pcmpeqdl pcmpeqdq" -Opcode_SSE2="${Opcode_SSE2} pcmpgtb pcmpgtbb pcmpgtbw pcmpgtbl pcmpgtbq" -Opcode_SSE2="${Opcode_SSE2} pcmpgtw pcmpgtwb pcmpgtww pcmpgtwl pcmpgtwq" -Opcode_SSE2="${Opcode_SSE2} pcmpgtd pcmpgtdb pcmpgtdw pcmpgtdl pcmpgtdq" -Opcode_SSE2="${Opcode_SSE2} pextrw pextrwb pextrww pextrwl pextrwq" -Opcode_SSE2="${Opcode_SSE2} pinsrw pinsrwb pinsrww pinsrwl pinsrwq" -Opcode_SSE2="${Opcode_SSE2} pmaddwd pmaddwdb pmaddwdw pmaddwdl pmaddwdq" -Opcode_SSE2="${Opcode_SSE2} pmaxsw pmaxswb pmaxsww pmaxswl pmaxswq" -Opcode_SSE2="${Opcode_SSE2} pmaxub pmaxubb pmaxubw pmaxubl pmaxubq" -Opcode_SSE2="${Opcode_SSE2} pminsw pminswb pminsww pminswl pminswq" -Opcode_SSE2="${Opcode_SSE2} pminub pminubb pminubw pminubl pminubq" -Opcode_SSE2="${Opcode_SSE2} pmovmskb" -Opcode_SSE2="${Opcode_SSE2} pmulhuw pmulhuwb pmulhuww pmulhuwl pmulhuwq" -Opcode_SSE2="${Opcode_SSE2} pmulhw pmulhwb pmulhww pmulhwl pmulhwq" -Opcode_SSE2="${Opcode_SSE2} pmullw pmullwb pmullww pmullwl pmullwq" -Opcode_SSE2="${Opcode_SSE2} pmuludq pmuludqb pmuludqw pmuludql pmuludqq" -Opcode_SSE2="${Opcode_SSE2} por porb porw porl porq" -Opcode_SSE2="${Opcode_SSE2} psadbw psadbwb psadbww psadbwl psadbwq" -Opcode_WILLAMETTE_Base="${Opcode_WILLAMETTE_Base} pshufd pshufdb pshufdw pshufdl pshufdq" -Opcode_WILLAMETTE_Base="${Opcode_WILLAMETTE_Base} pshufhw pshufhwb pshufhww pshufhwl pshufhwq" -Opcode_WILLAMETTE_Base="${Opcode_WILLAMETTE_Base} pshuflw pshuflwb pshuflww pshuflwl pshuflwq" -Opcode_SSE2="${Opcode_SSE2} pslldq pslldqb pslldqw pslldql pslldqq" -Opcode_SSE2="${Opcode_SSE2} psllw psllwb psllww psllwl psllwq" -Opcode_SSE2="${Opcode_SSE2} pslld pslldb pslldw pslldl pslldq" -Opcode_SSE2="${Opcode_SSE2} psllq psllqb psllqw psllql psllqq" -Opcode_SSE2="${Opcode_SSE2} psraw psrawb psraww psrawl psrawq" -Opcode_SSE2="${Opcode_SSE2} psrad psradb psradw psradl psradq" -Opcode_SSE2="${Opcode_SSE2} psrldq psrldqb psrldqw psrldql psrldqq" -Opcode_SSE2="${Opcode_SSE2} psrlw psrlwb psrlww psrlwl psrlwq" -Opcode_SSE2="${Opcode_SSE2} psrld psrldb psrldw psrldl psrldq" -Opcode_SSE2="${Opcode_SSE2} psrlq psrlqb psrlqw psrlql psrlqq" -Opcode_SSE2="${Opcode_SSE2} psubb psubbb psubbw psubbl psubbq" -Opcode_SSE2="${Opcode_SSE2} psubw psubwb psubww psubwl psubwq" -Opcode_SSE2="${Opcode_SSE2} psubd psubdb psubdw psubdl psubdq" -Opcode_SSE2="${Opcode_SSE2} psubq psubqb psubqw psubql psubqq" -Opcode_SSE2="${Opcode_SSE2} psubsb psubsbb psubsbw psubsbl psubsbq" -Opcode_SSE2="${Opcode_SSE2} psubsw psubswb psubsww psubswl psubswq" -Opcode_SSE2="${Opcode_SSE2} psubusb psubusbb psubusbw psubusbl psubusbq" -Opcode_SSE2="${Opcode_SSE2} psubusw psubuswb psubusww psubuswl psubuswq" -Opcode_SSE2="${Opcode_SSE2} punpckhbw punpckhbwb punpckhbww punpckhbwl punpckhbwq" -Opcode_SSE2="${Opcode_SSE2} punpckhwd punpckhwdb punpckhwdw punpckhwdl punpckhwdq" -Opcode_SSE2="${Opcode_SSE2} punpckhdq punpckhdqb punpckhdqw punpckhdql punpckhdqq" -Opcode_SSE2="${Opcode_SSE2} punpckhqdq punpckhqdqb punpckhqdqw punpckhqdql punpckhqdqq" -Opcode_SSE2="${Opcode_SSE2} punpcklbw punpcklbwb punpcklbww punpcklbwl punpcklbwq" -Opcode_SSE2="${Opcode_SSE2} punpcklwd punpcklwdb punpcklwdw punpcklwdl punpcklwdq" -Opcode_SSE2="${Opcode_SSE2} punpckldq punpckldqb punpckldqw punpckldql punpckldqq" -Opcode_SSE2="${Opcode_SSE2} punpcklqdq punpcklqdqb punpcklqdqw punpcklqdql punpcklqdqq" -Opcode_SSE2="${Opcode_SSE2} pxor pxorb pxorw pxorl pxorq" - -# Nehalem New Instructions (SSE4.2) -Opcode_X64_SSE42="${Opcode_X64_SSE42} crc32" -Opcode_SSE42="${Opcode_SSE42} pcmpestri pcmpestrib pcmpestriw pcmpestril pcmpestriq" -Opcode_SSE42="${Opcode_SSE42} pcmpestrm pcmpestrmb pcmpestrmw pcmpestrml pcmpestrmq" -Opcode_SSE42="${Opcode_SSE42} pcmpistri pcmpistrib pcmpistriw pcmpistril pcmpistriq" -Opcode_SSE42="${Opcode_SSE42} pcmpistrm pcmpistrmb pcmpistrmw pcmpistrml pcmpistrmq" -Opcode_SSE42="${Opcode_SSE42} pcmpgtq pcmpgtqb pcmpgtqw pcmpgtql pcmpgtqq" -Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} popcnt" - -# Intel new instructions in ??? -Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} movbe movbeb movbew movbel movbeq" - -# AMD XOP, FMA4 and CVT16 instructions (SSE5) -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vcvtph2ps vcvtph2psb vcvtph2psw vcvtph2psl vcvtph2psq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vcvtps2ph vcvtps2phb vcvtps2phw vcvtps2phl vcvtps2phq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddpd vfmaddpdb vfmaddpdw vfmaddpdl vfmaddpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddps vfmaddpsb vfmaddpsw vfmaddpsl vfmaddpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddsd vfmaddsdb vfmaddsdw vfmaddsdl vfmaddsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddss vfmaddssb vfmaddssw vfmaddssl vfmaddssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddsubpd vfmaddsubpdb vfmaddsubpdw vfmaddsubpdl vfmaddsubpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddsubps vfmaddsubpsb vfmaddsubpsw vfmaddsubpsl vfmaddsubpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubaddpd vfmsubaddpdb vfmsubaddpdw vfmsubaddpdl vfmsubaddpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubaddps vfmsubaddpsb vfmsubaddpsw vfmsubaddpsl vfmsubaddpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubpd vfmsubpdb vfmsubpdw vfmsubpdl vfmsubpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubps vfmsubpsb vfmsubpsw vfmsubpsl vfmsubpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubsd vfmsubsdb vfmsubsdw vfmsubsdl vfmsubsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubss vfmsubssb vfmsubssw vfmsubssl vfmsubssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddpd vfnmaddpdb vfnmaddpdw vfnmaddpdl vfnmaddpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddps vfnmaddpsb vfnmaddpsw vfnmaddpsl vfnmaddpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddsd vfnmaddsdb vfnmaddsdw vfnmaddsdl vfnmaddsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddss vfnmaddssb vfnmaddssw vfnmaddssl vfnmaddssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubpd vfnmsubpdb vfnmsubpdw vfnmsubpdl vfnmsubpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubps vfnmsubpsb vfnmsubpsw vfnmsubpsl vfnmsubpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubsd vfnmsubsdb vfnmsubsdw vfnmsubsdl vfnmsubsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubss vfnmsubssb vfnmsubssw vfnmsubssl vfnmsubssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczpd vfrczpdb vfrczpdw vfrczpdl vfrczpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczps vfrczpsb vfrczpsw vfrczpsl vfrczpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczsd vfrczsdb vfrczsdw vfrczsdl vfrczsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczss vfrczssb vfrczssw vfrczssl vfrczssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcmov vpcmovb vpcmovw vpcmovl vpcmovq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomb vpcombb vpcombw vpcombl vpcombq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomd vpcomdb vpcomdw vpcomdl vpcomdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomq vpcomqb vpcomqw vpcomql vpcomqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomub vpcomubb vpcomubw vpcomubl vpcomubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomud vpcomudb vpcomudw vpcomudl vpcomudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomuq vpcomuqb vpcomuqw vpcomuql vpcomuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomuw vpcomuwb vpcomuww vpcomuwl vpcomuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomw vpcomwb vpcomww vpcomwl vpcomwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddbd vphaddbdb vphaddbdw vphaddbdl vphaddbdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddbq vphaddbqb vphaddbqw vphaddbql vphaddbqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddbw vphaddbwb vphaddbww vphaddbwl vphaddbwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphadddq vphadddqb vphadddqw vphadddql vphadddqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddubd vphaddubdb vphaddubdw vphaddubdl vphaddubdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddubq vphaddubqb vphaddubqw vphaddubql vphaddubqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddubwd vphaddubwdb vphaddubwdw vphaddubwdl vphaddubwdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddudq vphaddudqb vphaddudqw vphaddudql vphaddudqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphadduwd vphadduwdb vphadduwdw vphadduwdl vphadduwdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphadduwq vphadduwqb vphadduwqw vphadduwql vphadduwqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddwd vphaddwdb vphaddwdw vphaddwdl vphaddwdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddwq vphaddwqb vphaddwqw vphaddwql vphaddwqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphsubbw vphsubbwb vphsubbww vphsubbwl vphsubbwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphsubdq vphsubdqb vphsubdqw vphsubdql vphsubdqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphsubwd vphsubwdb vphsubwdw vphsubwdl vphsubwdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsdd vpmacsddb vpmacsddw vpmacsddl vpmacsddq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsdqh vpmacsdqhb vpmacsdqhw vpmacsdqhl vpmacsdqhq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsdql vpmacsdqlb vpmacsdqlw vpmacsdqll vpmacsdqlq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssdd vpmacssddb vpmacssddw vpmacssddl vpmacssddq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssdqh vpmacssdqhb vpmacssdqhw vpmacssdqhl vpmacssdqhq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssdql vpmacssdqlb vpmacssdqlw vpmacssdqll vpmacssdqlq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsswd vpmacsswdb vpmacsswdw vpmacsswdl vpmacsswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssww vpmacsswwb vpmacsswww vpmacsswwl vpmacsswwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacswd vpmacswdb vpmacswdw vpmacswdl vpmacswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsww vpmacswwb vpmacswww vpmacswwl vpmacswwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmadcsswd vpmadcsswdb vpmadcsswdw vpmadcsswdl vpmadcsswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmadcswd vpmadcswdb vpmadcswdw vpmadcswdl vpmadcswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpperm vppermb vppermw vpperml vppermq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotb vprotbb vprotbw vprotbl vprotbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotd vprotdb vprotdw vprotdl vprotdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotq vprotqb vprotqw vprotql vprotqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotw vprotwb vprotww vprotwl vprotwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshab vpshabb vpshabw vpshabl vpshabq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshad vpshadb vpshadw vpshadl vpshadq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshaq vpshaqb vpshaqw vpshaql vpshaqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshaw vpshawb vpshaww vpshawl vpshawq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshlb vpshlbb vpshlbw vpshlbl vpshlbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshld vpshldb vpshldw vpshldl vpshldq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshlq vpshlqb vpshlqw vpshlql vpshlqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshlw vpshlwb vpshlww vpshlwl vpshlwq" - -# Generic memory operations -Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetchnta prefetchntab prefetchntaw prefetchntal prefetchntaq" -Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetcht0 prefetcht0b prefetcht0w prefetcht0l prefetcht0q" -Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetcht1 prefetcht1b prefetcht1w prefetcht1l prefetcht1q" -Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetcht2 prefetcht2b prefetcht2w prefetcht2l prefetcht2q" -Opcode_KATMAI_Base="${Opcode_KATMAI_Base} sfence" - -# Tejas New Instructions (SSSE3) -Opcode_SSSE3="${Opcode_SSSE3} pabsb pabsbb pabsbw pabsbl pabsbq" -Opcode_SSSE3="${Opcode_SSSE3} pabsw pabswb pabsww pabswl pabswq" -Opcode_SSSE3="${Opcode_SSSE3} pabsd pabsdb pabsdw pabsdl pabsdq" -Opcode_SSSE3="${Opcode_SSSE3} palignr palignrb palignrw palignrl palignrq" -Opcode_SSSE3="${Opcode_SSSE3} phaddw phaddwb phaddww phaddwl phaddwq" -Opcode_SSSE3="${Opcode_SSSE3} phaddd phadddb phadddw phadddl phadddq" -Opcode_SSSE3="${Opcode_SSSE3} phaddsw phaddswb phaddsww phaddswl phaddswq" -Opcode_SSSE3="${Opcode_SSSE3} phsubw phsubwb phsubww phsubwl phsubwq" -Opcode_SSSE3="${Opcode_SSSE3} phsubd phsubdb phsubdw phsubdl phsubdq" -Opcode_SSSE3="${Opcode_SSSE3} phsubsw phsubswb phsubsww phsubswl phsubswq" -Opcode_SSSE3="${Opcode_SSSE3} pmaddubsw pmaddubswb pmaddubsww pmaddubswl pmaddubswq" -Opcode_SSSE3="${Opcode_SSSE3} pmulhrsw pmulhrswb pmulhrsww pmulhrswl pmulhrswq" -Opcode_SSSE3="${Opcode_SSSE3} pshufb pshufbb pshufbw pshufbl pshufbq" -Opcode_SSSE3="${Opcode_SSSE3} psignb psignbb psignbw psignbl psignbq" -Opcode_SSSE3="${Opcode_SSSE3} psignw psignwb psignww psignwl psignwq" -Opcode_SSSE3="${Opcode_SSSE3} psignd psigndb psigndw psigndl psigndq" - -# Intel Fused Multiply-Add instructions (FMA) -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132ps vfmadd132psb vfmadd132psw vfmadd132psl vfmadd132psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132pd vfmadd132pdb vfmadd132pdw vfmadd132pdl vfmadd132pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312ps vfmadd312psb vfmadd312psw vfmadd312psl vfmadd312psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312pd vfmadd312pdb vfmadd312pdw vfmadd312pdl vfmadd312pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213ps vfmadd213psb vfmadd213psw vfmadd213psl vfmadd213psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213pd vfmadd213pdb vfmadd213pdw vfmadd213pdl vfmadd213pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123ps vfmadd123psb vfmadd123psw vfmadd123psl vfmadd123psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123pd vfmadd123pdb vfmadd123pdw vfmadd123pdl vfmadd123pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231ps vfmadd231psb vfmadd231psw vfmadd231psl vfmadd231psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231pd vfmadd231pdb vfmadd231pdw vfmadd231pdl vfmadd231pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321ps vfmadd321psb vfmadd321psw vfmadd321psl vfmadd321psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321pd vfmadd321pdb vfmadd321pdw vfmadd321pdl vfmadd321pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub132ps vfmaddsub132psb vfmaddsub132psw vfmaddsub132psl vfmaddsub132psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub132pd vfmaddsub132pdb vfmaddsub132pdw vfmaddsub132pdl vfmaddsub132pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub312ps vfmaddsub312psb vfmaddsub312psw vfmaddsub312psl vfmaddsub312psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub312pd vfmaddsub312pdb vfmaddsub312pdw vfmaddsub312pdl vfmaddsub312pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub213ps vfmaddsub213psb vfmaddsub213psw vfmaddsub213psl vfmaddsub213psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub213pd vfmaddsub213pdb vfmaddsub213pdw vfmaddsub213pdl vfmaddsub213pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub123ps vfmaddsub123psb vfmaddsub123psw vfmaddsub123psl vfmaddsub123psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub123pd vfmaddsub123pdb vfmaddsub123pdw vfmaddsub123pdl vfmaddsub123pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub231ps vfmaddsub231psb vfmaddsub231psw vfmaddsub231psl vfmaddsub231psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub231pd vfmaddsub231pdb vfmaddsub231pdw vfmaddsub231pdl vfmaddsub231pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub321ps vfmaddsub321psb vfmaddsub321psw vfmaddsub321psl vfmaddsub321psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub321pd vfmaddsub321pdb vfmaddsub321pdw vfmaddsub321pdl vfmaddsub321pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132ps vfmsub132psb vfmsub132psw vfmsub132psl vfmsub132psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132pd vfmsub132pdb vfmsub132pdw vfmsub132pdl vfmsub132pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312ps vfmsub312psb vfmsub312psw vfmsub312psl vfmsub312psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312pd vfmsub312pdb vfmsub312pdw vfmsub312pdl vfmsub312pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213ps vfmsub213psb vfmsub213psw vfmsub213psl vfmsub213psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213pd vfmsub213pdb vfmsub213pdw vfmsub213pdl vfmsub213pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123ps vfmsub123psb vfmsub123psw vfmsub123psl vfmsub123psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123pd vfmsub123pdb vfmsub123pdw vfmsub123pdl vfmsub123pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231ps vfmsub231psb vfmsub231psw vfmsub231psl vfmsub231psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231pd vfmsub231pdb vfmsub231pdw vfmsub231pdl vfmsub231pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321ps vfmsub321psb vfmsub321psw vfmsub321psl vfmsub321psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321pd vfmsub321pdb vfmsub321pdw vfmsub321pdl vfmsub321pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd132ps vfmsubadd132psb vfmsubadd132psw vfmsubadd132psl vfmsubadd132psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd132pd vfmsubadd132pdb vfmsubadd132pdw vfmsubadd132pdl vfmsubadd132pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd312ps vfmsubadd312psb vfmsubadd312psw vfmsubadd312psl vfmsubadd312psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd312pd vfmsubadd312pdb vfmsubadd312pdw vfmsubadd312pdl vfmsubadd312pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd213ps vfmsubadd213psb vfmsubadd213psw vfmsubadd213psl vfmsubadd213psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd213pd vfmsubadd213pdb vfmsubadd213pdw vfmsubadd213pdl vfmsubadd213pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd123ps vfmsubadd123psb vfmsubadd123psw vfmsubadd123psl vfmsubadd123psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd123pd vfmsubadd123pdb vfmsubadd123pdw vfmsubadd123pdl vfmsubadd123pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd231ps vfmsubadd231psb vfmsubadd231psw vfmsubadd231psl vfmsubadd231psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd231pd vfmsubadd231pdb vfmsubadd231pdw vfmsubadd231pdl vfmsubadd231pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd321ps vfmsubadd321psb vfmsubadd321psw vfmsubadd321psl vfmsubadd321psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd321pd vfmsubadd321pdb vfmsubadd321pdw vfmsubadd321pdl vfmsubadd321pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132ps vfnmadd132psb vfnmadd132psw vfnmadd132psl vfnmadd132psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132pd vfnmadd132pdb vfnmadd132pdw vfnmadd132pdl vfnmadd132pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312ps vfnmadd312psb vfnmadd312psw vfnmadd312psl vfnmadd312psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312pd vfnmadd312pdb vfnmadd312pdw vfnmadd312pdl vfnmadd312pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213ps vfnmadd213psb vfnmadd213psw vfnmadd213psl vfnmadd213psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213pd vfnmadd213pdb vfnmadd213pdw vfnmadd213pdl vfnmadd213pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123ps vfnmadd123psb vfnmadd123psw vfnmadd123psl vfnmadd123psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123pd vfnmadd123pdb vfnmadd123pdw vfnmadd123pdl vfnmadd123pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231ps vfnmadd231psb vfnmadd231psw vfnmadd231psl vfnmadd231psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231pd vfnmadd231pdb vfnmadd231pdw vfnmadd231pdl vfnmadd231pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321ps vfnmadd321psb vfnmadd321psw vfnmadd321psl vfnmadd321psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321pd vfnmadd321pdb vfnmadd321pdw vfnmadd321pdl vfnmadd321pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132ps vfnmsub132psb vfnmsub132psw vfnmsub132psl vfnmsub132psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132pd vfnmsub132pdb vfnmsub132pdw vfnmsub132pdl vfnmsub132pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312ps vfnmsub312psb vfnmsub312psw vfnmsub312psl vfnmsub312psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312pd vfnmsub312pdb vfnmsub312pdw vfnmsub312pdl vfnmsub312pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213ps vfnmsub213psb vfnmsub213psw vfnmsub213psl vfnmsub213psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213pd vfnmsub213pdb vfnmsub213pdw vfnmsub213pdl vfnmsub213pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123ps vfnmsub123psb vfnmsub123psw vfnmsub123psl vfnmsub123psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123pd vfnmsub123pdb vfnmsub123pdw vfnmsub123pdl vfnmsub123pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231ps vfnmsub231psb vfnmsub231psw vfnmsub231psl vfnmsub231psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231pd vfnmsub231pdb vfnmsub231pdw vfnmsub231pdl vfnmsub231pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321ps vfnmsub321psb vfnmsub321psw vfnmsub321psl vfnmsub321psq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321pd vfnmsub321pdb vfnmsub321pdw vfnmsub321pdl vfnmsub321pdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132ss vfmadd132ssb vfmadd132ssw vfmadd132ssl vfmadd132ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132sd vfmadd132sdb vfmadd132sdw vfmadd132sdl vfmadd132sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312ss vfmadd312ssb vfmadd312ssw vfmadd312ssl vfmadd312ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312sd vfmadd312sdb vfmadd312sdw vfmadd312sdl vfmadd312sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213ss vfmadd213ssb vfmadd213ssw vfmadd213ssl vfmadd213ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213sd vfmadd213sdb vfmadd213sdw vfmadd213sdl vfmadd213sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123ss vfmadd123ssb vfmadd123ssw vfmadd123ssl vfmadd123ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123sd vfmadd123sdb vfmadd123sdw vfmadd123sdl vfmadd123sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231ss vfmadd231ssb vfmadd231ssw vfmadd231ssl vfmadd231ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231sd vfmadd231sdb vfmadd231sdw vfmadd231sdl vfmadd231sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321ss vfmadd321ssb vfmadd321ssw vfmadd321ssl vfmadd321ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321sd vfmadd321sdb vfmadd321sdw vfmadd321sdl vfmadd321sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132ss vfmsub132ssb vfmsub132ssw vfmsub132ssl vfmsub132ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132sd vfmsub132sdb vfmsub132sdw vfmsub132sdl vfmsub132sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312ss vfmsub312ssb vfmsub312ssw vfmsub312ssl vfmsub312ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312sd vfmsub312sdb vfmsub312sdw vfmsub312sdl vfmsub312sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213ss vfmsub213ssb vfmsub213ssw vfmsub213ssl vfmsub213ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213sd vfmsub213sdb vfmsub213sdw vfmsub213sdl vfmsub213sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123ss vfmsub123ssb vfmsub123ssw vfmsub123ssl vfmsub123ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123sd vfmsub123sdb vfmsub123sdw vfmsub123sdl vfmsub123sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231ss vfmsub231ssb vfmsub231ssw vfmsub231ssl vfmsub231ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231sd vfmsub231sdb vfmsub231sdw vfmsub231sdl vfmsub231sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321ss vfmsub321ssb vfmsub321ssw vfmsub321ssl vfmsub321ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321sd vfmsub321sdb vfmsub321sdw vfmsub321sdl vfmsub321sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132ss vfnmadd132ssb vfnmadd132ssw vfnmadd132ssl vfnmadd132ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132sd vfnmadd132sdb vfnmadd132sdw vfnmadd132sdl vfnmadd132sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312ss vfnmadd312ssb vfnmadd312ssw vfnmadd312ssl vfnmadd312ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312sd vfnmadd312sdb vfnmadd312sdw vfnmadd312sdl vfnmadd312sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213ss vfnmadd213ssb vfnmadd213ssw vfnmadd213ssl vfnmadd213ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213sd vfnmadd213sdb vfnmadd213sdw vfnmadd213sdl vfnmadd213sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123ss vfnmadd123ssb vfnmadd123ssw vfnmadd123ssl vfnmadd123ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123sd vfnmadd123sdb vfnmadd123sdw vfnmadd123sdl vfnmadd123sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231ss vfnmadd231ssb vfnmadd231ssw vfnmadd231ssl vfnmadd231ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231sd vfnmadd231sdb vfnmadd231sdw vfnmadd231sdl vfnmadd231sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321ss vfnmadd321ssb vfnmadd321ssw vfnmadd321ssl vfnmadd321ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321sd vfnmadd321sdb vfnmadd321sdw vfnmadd321sdl vfnmadd321sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132ss vfnmsub132ssb vfnmsub132ssw vfnmsub132ssl vfnmsub132ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132sd vfnmsub132sdb vfnmsub132sdw vfnmsub132sdl vfnmsub132sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312ss vfnmsub312ssb vfnmsub312ssw vfnmsub312ssl vfnmsub312ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312sd vfnmsub312sdb vfnmsub312sdw vfnmsub312sdl vfnmsub312sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213ss vfnmsub213ssb vfnmsub213ssw vfnmsub213ssl vfnmsub213ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213sd vfnmsub213sdb vfnmsub213sdw vfnmsub213sdl vfnmsub213sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123ss vfnmsub123ssb vfnmsub123ssw vfnmsub123ssl vfnmsub123ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123sd vfnmsub123sdb vfnmsub123sdw vfnmsub123sdl vfnmsub123sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231ss vfnmsub231ssb vfnmsub231ssw vfnmsub231ssl vfnmsub231ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231sd vfnmsub231sdb vfnmsub231sdw vfnmsub231sdl vfnmsub231sdq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321ss vfnmsub321ssb vfnmsub321ssw vfnmsub321ssl vfnmsub321ssq" -Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321sd vfnmsub321sdb vfnmsub321sdw vfnmsub321sdl vfnmsub321sdq" - -# Willamette SSE2 Cacheability Instructions -Opcode_SSE2="${Opcode_SSE2} maskmovdqu" -Opcode_SSE2="${Opcode_SSE2} clflush clflushb clflushw clflushl clflushq" -Opcode_SSE2="${Opcode_SSE2} movntdq movntdqb movntdqw movntdql movntdqq" -Opcode_X64_Base="${Opcode_X64_Base} movnti movntib movntiw movntil movntiq" -Opcode_SSE2="${Opcode_SSE2} movntpd movntpdb movntpdw movntpdl movntpdq" -Opcode_SSE2="${Opcode_SSE2} lfence" -Opcode_SSE2="${Opcode_SSE2} mfence" - -# Systematic names for the hinting nop instructions -Opcode_X64_Base="${Opcode_X64_Base} hint_nop0" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop1" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop2" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop3" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop4" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop5" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop6" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop7" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop8" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop9" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop10" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop11" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop12" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop13" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop14" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop15" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop16" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop17" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop18" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop19" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop20" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop21" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop22" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop23" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop24" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop25" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop26" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop27" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop28" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop29" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop30" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop31" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop32" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop33" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop34" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop35" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop36" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop37" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop38" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop39" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop40" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop41" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop42" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop43" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop44" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop45" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop46" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop47" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop48" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop49" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop50" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop51" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop52" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop53" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop54" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop55" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop56" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop57" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop58" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop59" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop60" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop61" -Opcode_X64_Base="${Opcode_X64_Base} hint_nop62" - -# Geode (Cyrix) 3DNow! additions -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcpv pfrcpvb pfrcpvw pfrcpvl pfrcpvq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrsqrtv pfrsqrtvb pfrsqrtvw pfrsqrtvl pfrsqrtvq" - -# XSAVE group (AVX and extended state) -Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xgetbv" -Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xsetbv" -Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xsave xsaveb xsavew xsavel xsaveq" -Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xrstor xrstorb xrstorw xrstorl xrstorq" - -# Conventional instructions -Opcode_8086_Base="${Opcode_8086_Base} aaa" -Opcode_8086_Base="${Opcode_8086_Base} aad aadb aadw aadl aadq" -Opcode_8086_Base="${Opcode_8086_Base} aam aamb aamw aaml aamq" -Opcode_8086_Base="${Opcode_8086_Base} aas" -Opcode_386_Base="${Opcode_386_Base} adc adcb adcw adcl adcq" -Opcode_386_Base="${Opcode_386_Base} add addb addw addl addq" -Opcode_386_Base="${Opcode_386_Base} and andb andw andl andq" -Opcode_286_Base="${Opcode_286_Base} arpl" -Opcode_PENT_Base="${Opcode_PENT_Base} bb0_reset" -Opcode_PENT_Base="${Opcode_PENT_Base} bb1_reset" -Opcode_386_Base="${Opcode_386_Base} bound boundb boundw boundl boundq" -Opcode_X64_Base="${Opcode_X64_Base} bsf" -Opcode_X64_Base="${Opcode_X64_Base} bsr" -Opcode_X64_Base="${Opcode_X64_Base} bswap" -Opcode_X64_Base="${Opcode_X64_Base} bt btb btw btl btq" -Opcode_X64_Base="${Opcode_X64_Base} btc btcb btcw btcl btcq" -Opcode_X64_Base="${Opcode_X64_Base} btr btrb btrw btrl btrq" -Opcode_X64_Base="${Opcode_X64_Base} bts btsb btsw btsl btsq" -Opcode_X64_Base="${Opcode_X64_Base} call callb callw calll callq" -Opcode_8086_Base="${Opcode_8086_Base} cbw" -Opcode_386_Base="${Opcode_386_Base} cdq" -Opcode_X64_Base="${Opcode_X64_Base} cdqe" -Opcode_8086_Base="${Opcode_8086_Base} clc" -Opcode_8086_Base="${Opcode_8086_Base} cld" -Opcode_X64_Base="${Opcode_X64_Base} clgi" -Opcode_8086_Base="${Opcode_8086_Base} cli" -Opcode_286_Base="${Opcode_286_Base} clts" -Opcode_8086_Base="${Opcode_8086_Base} cmc" -Opcode_386_Base="${Opcode_386_Base} cmp cmpb cmpw cmpl cmpq" -Opcode_8086_Base="${Opcode_8086_Base} cmpsb" -Opcode_386_Base="${Opcode_386_Base} cmpsd" -Opcode_X64_Base="${Opcode_X64_Base} cmpsq" -Opcode_8086_Base="${Opcode_8086_Base} cmpsw" -Opcode_X64_Base="${Opcode_X64_Base} cmpxchg" -Opcode_486_Base="${Opcode_486_Base} cmpxchg486" -Opcode_PENT_Base="${Opcode_PENT_Base} cmpxchg8b cmpxchg8bb cmpxchg8bw cmpxchg8bl cmpxchg8bq" -Opcode_X64_Base="${Opcode_X64_Base} cmpxchg16b cmpxchg16bb cmpxchg16bw cmpxchg16bl cmpxchg16bq" -Opcode_PENT_Base="${Opcode_PENT_Base} cpuid" -Opcode_PENT_Base="${Opcode_PENT_Base} cpu_read" -Opcode_PENT_Base="${Opcode_PENT_Base} cpu_write" -Opcode_X64_Base="${Opcode_X64_Base} cqo" -Opcode_8086_Base="${Opcode_8086_Base} cwd" -Opcode_386_Base="${Opcode_386_Base} cwde" -Opcode_8086_Base="${Opcode_8086_Base} daa" -Opcode_8086_Base="${Opcode_8086_Base} das" -Opcode_X64_Base="${Opcode_X64_Base} dec" -Opcode_X64_Base="${Opcode_X64_Base} div" -Opcode_P6_Base="${Opcode_P6_Base} dmint" -Opcode_PENT_MMX="${Opcode_PENT_MMX} emms" -Opcode_186_Base="${Opcode_186_Base} enter enterb enterw enterl enterq" -Opcode_8086_Base="${Opcode_8086_Base} equ" -Opcode_8086_Base="${Opcode_8086_Base} f2xm1" -Opcode_8086_Base="${Opcode_8086_Base} fabs" -Opcode_8086_Base="${Opcode_8086_Base} fadd" -Opcode_8086_Base="${Opcode_8086_Base} faddp" -Opcode_8086_Base="${Opcode_8086_Base} fbld fbldb fbldw fbldl fbldq" -Opcode_8086_Base="${Opcode_8086_Base} fbstp fbstpb fbstpw fbstpl fbstpq" -Opcode_8086_Base="${Opcode_8086_Base} fchs" -Opcode_8086_Base="${Opcode_8086_Base} fclex" -Opcode_P6_Base="${Opcode_P6_Base} fcmovb" -Opcode_P6_Base="${Opcode_P6_Base} fcmovbe" -Opcode_P6_Base="${Opcode_P6_Base} fcmove" -Opcode_P6_Base="${Opcode_P6_Base} fcmovnb" -Opcode_P6_Base="${Opcode_P6_Base} fcmovnbe" -Opcode_P6_Base="${Opcode_P6_Base} fcmovne" -Opcode_P6_Base="${Opcode_P6_Base} fcmovnu" -Opcode_P6_Base="${Opcode_P6_Base} fcmovu" -Opcode_8086_Base="${Opcode_8086_Base} fcom" -Opcode_P6_Base="${Opcode_P6_Base} fcomi" -Opcode_P6_Base="${Opcode_P6_Base} fcomip" -Opcode_8086_Base="${Opcode_8086_Base} fcomp" -Opcode_8086_Base="${Opcode_8086_Base} fcompp" -Opcode_386_Base="${Opcode_386_Base} fcos" -Opcode_8086_Base="${Opcode_8086_Base} fdecstp" -Opcode_8086_Base="${Opcode_8086_Base} fdisi" -Opcode_8086_Base="${Opcode_8086_Base} fdiv" -Opcode_8086_Base="${Opcode_8086_Base} fdivp" -Opcode_8086_Base="${Opcode_8086_Base} fdivr" -Opcode_8086_Base="${Opcode_8086_Base} fdivrp" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} femms" -Opcode_8086_Base="${Opcode_8086_Base} feni" -Opcode_8086_Base="${Opcode_8086_Base} ffree" -Opcode_286_Base="${Opcode_286_Base} ffreep" -Opcode_8086_Base="${Opcode_8086_Base} fiadd fiaddb fiaddw fiaddl fiaddq" -Opcode_8086_Base="${Opcode_8086_Base} ficom ficomb ficomw ficoml ficomq" -Opcode_8086_Base="${Opcode_8086_Base} ficomp ficompb ficompw ficompl ficompq" -Opcode_8086_Base="${Opcode_8086_Base} fidiv fidivb fidivw fidivl fidivq" -Opcode_8086_Base="${Opcode_8086_Base} fidivr fidivrb fidivrw fidivrl fidivrq" -Opcode_8086_Base="${Opcode_8086_Base} fild fildb fildw fildl fildq" -Opcode_8086_Base="${Opcode_8086_Base} fimul fimulb fimulw fimull fimulq" -Opcode_8086_Base="${Opcode_8086_Base} fincstp" -Opcode_8086_Base="${Opcode_8086_Base} finit" -Opcode_8086_Base="${Opcode_8086_Base} fist fistb fistw fistl fistq" -Opcode_8086_Base="${Opcode_8086_Base} fistp fistpb fistpw fistpl fistpq" -Opcode_PRESCOTT_Base="${Opcode_PRESCOTT_Base} fisttp fisttpb fisttpw fisttpl fisttpq" -Opcode_8086_Base="${Opcode_8086_Base} fisub fisubb fisubw fisubl fisubq" -Opcode_8086_Base="${Opcode_8086_Base} fisubr fisubrb fisubrw fisubrl fisubrq" -Opcode_8086_Base="${Opcode_8086_Base} fld" -Opcode_8086_Base="${Opcode_8086_Base} fld1" -Opcode_8086_Base="${Opcode_8086_Base} fldcw fldcwb fldcww fldcwl fldcwq" -Opcode_8086_Base="${Opcode_8086_Base} fldenv fldenvb fldenvw fldenvl fldenvq" -Opcode_8086_Base="${Opcode_8086_Base} fldl2e" -Opcode_8086_Base="${Opcode_8086_Base} fldl2t" -Opcode_8086_Base="${Opcode_8086_Base} fldlg2" -Opcode_8086_Base="${Opcode_8086_Base} fldln2" -Opcode_8086_Base="${Opcode_8086_Base} fldpi" -Opcode_8086_Base="${Opcode_8086_Base} fldz" -Opcode_8086_Base="${Opcode_8086_Base} fmul" -Opcode_8086_Base="${Opcode_8086_Base} fmulp" -Opcode_8086_Base="${Opcode_8086_Base} fnclex" -Opcode_8086_Base="${Opcode_8086_Base} fndisi" -Opcode_8086_Base="${Opcode_8086_Base} fneni" -Opcode_8086_Base="${Opcode_8086_Base} fninit" -Opcode_8086_Base="${Opcode_8086_Base} fnop" -Opcode_8086_Base="${Opcode_8086_Base} fnsave fnsaveb fnsavew fnsavel fnsaveq" -Opcode_8086_Base="${Opcode_8086_Base} fnstcw fnstcwb fnstcww fnstcwl fnstcwq" -Opcode_8086_Base="${Opcode_8086_Base} fnstenv fnstenvb fnstenvw fnstenvl fnstenvq" -Opcode_286_Base="${Opcode_286_Base} fnstsw" -Opcode_8086_Base="${Opcode_8086_Base} fpatan" -Opcode_8086_Base="${Opcode_8086_Base} fprem" -Opcode_386_Base="${Opcode_386_Base} fprem1" -Opcode_8086_Base="${Opcode_8086_Base} fptan" -Opcode_8086_Base="${Opcode_8086_Base} frndint" -Opcode_8086_Base="${Opcode_8086_Base} frstor frstorb frstorw frstorl frstorq" -Opcode_8086_Base="${Opcode_8086_Base} fsave fsaveb fsavew fsavel fsaveq" -Opcode_8086_Base="${Opcode_8086_Base} fscale" -Opcode_286_Base="${Opcode_286_Base} fsetpm" -Opcode_386_Base="${Opcode_386_Base} fsin" -Opcode_386_Base="${Opcode_386_Base} fsincos" -Opcode_8086_Base="${Opcode_8086_Base} fsqrt" -Opcode_8086_Base="${Opcode_8086_Base} fst" -Opcode_8086_Base="${Opcode_8086_Base} fstcw fstcwb fstcww fstcwl fstcwq" -Opcode_8086_Base="${Opcode_8086_Base} fstenv fstenvb fstenvw fstenvl fstenvq" -Opcode_8086_Base="${Opcode_8086_Base} fstp" -Opcode_286_Base="${Opcode_286_Base} fstsw" -Opcode_8086_Base="${Opcode_8086_Base} fsub" -Opcode_8086_Base="${Opcode_8086_Base} fsubp" -Opcode_8086_Base="${Opcode_8086_Base} fsubr" -Opcode_8086_Base="${Opcode_8086_Base} fsubrp" -Opcode_8086_Base="${Opcode_8086_Base} ftst" -Opcode_386_Base="${Opcode_386_Base} fucom" -Opcode_P6_Base="${Opcode_P6_Base} fucomi" -Opcode_P6_Base="${Opcode_P6_Base} fucomip" -Opcode_386_Base="${Opcode_386_Base} fucomp" -Opcode_386_Base="${Opcode_386_Base} fucompp" -Opcode_8086_Base="${Opcode_8086_Base} fxam" -Opcode_8086_Base="${Opcode_8086_Base} fxch" -Opcode_8086_Base="${Opcode_8086_Base} fxtract" -Opcode_8086_Base="${Opcode_8086_Base} fyl2x" -Opcode_8086_Base="${Opcode_8086_Base} fyl2xp1" -Opcode_8086_Base="${Opcode_8086_Base} hlt" -Opcode_386_Base="${Opcode_386_Base} ibts" -Opcode_386_Base="${Opcode_386_Base} icebp" -Opcode_X64_Base="${Opcode_X64_Base} idiv" -Opcode_X64_Base="${Opcode_X64_Base} imul imulb imulw imull imulq" -Opcode_386_Base="${Opcode_386_Base} in" -Opcode_X64_Base="${Opcode_X64_Base} inc incb incw incl incq" -Opcode_Base="${Opcode_Base} incbin" -Opcode_186_Base="${Opcode_186_Base} insb" -Opcode_386_Base="${Opcode_386_Base} insd" -Opcode_186_Base="${Opcode_186_Base} insw" -Opcode_8086_Base="${Opcode_8086_Base} int intb intw intl intq" -Opcode_386_Base="${Opcode_386_Base} int01" -Opcode_386_Base="${Opcode_386_Base} int1" -Opcode_8086_Base="${Opcode_8086_Base} int03" -Opcode_8086_Base="${Opcode_8086_Base} int3" -Opcode_8086_Base="${Opcode_8086_Base} into" -Opcode_486_Base="${Opcode_486_Base} invd" -Opcode_486_Base="${Opcode_486_Base} invlpg invlpgb invlpgw invlpgl invlpgq" -Opcode_X86_64_Base="${Opcode_X86_64_Base} invlpga" -Opcode_8086_Base="${Opcode_8086_Base} iret" -Opcode_386_Base="${Opcode_386_Base} iretd" -Opcode_X64_Base="${Opcode_X64_Base} iretq" -Opcode_8086_Base="${Opcode_8086_Base} iretw" -Opcode_8086_Base="${Opcode_8086_Base} jcxz jcxzb jcxzw jcxzl jcxzq" -Opcode_386_Base="${Opcode_386_Base} jecxz jecxzb jecxzw jecxzl jecxzq" -Opcode_X64_Base="${Opcode_X64_Base} jrcxz jrcxzb jrcxzw jrcxzl jrcxzq" -Opcode_X64_Base="${Opcode_X64_Base} jmp jmpb jmpw jmpl jmpq" -Opcode_IA64_Base="${Opcode_IA64_Base} jmpe" -Opcode_8086_Base="${Opcode_8086_Base} lahf" -Opcode_X64_Base="${Opcode_X64_Base} lar" -Opcode_386_Base="${Opcode_386_Base} lds ldsb ldsw ldsl ldsq" -Opcode_X64_Base="${Opcode_X64_Base} lea leab leaw leal leaq" -Opcode_186_Base="${Opcode_186_Base} leave" -Opcode_386_Base="${Opcode_386_Base} les lesb lesw lesl lesq" -Opcode_X64_Base="${Opcode_X64_Base} lfence" -Opcode_386_Base="${Opcode_386_Base} lfs lfsb lfsw lfsl lfsq" -Opcode_286_Base="${Opcode_286_Base} lgdt lgdtb lgdtw lgdtl lgdtq" -Opcode_386_Base="${Opcode_386_Base} lgs lgsb lgsw lgsl lgsq" -Opcode_286_Base="${Opcode_286_Base} lidt lidtb lidtw lidtl lidtq" -Opcode_286_Base="${Opcode_286_Base} lldt" -Opcode_286_Base="${Opcode_286_Base} lmsw" -Opcode_386_Base="${Opcode_386_Base} loadall" -Opcode_286_Base="${Opcode_286_Base} loadall286" -Opcode_8086_Base="${Opcode_8086_Base} lodsb" -Opcode_386_Base="${Opcode_386_Base} lodsd" -Opcode_X64_Base="${Opcode_X64_Base} lodsq" -Opcode_8086_Base="${Opcode_8086_Base} lodsw" -Opcode_X64_Base="${Opcode_X64_Base} loop loopb loopw loopl loopq" -Opcode_X64_Base="${Opcode_X64_Base} loope loopeb loopew loopel loopeq" -Opcode_X64_Base="${Opcode_X64_Base} loopne loopneb loopnew loopnel loopneq" -Opcode_X64_Base="${Opcode_X64_Base} loopnz loopnzb loopnzw loopnzl loopnzq" -Opcode_X64_Base="${Opcode_X64_Base} loopz loopzb loopzw loopzl loopzq" -Opcode_X64_Base="${Opcode_X64_Base} lsl" -Opcode_386_Base="${Opcode_386_Base} lss lssb lssw lssl lssq" -Opcode_286_Base="${Opcode_286_Base} ltr" -Opcode_X64_Base="${Opcode_X64_Base} mfence" -Opcode_PRESCOTT_Base="${Opcode_PRESCOTT_Base} monitor" -Opcode_386_Base="${Opcode_386_Base} mov movb movw movl movq" -Opcode_X64_SSE="${Opcode_X64_SSE} movd" -Opcode_X64_MMX="${Opcode_X64_MMX} movq" -Opcode_8086_Base="${Opcode_8086_Base} movsb" -Opcode_386_Base="${Opcode_386_Base} movsd" -Opcode_X64_Base="${Opcode_X64_Base} movsq" -Opcode_8086_Base="${Opcode_8086_Base} movsw" -Opcode_X64_Base="${Opcode_X64_Base} movsx" -Opcode_X64_Base="${Opcode_X64_Base} movsxd" -Opcode_X64_Base="${Opcode_X64_Base} movsx" -Opcode_X64_Base="${Opcode_X64_Base} movzx" -Opcode_X64_Base="${Opcode_X64_Base} mul" -Opcode_PRESCOTT_Base="${Opcode_PRESCOTT_Base} mwait" -Opcode_X64_Base="${Opcode_X64_Base} neg" -Opcode_X64_Base="${Opcode_X64_Base} nop" -Opcode_X64_Base="${Opcode_X64_Base} not" -Opcode_386_Base="${Opcode_386_Base} or orb orw orl orq" -Opcode_386_Base="${Opcode_386_Base} out" -Opcode_186_Base="${Opcode_186_Base} outsb" -Opcode_386_Base="${Opcode_386_Base} outsd" -Opcode_186_Base="${Opcode_186_Base} outsw" -Opcode_PENT_MMX="${Opcode_PENT_MMX} packssdw packssdwb packssdww packssdwl packssdwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} packsswb packsswbb packsswbw packsswbl packsswbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} packuswb packuswbb packuswbw packuswbl packuswbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddb paddbb paddbw paddbl paddbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddd padddb padddw padddl padddq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddsb paddsbb paddsbw paddsbl paddsbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddsiw paddsiwb paddsiww paddsiwl paddsiwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddsw paddswb paddsww paddswl paddswq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddusb paddusbb paddusbw paddusbl paddusbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddusw padduswb paddusww padduswl padduswq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paddw paddwb paddww paddwl paddwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pand pandb pandw pandl pandq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pandn pandnb pandnw pandnl pandnq" -Opcode_8086_Base="${Opcode_8086_Base} pause" -Opcode_PENT_MMX="${Opcode_PENT_MMX} paveb pavebb pavebw pavebl pavebq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pavgusb pavgusbb pavgusbw pavgusbl pavgusbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpeqb pcmpeqbb pcmpeqbw pcmpeqbl pcmpeqbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpeqd pcmpeqdb pcmpeqdw pcmpeqdl pcmpeqdq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpeqw pcmpeqwb pcmpeqww pcmpeqwl pcmpeqwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpgtb pcmpgtbb pcmpgtbw pcmpgtbl pcmpgtbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpgtd pcmpgtdb pcmpgtdw pcmpgtdl pcmpgtdq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpgtw pcmpgtwb pcmpgtww pcmpgtwl pcmpgtwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pdistib pdistibb pdistibw pdistibl pdistibq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pf2id pf2idb pf2idw pf2idl pf2idq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfacc pfaccb pfaccw pfaccl pfaccq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfadd pfaddb pfaddw pfaddl pfaddq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfcmpeq pfcmpeqb pfcmpeqw pfcmpeql pfcmpeqq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfcmpge pfcmpgeb pfcmpgew pfcmpgel pfcmpgeq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfcmpgt pfcmpgtb pfcmpgtw pfcmpgtl pfcmpgtq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfmax pfmaxb pfmaxw pfmaxl pfmaxq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfmin pfminb pfminw pfminl pfminq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfmul pfmulb pfmulw pfmull pfmulq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcp pfrcpb pfrcpw pfrcpl pfrcpq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcpit1 pfrcpit1b pfrcpit1w pfrcpit1l pfrcpit1q" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcpit2 pfrcpit2b pfrcpit2w pfrcpit2l pfrcpit2q" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrsqit1 pfrsqit1b pfrsqit1w pfrsqit1l pfrsqit1q" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrsqrt pfrsqrtb pfrsqrtw pfrsqrtl pfrsqrtq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfsub pfsubb pfsubw pfsubl pfsubq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfsubr pfsubrb pfsubrw pfsubrl pfsubrq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pi2fd pi2fdb pi2fdw pi2fdl pi2fdq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmachriw pmachriwb pmachriww pmachriwl pmachriwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmaddwd pmaddwdb pmaddwdw pmaddwdl pmaddwdq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmagw pmagwb pmagww pmagwl pmagwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmulhriw pmulhriwb pmulhriww pmulhriwl pmulhriwq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pmulhrwa pmulhrwab pmulhrwaw pmulhrwal pmulhrwaq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmulhrwc pmulhrwcb pmulhrwcw pmulhrwcl pmulhrwcq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmulhw pmulhwb pmulhww pmulhwl pmulhwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmullw pmullwb pmullww pmullwl pmullwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvgezb pmvgezbb pmvgezbw pmvgezbl pmvgezbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvlzb pmvlzbb pmvlzbw pmvlzbl pmvlzbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvnzb pmvnzbb pmvnzbw pmvnzbl pmvnzbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvzb pmvzbb pmvzbw pmvzbl pmvzbq" -Opcode_386_Base="${Opcode_386_Base} pop popb popw popl popq" -Opcode_186_Base="${Opcode_186_Base} popa" -Opcode_386_Base="${Opcode_386_Base} popal" -Opcode_186_Base="${Opcode_186_Base} popaw" -Opcode_8086_Base="${Opcode_8086_Base} popf" -Opcode_386_Base="${Opcode_386_Base} popfd popfl" -Opcode_X64_Base="${Opcode_X64_Base} popfq" -Opcode_8086_Base="${Opcode_8086_Base} popfw" -Opcode_PENT_MMX="${Opcode_PENT_MMX} por porb porw porl porq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} prefetch prefetchb prefetchw prefetchl prefetchq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} prefetchw prefetchwb prefetchww prefetchwl prefetchwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pslld pslldb pslldw pslldl pslldq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psllq psllqb psllqw psllql psllqq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psllw psllwb psllww psllwl psllwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psrad psradb psradw psradl psradq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psraw psrawb psraww psrawl psrawq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psrld psrldb psrldw psrldl psrldq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psrlq psrlqb psrlqw psrlql psrlqq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psrlw psrlwb psrlww psrlwl psrlwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubb psubbb psubbw psubbl psubbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubd psubdb psubdw psubdl psubdq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubsb psubsbb psubsbw psubsbl psubsbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubsiw psubsiwb psubsiww psubsiwl psubsiwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubsw psubswb psubsww psubswl psubswq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubusb psubusbb psubusbw psubusbl psubusbq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubusw psubuswb psubusww psubuswl psubuswq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} psubw psubwb psubww psubwl psubwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckhbw punpckhbwb punpckhbww punpckhbwl punpckhbwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckhdq punpckhdqb punpckhdqw punpckhdql punpckhdqq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckhwd punpckhwdb punpckhwdw punpckhwdl punpckhwdq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} punpcklbw punpcklbwb punpcklbww punpcklbwl punpcklbwq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckldq punpckldqb punpckldqw punpckldql punpckldqq" -Opcode_PENT_MMX="${Opcode_PENT_MMX} punpcklwd punpcklwdb punpcklwdw punpcklwdl punpcklwdq" -Opcode_X64_Base="${Opcode_X64_Base} push pushb pushw pushl pushq" -Opcode_186_Base="${Opcode_186_Base} pusha" -Opcode_386_Base="${Opcode_386_Base} pushal" -Opcode_186_Base="${Opcode_186_Base} pushaw" -Opcode_8086_Base="${Opcode_8086_Base} pushf" -Opcode_386_Base="${Opcode_386_Base} pushfd" -Opcode_X64_Base="${Opcode_X64_Base} pushfq" -Opcode_8086_Base="${Opcode_8086_Base} pushfw" -Opcode_PENT_MMX="${Opcode_PENT_MMX} pxor pxorb pxorw pxorl pxorq" -Opcode_X64_Base="${Opcode_X64_Base} rcl rclb rclw rcll rclq" -Opcode_X64_Base="${Opcode_X64_Base} rcr rcrb rcrw rcrl rcrq" -Opcode_P6_Base="${Opcode_P6_Base} rdshr" -Opcode_PENT_Base="${Opcode_PENT_Base} rdmsr" -Opcode_P6_Base="${Opcode_P6_Base} rdpmc" -Opcode_PENT_Base="${Opcode_PENT_Base} rdtsc" -Opcode_X86_64_Base="${Opcode_X86_64_Base} rdtscp" -Opcode_8086_Base="${Opcode_8086_Base} ret retb retw retl retq" -Opcode_8086_Base="${Opcode_8086_Base} retf retfb retfw retfl retfq" -Opcode_8086_Base="${Opcode_8086_Base} retn retnb retnw retnl retnq" -Opcode_X64_Base="${Opcode_X64_Base} rol rolb rolw roll rolq" -Opcode_X64_Base="${Opcode_X64_Base} ror rorb rorw rorl rorq" -Opcode_P6_Base="${Opcode_P6_Base} rdm" -Opcode_486_Base="${Opcode_486_Base} rsdc rsdcb rsdcw rsdcl rsdcq" -Opcode_486_Base="${Opcode_486_Base} rsldt rsldtb rsldtw rsldtl rsldtq" -Opcode_PENTM_Base="${Opcode_PENTM_Base} rsm" -Opcode_486_Base="${Opcode_486_Base} rsts rstsb rstsw rstsl rstsq" -Opcode_8086_Base="${Opcode_8086_Base} sahf" -Opcode_X64_Base="${Opcode_X64_Base} sal salb salw sall salq" -Opcode_8086_Base="${Opcode_8086_Base} salc" -Opcode_X64_Base="${Opcode_X64_Base} sar sarb sarw sarl sarq" -Opcode_386_Base="${Opcode_386_Base} sbb sbbb sbbw sbbl sbbq" -Opcode_8086_Base="${Opcode_8086_Base} scasb" -Opcode_386_Base="${Opcode_386_Base} scasd" -Opcode_X64_Base="${Opcode_X64_Base} scasq" -Opcode_8086_Base="${Opcode_8086_Base} scasw" -Opcode_X64_Base="${Opcode_X64_Base} sfence" -Opcode_286_Base="${Opcode_286_Base} sgdt sgdtb sgdtw sgdtl sgdtq" -Opcode_X64_Base="${Opcode_X64_Base} shl shlb shlw shll shlq" -Opcode_X64_Base="${Opcode_X64_Base} shld" -Opcode_X64_Base="${Opcode_X64_Base} shr shrb shrw shrl shrq" -Opcode_X64_Base="${Opcode_X64_Base} shrd" -Opcode_286_Base="${Opcode_286_Base} sidt sidtb sidtw sidtl sidtq" -Opcode_X64_Base="${Opcode_X64_Base} sldt" -Opcode_X64_Base="${Opcode_X64_Base} skinit" -Opcode_386_Base="${Opcode_386_Base} smi" -Opcode_P6_Base="${Opcode_P6_Base} smint" -Opcode_486_Base="${Opcode_486_Base} smintold" -Opcode_386_Base="${Opcode_386_Base} smsw" -Opcode_8086_Base="${Opcode_8086_Base} stc" -Opcode_8086_Base="${Opcode_8086_Base} std" -Opcode_X64_Base="${Opcode_X64_Base} stgi" -Opcode_8086_Base="${Opcode_8086_Base} sti" -Opcode_8086_Base="${Opcode_8086_Base} stosb" -Opcode_386_Base="${Opcode_386_Base} stosd stosl" -Opcode_X64_Base="${Opcode_X64_Base} stosq" -Opcode_8086_Base="${Opcode_8086_Base} stosw" -Opcode_X64_Base="${Opcode_X64_Base} str" -Opcode_386_Base="${Opcode_386_Base} sub subb subw subl subq" -Opcode_486_Base="${Opcode_486_Base} svdc svdcb svdcw svdcl svdcq" -Opcode_486_Base="${Opcode_486_Base} svldt svldtb svldtw svldtl svldtq" -Opcode_486_Base="${Opcode_486_Base} svts svtsb svtsw svtsl svtsq" -Opcode_X64_Base="${Opcode_X64_Base} swapgs" -Opcode_P6_Base="${Opcode_P6_Base} syscall" -Opcode_P6_Base="${Opcode_P6_Base} sysenter" -Opcode_P6_Base="${Opcode_P6_Base} sysexit" -Opcode_P6_Base="${Opcode_P6_Base} sysret" -Opcode_386_Base="${Opcode_386_Base} test testb testw testl testq" -Opcode_186_Base="${Opcode_186_Base} ud0" -Opcode_186_Base="${Opcode_186_Base} ud1" -Opcode_186_Base="${Opcode_186_Base} ud2b" -Opcode_186_Base="${Opcode_186_Base} ud2" -Opcode_186_Base="${Opcode_186_Base} ud2a" -Opcode_386_Base="${Opcode_386_Base} umov" -Opcode_286_Base="${Opcode_286_Base} verr" -Opcode_286_Base="${Opcode_286_Base} verw" -Opcode_8086_Base="${Opcode_8086_Base} fwait" -Opcode_486_Base="${Opcode_486_Base} wbinvd" -Opcode_P6_Base="${Opcode_P6_Base} wrshr" -Opcode_PENT_Base="${Opcode_PENT_Base} wrmsr" -Opcode_X64_Base="${Opcode_X64_Base} xadd" -Opcode_386_Base="${Opcode_386_Base} xbts" -Opcode_X64_Base="${Opcode_X64_Base} xchg" -Opcode_8086_Base="${Opcode_8086_Base} xlatb" -Opcode_8086_Base="${Opcode_8086_Base} xlat" -Opcode_386_Base="${Opcode_386_Base} xor xorb xorw xorl xorq" -Opcode_X64_Base="${Opcode_X64_Base} cmovcc" -Opcode_8086_Base="${Opcode_8086_Base} j(e|ne|a|ae|b|be|nbe|g|ge|ng|nge|l|le||z|nz|c|nc|d|nd|o|no|p|np|s|ns)[bwlq]?" -Opcode_386_Base="${Opcode_386_Base} set(e|ne|a|ae|b|be|nbe|g|ge|ng|nge|l|le||z|nz|c|nc|d|nd|o|no|p|np|s|ns)[bwlq]?" - -# VIA (Centaur) security instructions -Opcode_PENT_Base="${Opcode_PENT_Base} xstore" -Opcode_PENT_Base="${Opcode_PENT_Base} xcryptecb" -Opcode_PENT_Base="${Opcode_PENT_Base} xcryptcbc" -Opcode_PENT_Base="${Opcode_PENT_Base} xcryptctr" -Opcode_PENT_Base="${Opcode_PENT_Base} xcryptcfb" -Opcode_PENT_Base="${Opcode_PENT_Base} xcryptofb" -Opcode_PENT_Base="${Opcode_PENT_Base} montmul" -Opcode_PENT_Base="${Opcode_PENT_Base} xsha1" -Opcode_PENT_Base="${Opcode_PENT_Base} xsha256" - -# Intel AVX Carry-Less Multiplication instructions (CLMUL) -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmullqlqdq vpclmullqlqdqb vpclmullqlqdqw vpclmullqlqdql vpclmullqlqdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmulhqlqdq vpclmulhqlqdqb vpclmulhqlqdqw vpclmulhqlqdql vpclmulhqlqdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmullqhqdq vpclmullqhqdqb vpclmullqhqdqw vpclmullqhqdql vpclmullqhqdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmulhqhqdq vpclmulhqhqdqb vpclmulhqhqdqw vpclmulhqhqdql vpclmulhqhqdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmulqdq vpclmulqdqb vpclmulqdqw vpclmulqdql vpclmulqdqq" - -# AMD SSE5 instructions -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddps fmaddpsb fmaddpsw fmaddpsl fmaddpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddpd fmaddpdb fmaddpdw fmaddpdl fmaddpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddss fmaddssb fmaddssw fmaddssl fmaddssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddsd fmaddsdb fmaddsdw fmaddsdl fmaddsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubps fmsubpsb fmsubpsw fmsubpsl fmsubpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubpd fmsubpdb fmsubpdw fmsubpdl fmsubpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubss fmsubssb fmsubssw fmsubssl fmsubssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubsd fmsubsdb fmsubsdw fmsubsdl fmsubsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddps fnmaddpsb fnmaddpsw fnmaddpsl fnmaddpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddpd fnmaddpdb fnmaddpdw fnmaddpdl fnmaddpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddss fnmaddssb fnmaddssw fnmaddssl fnmaddssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddsd fnmaddsdb fnmaddsdw fnmaddsdl fnmaddsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubps fnmsubpsb fnmsubpsw fnmsubpsl fnmsubpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubpd fnmsubpdb fnmsubpdw fnmsubpdl fnmsubpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubss fnmsubssb fnmsubssw fnmsubssl fnmsubssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubsd fnmsubsdb fnmsubsdw fnmsubsdl fnmsubsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqps comeqpsb comeqpsw comeqpsl comeqpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltps comltpsb comltpsw comltpsl comltpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comleps comlepsb comlepsw comlepsl comlepsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordps comunordpsb comunordpsw comunordpsl comunordpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqps comuneqpsb comuneqpsw comuneqpsl comuneqpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltps comunltpsb comunltpsw comunltpsl comunltpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunleps comunlepsb comunlepsw comunlepsl comunlepsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordps comordpsb comordpsw comordpsl comordpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqps comueqpsb comueqpsw comueqpsl comueqpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultps comultpsb comultpsw comultpsl comultpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuleps comulepsb comulepsw comulepsl comulepsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalseps comfalsepsb comfalsepsw comfalsepsl comfalsepsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqps comneqpsb comneqpsw comneqpsl comneqpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltps comnltpsb comnltpsw comnltpsl comnltpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnleps comnlepsb comnlepsw comnlepsl comnlepsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtrueps comtruepsb comtruepsw comtruepsl comtruepsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comps compsb compsw compsl compsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqpd comeqpdb comeqpdw comeqpdl comeqpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltpd comltpdb comltpdw comltpdl comltpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comlepd comlepdb comlepdw comlepdl comlepdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordpd comunordpdb comunordpdw comunordpdl comunordpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqpd comuneqpdb comuneqpdw comuneqpdl comuneqpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltpd comunltpdb comunltpdw comunltpdl comunltpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunlepd comunlepdb comunlepdw comunlepdl comunlepdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordpd comordpdb comordpdw comordpdl comordpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqpd comueqpdb comueqpdw comueqpdl comueqpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultpd comultpdb comultpdw comultpdl comultpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comulepd comulepdb comulepdw comulepdl comulepdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalsepd comfalsepdb comfalsepdw comfalsepdl comfalsepdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqpd comneqpdb comneqpdw comneqpdl comneqpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltpd comnltpdb comnltpdw comnltpdl comnltpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnlepd comnlepdb comnlepdw comnlepdl comnlepdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtruepd comtruepdb comtruepdw comtruepdl comtruepdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} compd compdb compdw compdl compdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqss comeqssb comeqssw comeqssl comeqssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltss comltssb comltssw comltssl comltssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comless comlessb comlessw comlessl comlessq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordss comunordssb comunordssw comunordssl comunordssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqss comuneqssb comuneqssw comuneqssl comuneqssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltss comunltssb comunltssw comunltssl comunltssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunless comunlessb comunlessw comunlessl comunlessq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordss comordssb comordssw comordssl comordssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqss comueqssb comueqssw comueqssl comueqssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultss comultssb comultssw comultssl comultssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuless comulessb comulessw comulessl comulessq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalsess comfalsessb comfalsessw comfalsessl comfalsessq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqss comneqssb comneqssw comneqssl comneqssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltss comnltssb comnltssw comnltssl comnltssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnless comnlessb comnlessw comnlessl comnlessq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtruess comtruessb comtruessw comtruessl comtruessq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comss comssb comssw comssl comssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqsd comeqsdb comeqsdw comeqsdl comeqsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltsd comltsdb comltsdw comltsdl comltsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comlesd comlesdb comlesdw comlesdl comlesdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordsd comunordsdb comunordsdw comunordsdl comunordsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqsd comuneqsdb comuneqsdw comuneqsdl comuneqsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltsd comunltsdb comunltsdw comunltsdl comunltsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunlesd comunlesdb comunlesdw comunlesdl comunlesdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordsd comordsdb comordsdw comordsdl comordsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqsd comueqsdb comueqsdw comueqsdl comueqsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultsd comultsdb comultsdw comultsdl comultsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comulesd comulesdb comulesdw comulesdl comulesdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalsesd comfalsesdb comfalsesdw comfalsesdl comfalsesdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqsd comneqsdb comneqsdw comneqsdl comneqsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltsd comnltsdb comnltsdw comnltsdl comnltsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnlesd comnlesdb comnlesdw comnlesdl comnlesdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtruesd comtruesdb comtruesdw comtruesdl comtruesdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comsd comsdb comsdw comsdl comsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltb pcomltbb pcomltbw pcomltbl pcomltbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleb pcomlebb pcomlebw pcomlebl pcomlebq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtb pcomgtbb pcomgtbw pcomgtbl pcomgtbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeb pcomgebb pcomgebw pcomgebl pcomgebq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqb pcomeqbb pcomeqbw pcomeqbl pcomeqbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqb pcomneqbb pcomneqbw pcomneqbl pcomneqbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseb pcomfalsebb pcomfalsebw pcomfalsebl pcomfalsebq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueb pcomtruebb pcomtruebw pcomtruebl pcomtruebq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomb pcombb pcombw pcombl pcombq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltw pcomltwb pcomltww pcomltwl pcomltwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomlew pcomlewb pcomleww pcomlewl pcomlewq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtw pcomgtwb pcomgtww pcomgtwl pcomgtwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgew pcomgewb pcomgeww pcomgewl pcomgewq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqw pcomeqwb pcomeqww pcomeqwl pcomeqwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqw pcomneqwb pcomneqww pcomneqwl pcomneqwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalsew pcomfalsewb pcomfalseww pcomfalsewl pcomfalsewq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtruew pcomtruewb pcomtrueww pcomtruewl pcomtruewq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomw pcomwb pcomww pcomwl pcomwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltd pcomltdb pcomltdw pcomltdl pcomltdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomled pcomledb pcomledw pcomledl pcomledq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtd pcomgtdb pcomgtdw pcomgtdl pcomgtdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomged pcomgedb pcomgedw pcomgedl pcomgedq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqd pcomeqdb pcomeqdw pcomeqdl pcomeqdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqd pcomneqdb pcomneqdw pcomneqdl pcomneqdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalsed pcomfalsedb pcomfalsedw pcomfalsedl pcomfalsedq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrued pcomtruedb pcomtruedw pcomtruedl pcomtruedq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomd pcomdb pcomdw pcomdl pcomdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltq pcomltqb pcomltqw pcomltql pcomltqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleq pcomleqb pcomleqw pcomleql pcomleqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtq pcomgtqb pcomgtqw pcomgtql pcomgtqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeq pcomgeqb pcomgeqw pcomgeql pcomgeqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqq pcomeqqb pcomeqqw pcomeqql pcomeqqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqq pcomneqqb pcomneqqw pcomneqql pcomneqqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseq pcomfalseqb pcomfalseqw pcomfalseql pcomfalseqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueq pcomtrueqb pcomtrueqw pcomtrueql pcomtrueqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomq pcomqb pcomqw pcomql pcomqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltub pcomltubb pcomltubw pcomltubl pcomltubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleub pcomleubb pcomleubw pcomleubl pcomleubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtub pcomgtubb pcomgtubw pcomgtubl pcomgtubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeub pcomgeubb pcomgeubw pcomgeubl pcomgeubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequb pcomequbb pcomequbw pcomequbl pcomequbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequb pcomnequbb pcomnequbw pcomnequbl pcomnequbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseub pcomfalseubb pcomfalseubw pcomfalseubl pcomfalseubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueub pcomtrueubb pcomtrueubw pcomtrueubl pcomtrueubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomub pcomubb pcomubw pcomubl pcomubq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltuw pcomltuwb pcomltuww pcomltuwl pcomltuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleuw pcomleuwb pcomleuww pcomleuwl pcomleuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtuw pcomgtuwb pcomgtuww pcomgtuwl pcomgtuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeuw pcomgeuwb pcomgeuww pcomgeuwl pcomgeuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequw pcomequwb pcomequww pcomequwl pcomequwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequw pcomnequwb pcomnequww pcomnequwl pcomnequwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseuw pcomfalseuwb pcomfalseuww pcomfalseuwl pcomfalseuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueuw pcomtrueuwb pcomtrueuww pcomtrueuwl pcomtrueuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomuw pcomuwb pcomuww pcomuwl pcomuwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltud pcomltudb pcomltudw pcomltudl pcomltudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleud pcomleudb pcomleudw pcomleudl pcomleudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtud pcomgtudb pcomgtudw pcomgtudl pcomgtudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeud pcomgeudb pcomgeudw pcomgeudl pcomgeudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequd pcomequdb pcomequdw pcomequdl pcomequdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequd pcomnequdb pcomnequdw pcomnequdl pcomnequdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseud pcomfalseudb pcomfalseudw pcomfalseudl pcomfalseudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueud pcomtrueudb pcomtrueudw pcomtrueudl pcomtrueudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomud pcomudb pcomudw pcomudl pcomudq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltuq pcomltuqb pcomltuqw pcomltuql pcomltuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleuq pcomleuqb pcomleuqw pcomleuql pcomleuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtuq pcomgtuqb pcomgtuqw pcomgtuql pcomgtuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeuq pcomgeuqb pcomgeuqw pcomgeuql pcomgeuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequq pcomequqb pcomequqw pcomequql pcomequqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequq pcomnequqb pcomnequqw pcomnequql pcomnequqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseuq pcomfalseuqb pcomfalseuqw pcomfalseuql pcomfalseuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueuq pcomtrueuqb pcomtrueuqw pcomtrueuql pcomtrueuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomuq pcomuqb pcomuqw pcomuql pcomuqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} permps permpsb permpsw permpsl permpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} permpd permpdb permpdw permpdl permpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcmov pcmovb pcmovw pcmovl pcmovq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pperm ppermb ppermw pperml ppermq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssww pmacsswwb pmacsswww pmacsswwl pmacsswwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsww pmacswwb pmacswww pmacswwl pmacswwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsswd pmacsswdb pmacsswdw pmacsswdl pmacsswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacswd pmacswdb pmacswdw pmacswdl pmacswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssdd pmacssddb pmacssddw pmacssddl pmacssddq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsdd pmacsddb pmacsddw pmacsddl pmacsddq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssdql pmacssdqlb pmacssdqlw pmacssdqll pmacssdqlq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsdql pmacsdqlb pmacsdqlw pmacsdqll pmacsdqlq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssdqh pmacssdqhb pmacssdqhw pmacssdqhl pmacssdqhq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsdqh pmacsdqhb pmacsdqhw pmacsdqhl pmacsdqhq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmadcsswd pmadcsswdb pmadcsswdw pmadcsswdl pmadcsswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmadcswd pmadcswdb pmadcswdw pmadcswdl pmadcswdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protb protbb protbw protbl protbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protw protwb protww protwl protwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protd protdb protdw protdl protdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protq protqb protqw protql protqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshlb pshlbb pshlbw pshlbl pshlbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshlw pshlwb pshlww pshlwl pshlwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshld pshldb pshldw pshldl pshldq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshlq pshlqb pshlqw pshlql pshlqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshab pshabb pshabw pshabl pshabq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshaw pshawb pshaww pshawl pshawq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshad pshadb pshadw pshadl pshadq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshaq pshaqb pshaqw pshaql pshaqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczps frczpsb frczpsw frczpsl frczpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczpd frczpdb frczpdw frczpdl frczpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczss frczssb frczssw frczssl frczssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczsd frczsdb frczsdw frczsdl frczsdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} cvtph2ps cvtph2psb cvtph2psw cvtph2psl cvtph2psq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} cvtps2ph cvtps2phb cvtps2phw cvtps2phl cvtps2phq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddbw phaddbwb phaddbww phaddbwl phaddbwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddbd phaddbdb phaddbdw phaddbdl phaddbdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddbq phaddbqb phaddbqw phaddbql phaddbqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddwd phaddwdb phaddwdw phaddwdl phaddwdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddwq phaddwqb phaddwqw phaddwql phaddwqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phadddq phadddqb phadddqw phadddql phadddqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddubw phaddubwb phaddubww phaddubwl phaddubwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddubd phaddubdb phaddubdw phaddubdl phaddubdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddubq phaddubqb phaddubqw phaddubql phaddubqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phadduwd phadduwdb phadduwdw phadduwdl phadduwdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phadduwq phadduwqb phadduwqw phadduwql phadduwqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddudq phaddudqb phaddudqw phaddudql phaddudqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phsubbw phsubbwb phsubbww phsubbwl phsubbwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phsubwd phsubwdb phsubwdw phsubwdl phsubwdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phsubdq phsubdqb phsubdqw phsubdql phsubdqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protb protbb protbw protbl protbq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protw protwb protww protwl protwq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protd protdb protdw protdl protdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protq protqb protqw protql protqq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundps roundpsb roundpsw roundpsl roundpsq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundpd roundpdb roundpdw roundpdl roundpdq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundss roundssb roundssw roundssl roundssq" -Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundsd roundsdb roundsdw roundsdl roundsdq" - -# Introduced in Deschutes but necessary for SSE support -Opcode_P6_SSE="${Opcode_P6_SSE} fxrstor fxrstorb fxrstorw fxrstorl fxrstorq" -Opcode_P6_SSE="${Opcode_P6_SSE} fxsave fxsaveb fxsavew fxsavel fxsaveq" - -# Prescott New Instructions (SSE3) -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} addsubpd addsubpdb addsubpdw addsubpdl addsubpdq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} addsubps addsubpsb addsubpsw addsubpsl addsubpsq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} haddpd haddpdb haddpdw haddpdl haddpdq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} haddps haddpsb haddpsw haddpsl haddpsq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} hsubpd hsubpdb hsubpdw hsubpdl hsubpdq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} hsubps hsubpsb hsubpsw hsubpsl hsubpsq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} lddqu lddqub lddquw lddqul lddquq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} movddup movddupb movddupw movddupl movddupq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} movshdup movshdupb movshdupw movshdupl movshdupq" -Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} movsldup movsldupb movsldupw movsldupl movsldupq" - -# Intel AES instructions -Opcode_SSE="${Opcode_SSE} aesenc aesencb aesencw aesencl aesencq" -Opcode_SSE="${Opcode_SSE} aesenclast aesenclastb aesenclastw aesenclastl aesenclastq" -Opcode_SSE="${Opcode_SSE} aesdec aesdecb aesdecw aesdecl aesdecq" -Opcode_SSE="${Opcode_SSE} aesdeclast aesdeclastb aesdeclastw aesdeclastl aesdeclastq" -Opcode_SSE="${Opcode_SSE} aesimc aesimcb aesimcw aesimcl aesimcq" -Opcode_SSE="${Opcode_SSE} aeskeygenassist aeskeygenassistb aeskeygenassistw aeskeygenassistl aeskeygenassistq" - -# Willamette Streaming SIMD instructions (SSE2) -Opcode_SSE2="${Opcode_SSE2} addpd addpdb addpdw addpdl addpdq" -Opcode_SSE2="${Opcode_SSE2} addsd addsdb addsdw addsdl addsdq" -Opcode_SSE2="${Opcode_SSE2} andnpd andnpdb andnpdw andnpdl andnpdq" -Opcode_SSE2="${Opcode_SSE2} andpd andpdb andpdw andpdl andpdq" -Opcode_SSE2="${Opcode_SSE2} cmpeqpd cmpeqpdb cmpeqpdw cmpeqpdl cmpeqpdq" -Opcode_SSE2="${Opcode_SSE2} cmpeqsd cmpeqsdb cmpeqsdw cmpeqsdl cmpeqsdq" -Opcode_SSE2="${Opcode_SSE2} cmplepd cmplepdb cmplepdw cmplepdl cmplepdq" -Opcode_SSE2="${Opcode_SSE2} cmplesd cmplesdb cmplesdw cmplesdl cmplesdq" -Opcode_SSE2="${Opcode_SSE2} cmpltpd cmpltpdb cmpltpdw cmpltpdl cmpltpdq" -Opcode_SSE2="${Opcode_SSE2} cmpltsd cmpltsdb cmpltsdw cmpltsdl cmpltsdq" -Opcode_SSE2="${Opcode_SSE2} cmpneqpd cmpneqpdb cmpneqpdw cmpneqpdl cmpneqpdq" -Opcode_SSE2="${Opcode_SSE2} cmpneqsd cmpneqsdb cmpneqsdw cmpneqsdl cmpneqsdq" -Opcode_SSE2="${Opcode_SSE2} cmpnlepd cmpnlepdb cmpnlepdw cmpnlepdl cmpnlepdq" -Opcode_SSE2="${Opcode_SSE2} cmpnlesd cmpnlesdb cmpnlesdw cmpnlesdl cmpnlesdq" -Opcode_SSE2="${Opcode_SSE2} cmpnltpd cmpnltpdb cmpnltpdw cmpnltpdl cmpnltpdq" -Opcode_SSE2="${Opcode_SSE2} cmpnltsd cmpnltsdb cmpnltsdw cmpnltsdl cmpnltsdq" -Opcode_SSE2="${Opcode_SSE2} cmpordpd cmpordpdb cmpordpdw cmpordpdl cmpordpdq" -Opcode_SSE2="${Opcode_SSE2} cmpordsd cmpordsdb cmpordsdw cmpordsdl cmpordsdq" -Opcode_SSE2="${Opcode_SSE2} cmpunordpd cmpunordpdb cmpunordpdw cmpunordpdl cmpunordpdq" -Opcode_SSE2="${Opcode_SSE2} cmpunordsd cmpunordsdb cmpunordsdw cmpunordsdl cmpunordsdq" -Opcode_Base="${Opcode_Base} cmppd cmppdb cmppdw cmppdl cmppdq" -Opcode_SSE2="${Opcode_SSE2} cmpsd cmpsdb cmpsdw cmpsdl cmpsdq" -Opcode_SSE2="${Opcode_SSE2} comisd comisdb comisdw comisdl comisdq" -Opcode_SSE2="${Opcode_SSE2} cvtdq2pd cvtdq2pdb cvtdq2pdw cvtdq2pdl cvtdq2pdq" -Opcode_SSE2="${Opcode_SSE2} cvtdq2ps cvtdq2psb cvtdq2psw cvtdq2psl cvtdq2psq" -Opcode_SSE2="${Opcode_SSE2} cvtpd2dq cvtpd2dqb cvtpd2dqw cvtpd2dql cvtpd2dqq" -Opcode_SSE2="${Opcode_SSE2} cvtpd2pi cvtpd2pib cvtpd2piw cvtpd2pil cvtpd2piq" -Opcode_SSE2="${Opcode_SSE2} cvtpd2ps cvtpd2psb cvtpd2psw cvtpd2psl cvtpd2psq" -Opcode_SSE2="${Opcode_SSE2} cvtpi2pd cvtpi2pdb cvtpi2pdw cvtpi2pdl cvtpi2pdq" -Opcode_SSE2="${Opcode_SSE2} cvtps2dq cvtps2dqb cvtps2dqw cvtps2dql cvtps2dqq" -Opcode_SSE2="${Opcode_SSE2} cvtps2pd cvtps2pdb cvtps2pdw cvtps2pdl cvtps2pdq" -Opcode_X64_SSE2="${Opcode_X64_SSE2} cvtsd2si cvtsd2sib cvtsd2siw cvtsd2sil cvtsd2siq" -Opcode_SSE2="${Opcode_SSE2} cvtsd2ss cvtsd2ssb cvtsd2ssw cvtsd2ssl cvtsd2ssq" -Opcode_X64_SSE2="${Opcode_X64_SSE2} cvtsi2sd" -Opcode_SSE2="${Opcode_SSE2} cvtss2sd cvtss2sdb cvtss2sdw cvtss2sdl cvtss2sdq" -Opcode_SSE2="${Opcode_SSE2} cvttpd2pi cvttpd2pib cvttpd2piw cvttpd2pil cvttpd2piq" -Opcode_SSE2="${Opcode_SSE2} cvttpd2dq cvttpd2dqb cvttpd2dqw cvttpd2dql cvttpd2dqq" -Opcode_SSE2="${Opcode_SSE2} cvttps2dq cvttps2dqb cvttps2dqw cvttps2dql cvttps2dqq" -Opcode_X64_SSE2="${Opcode_X64_SSE2} cvttsd2si cvttsd2sib cvttsd2siw cvttsd2sil cvttsd2siq" -Opcode_SSE2="${Opcode_SSE2} divpd divpdb divpdw divpdl divpdq" -Opcode_SSE2="${Opcode_SSE2} divsd divsdb divsdw divsdl divsdq" -Opcode_SSE2="${Opcode_SSE2} maxpd maxpdb maxpdw maxpdl maxpdq" -Opcode_SSE2="${Opcode_SSE2} maxsd maxsdb maxsdw maxsdl maxsdq" -Opcode_SSE2="${Opcode_SSE2} minpd minpdb minpdw minpdl minpdq" -Opcode_SSE2="${Opcode_SSE2} minsd minsdb minsdw minsdl minsdq" -Opcode_SSE2="${Opcode_SSE2} movapd movapdb movapdw movapdl movapdq" -Opcode_SSE2="${Opcode_SSE2} movhpd movhpdb movhpdw movhpdl movhpdq" -Opcode_SSE2="${Opcode_SSE2} movlpd movlpdb movlpdw movlpdl movlpdq" -Opcode_X64_SSE2="${Opcode_X64_SSE2} movmskpd" -Opcode_SSE2="${Opcode_SSE2} movsd movsdb movsdw movsdl movsdq" -Opcode_SSE2="${Opcode_SSE2} movupd movupdb movupdw movupdl movupdq" -Opcode_SSE2="${Opcode_SSE2} mulpd mulpdb mulpdw mulpdl mulpdq" -Opcode_SSE2="${Opcode_SSE2} mulsd mulsdb mulsdw mulsdl mulsdq" -Opcode_SSE2="${Opcode_SSE2} orpd orpdb orpdw orpdl orpdq" -Opcode_SSE2="${Opcode_SSE2} shufpd shufpdb shufpdw shufpdl shufpdq" -Opcode_SSE2="${Opcode_SSE2} sqrtpd sqrtpdb sqrtpdw sqrtpdl sqrtpdq" -Opcode_SSE2="${Opcode_SSE2} sqrtsd sqrtsdb sqrtsdw sqrtsdl sqrtsdq" -Opcode_SSE2="${Opcode_SSE2} subpd subpdb subpdw subpdl subpdq" -Opcode_SSE2="${Opcode_SSE2} subsd subsdb subsdw subsdl subsdq" -Opcode_SSE2="${Opcode_SSE2} ucomisd ucomisdb ucomisdw ucomisdl ucomisdq" -Opcode_SSE2="${Opcode_SSE2} unpckhpd unpckhpdb unpckhpdw unpckhpdl unpckhpdq" -Opcode_SSE2="${Opcode_SSE2} unpcklpd unpcklpdb unpcklpdw unpcklpdl unpcklpdq" -Opcode_SSE2="${Opcode_SSE2} xorpd xorpdb xorpdw xorpdl xorpdq" - -# Intel Carry-Less Multiplication instructions (CLMUL) -Opcode_SSE="${Opcode_SSE} pclmullqlqdq pclmullqlqdqb pclmullqlqdqw pclmullqlqdql pclmullqlqdqq" -Opcode_SSE="${Opcode_SSE} pclmulhqlqdq pclmulhqlqdqb pclmulhqlqdqw pclmulhqlqdql pclmulhqlqdqq" -Opcode_SSE="${Opcode_SSE} pclmullqhqdq pclmullqhqdqb pclmullqhqdqw pclmullqhqdql pclmullqhqdqq" -Opcode_SSE="${Opcode_SSE} pclmulhqhqdq pclmulhqhqdqb pclmulhqhqdqw pclmulhqhqdql pclmulhqhqdqq" -Opcode_SSE="${Opcode_SSE} pclmulqdq pclmulqdqb pclmulqdqw pclmulqdql pclmulqdqq" - -# New MMX instructions introduced in Katmai -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} maskmovq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} movntq movntqb movntqw movntql movntqq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pavgb pavgbb pavgbw pavgbl pavgbq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pavgw pavgwb pavgww pavgwl pavgwq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pextrw pextrwb pextrww pextrwl pextrwq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pinsrw pinsrwb pinsrww pinsrwl pinsrwq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmaxsw pmaxswb pmaxsww pmaxswl pmaxswq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmaxub pmaxubb pmaxubw pmaxubl pmaxubq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pminsw pminswb pminsww pminswl pminswq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pminub pminubb pminubw pminubl pminubq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmovmskb" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmulhuw pmulhuwb pmulhuww pmulhuwl pmulhuwq" -Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} psadbw psadbwb psadbww psadbwl psadbwq" -Opcode_KATMAI_MMX2="${Opcode_KATMAI_MMX2} pshufw pshufwb pshufww pshufwl pshufwq" - -# Intel SMX -Opcode_KATMAI_Base="${Opcode_KATMAI_Base} getsec" - -# Katmai Streaming SIMD instructions (SSE -- a.k.a. KNI, XMM, MMX2) -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} addps addpsb addpsw addpsl addpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} addss addssb addssw addssl addssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} andnps andnpsb andnpsw andnpsl andnpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} andps andpsb andpsw andpsl andpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpeqps cmpeqpsb cmpeqpsw cmpeqpsl cmpeqpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpeqss cmpeqssb cmpeqssw cmpeqssl cmpeqssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpleps cmplepsb cmplepsw cmplepsl cmplepsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpless cmplessb cmplessw cmplessl cmplessq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpltps cmpltpsb cmpltpsw cmpltpsl cmpltpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpltss cmpltssb cmpltssw cmpltssl cmpltssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpneqps cmpneqpsb cmpneqpsw cmpneqpsl cmpneqpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpneqss cmpneqssb cmpneqssw cmpneqssl cmpneqssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnleps cmpnlepsb cmpnlepsw cmpnlepsl cmpnlepsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnless cmpnlessb cmpnlessw cmpnlessl cmpnlessq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnltps cmpnltpsb cmpnltpsw cmpnltpsl cmpnltpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnltss cmpnltssb cmpnltssw cmpnltssl cmpnltssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpordps cmpordpsb cmpordpsw cmpordpsl cmpordpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpordss cmpordssb cmpordssw cmpordssl cmpordssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpunordps cmpunordpsb cmpunordpsw cmpunordpsl cmpunordpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpunordss cmpunordssb cmpunordssw cmpunordssl cmpunordssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpps cmppsb cmppsw cmppsl cmppsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpss cmpssb cmpssw cmpssl cmpssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} comiss comissb comissw comissl comissq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cvtpi2ps cvtpi2psb cvtpi2psw cvtpi2psl cvtpi2psq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cvtps2pi cvtps2pib cvtps2piw cvtps2pil cvtps2piq" -Opcode_X64_SSE="${Opcode_X64_SSE} cvtsi2ss" -Opcode_X64_SSE="${Opcode_X64_SSE} cvtss2si cvtss2sib cvtss2siw cvtss2sil cvtss2siq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cvttps2pi cvttps2pib cvttps2piw cvttps2pil cvttps2piq" -Opcode_X64_SSE="${Opcode_X64_SSE} cvttss2si cvttss2sib cvttss2siw cvttss2sil cvttss2siq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} divps divpsb divpsw divpsl divpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} divss divssb divssw divssl divssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} ldmxcsr ldmxcsrb ldmxcsrw ldmxcsrl ldmxcsrq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} maxps maxpsb maxpsw maxpsl maxpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} maxss maxssb maxssw maxssl maxssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} minps minpsb minpsw minpsl minpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} minss minssb minssw minssl minssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movaps" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movhps movhpsb movhpsw movhpsl movhpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movlhps" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movlps movlpsb movlpsw movlpsl movlpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movhlps" -Opcode_X64_SSE="${Opcode_X64_SSE} movmskps" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movntps movntpsb movntpsw movntpsl movntpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movss" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movups" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} mulps mulpsb mulpsw mulpsl mulpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} mulss mulssb mulssw mulssl mulssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} orps orpsb orpsw orpsl orpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rcpps rcppsb rcppsw rcppsl rcppsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rcpss rcpssb rcpssw rcpssl rcpssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rsqrtps rsqrtpsb rsqrtpsw rsqrtpsl rsqrtpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rsqrtss rsqrtssb rsqrtssw rsqrtssl rsqrtssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} shufps shufpsb shufpsw shufpsl shufpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} sqrtps sqrtpsb sqrtpsw sqrtpsl sqrtpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} sqrtss sqrtssb sqrtssw sqrtssl sqrtssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} stmxcsr stmxcsrb stmxcsrw stmxcsrl stmxcsrq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} subps subpsb subpsw subpsl subpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} subss subssb subssw subssl subssq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} ucomiss ucomissb ucomissw ucomissl ucomissq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} unpckhps unpckhpsb unpckhpsw unpckhpsl unpckhpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} unpcklps unpcklpsb unpcklpsw unpcklpsl unpcklpsq" -Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} xorps xorpsb xorpsw xorpsl xorpsq" - -# Extended Page Tables VMX instructions -Opcode_VMX="${Opcode_VMX} invept inveptb inveptw inveptl inveptq" -Opcode_VMX="${Opcode_VMX} invvpid invvpidb invvpidw invvpidl invvpidq" - -# VMX Instructions -Opcode_VMX="${Opcode_VMX} vmcall" -Opcode_VMX="${Opcode_VMX} vmclear vmclearb vmclearw vmclearl vmclearq" -Opcode_VMX="${Opcode_VMX} vmlaunch" -Opcode_X64_VMX="${Opcode_X64_VMX} vmload" -Opcode_X64_VMX="${Opcode_X64_VMX} vmmcall" -Opcode_VMX="${Opcode_VMX} vmptrld vmptrldb vmptrldw vmptrldl vmptrldq" -Opcode_VMX="${Opcode_VMX} vmptrst vmptrstb vmptrstw vmptrstl vmptrstq" -Opcode_X64_VMX="${Opcode_X64_VMX} vmread" -Opcode_VMX="${Opcode_VMX} vmresume" -Opcode_X64_VMX="${Opcode_X64_VMX} vmrun" -Opcode_X64_VMX="${Opcode_X64_VMX} vmsave" -Opcode_X64_VMX="${Opcode_X64_VMX} vmwrite" -Opcode_VMX="${Opcode_VMX} vmxoff" -Opcode_VMX="${Opcode_VMX} vmxon vmxonb vmxonw vmxonl vmxonq" - -# Intel AVX AES instructions -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesenc vaesencb vaesencw vaesencl vaesencq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesenclast vaesenclastb vaesenclastw vaesenclastl vaesenclastq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesdec vaesdecb vaesdecw vaesdecl vaesdecq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesdeclast vaesdeclastb vaesdeclastw vaesdeclastl vaesdeclastq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesimc vaesimcb vaesimcw vaesimcl vaesimcq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaeskeygenassist vaeskeygenassistb vaeskeygenassistw vaeskeygenassistl vaeskeygenassistq" - -# New instructions in Barcelona -Opcode_X64_Base="${Opcode_X64_Base} lzcnt" - -# Intel AVX instructions -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddpd vaddpdb vaddpdw vaddpdl vaddpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddps vaddpsb vaddpsw vaddpsl vaddpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddsd vaddsdb vaddsdw vaddsdl vaddsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddss vaddssb vaddssw vaddssl vaddssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddsubpd vaddsubpdb vaddsubpdw vaddsubpdl vaddsubpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddsubps vaddsubpsb vaddsubpsw vaddsubpsl vaddsubpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandpd vandpdb vandpdw vandpdl vandpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandps vandpsb vandpsw vandpsl vandpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandnpd vandnpdb vandnpdw vandnpdl vandnpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandnps vandnpsb vandnpsw vandnpsl vandnpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendpd vblendpdb vblendpdw vblendpdl vblendpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendps vblendpsb vblendpsw vblendpsl vblendpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendvpd vblendvpdb vblendvpdw vblendvpdl vblendvpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendvps vblendvpsb vblendvpsw vblendvpsl vblendvpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendvpd vblendvpdb vblendvpdw vblendvpdl vblendvpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vbroadcastss vbroadcastssb vbroadcastssw vbroadcastssl vbroadcastssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vbroadcastsd vbroadcastsdb vbroadcastsdw vbroadcastsdl vbroadcastsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vbroadcastf128 vbroadcastf128b vbroadcastf128w vbroadcastf128l vbroadcastf128q" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqpd vcmpeqpdb vcmpeqpdw vcmpeqpdl vcmpeqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltpd vcmpltpdb vcmpltpdw vcmpltpdl vcmpltpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplepd vcmplepdb vcmplepdw vcmplepdl vcmplepdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordpd vcmpunordpdb vcmpunordpdw vcmpunordpdl vcmpunordpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqpd vcmpneqpdb vcmpneqpdw vcmpneqpdl vcmpneqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltpd vcmpnltpdb vcmpnltpdw vcmpnltpdl vcmpnltpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlepd vcmpnlepdb vcmpnlepdw vcmpnlepdl vcmpnlepdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordpd vcmpordpdb vcmpordpdw vcmpordpdl vcmpordpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqpd vcmpeq_uqpdb vcmpeq_uqpdw vcmpeq_uqpdl vcmpeq_uqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngepd vcmpngepdb vcmpngepdw vcmpngepdl vcmpngepdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtpd vcmpngtpdb vcmpngtpdw vcmpngtpdl vcmpngtpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalsepd vcmpfalsepdb vcmpfalsepdw vcmpfalsepdl vcmpfalsepdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqpd vcmpneq_oqpdb vcmpneq_oqpdw vcmpneq_oqpdl vcmpneq_oqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgepd vcmpgepdb vcmpgepdw vcmpgepdl vcmpgepdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtpd vcmpgtpdb vcmpgtpdw vcmpgtpdl vcmpgtpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptruepd vcmptruepdb vcmptruepdw vcmptruepdl vcmptruepdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_ospd vcmpeq_ospdb vcmpeq_ospdw vcmpeq_ospdl vcmpeq_ospdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqpd vcmplt_oqpdb vcmplt_oqpdw vcmplt_oqpdl vcmplt_oqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqpd vcmple_oqpdb vcmple_oqpdw vcmple_oqpdl vcmple_oqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_spd vcmpunord_spdb vcmpunord_spdw vcmpunord_spdl vcmpunord_spdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_uspd vcmpneq_uspdb vcmpneq_uspdw vcmpneq_uspdl vcmpneq_uspdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqpd vcmpnlt_uqpdb vcmpnlt_uqpdw vcmpnlt_uqpdl vcmpnlt_uqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqpd vcmpnle_uqpdb vcmpnle_uqpdw vcmpnle_uqpdl vcmpnle_uqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_spd vcmpord_spdb vcmpord_spdw vcmpord_spdl vcmpord_spdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uspd vcmpeq_uspdb vcmpeq_uspdw vcmpeq_uspdl vcmpeq_uspdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqpd vcmpnge_uqpdb vcmpnge_uqpdw vcmpnge_uqpdl vcmpnge_uqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqpd vcmpngt_uqpdb vcmpngt_uqpdw vcmpngt_uqpdl vcmpngt_uqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_ospd vcmpfalse_ospdb vcmpfalse_ospdw vcmpfalse_ospdl vcmpfalse_ospdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_ospd vcmpneq_ospdb vcmpneq_ospdw vcmpneq_ospdl vcmpneq_ospdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqpd vcmpge_oqpdb vcmpge_oqpdw vcmpge_oqpdl vcmpge_oqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqpd vcmpgt_oqpdb vcmpgt_oqpdw vcmpgt_oqpdl vcmpgt_oqpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_uspd vcmptrue_uspdb vcmptrue_uspdw vcmptrue_uspdl vcmptrue_uspdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmppd vcmppdb vcmppdw vcmppdl vcmppdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqps vcmpeqpsb vcmpeqpsw vcmpeqpsl vcmpeqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltps vcmpltpsb vcmpltpsw vcmpltpsl vcmpltpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpleps vcmplepsb vcmplepsw vcmplepsl vcmplepsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordps vcmpunordpsb vcmpunordpsw vcmpunordpsl vcmpunordpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqps vcmpneqpsb vcmpneqpsw vcmpneqpsl vcmpneqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltps vcmpnltpsb vcmpnltpsw vcmpnltpsl vcmpnltpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnleps vcmpnlepsb vcmpnlepsw vcmpnlepsl vcmpnlepsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordps vcmpordpsb vcmpordpsw vcmpordpsl vcmpordpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqps vcmpeq_uqpsb vcmpeq_uqpsw vcmpeq_uqpsl vcmpeq_uqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngeps vcmpngepsb vcmpngepsw vcmpngepsl vcmpngepsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtps vcmpngtpsb vcmpngtpsw vcmpngtpsl vcmpngtpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalseps vcmpfalsepsb vcmpfalsepsw vcmpfalsepsl vcmpfalsepsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqps vcmpneq_oqpsb vcmpneq_oqpsw vcmpneq_oqpsl vcmpneq_oqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgeps vcmpgepsb vcmpgepsw vcmpgepsl vcmpgepsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtps vcmpgtpsb vcmpgtpsw vcmpgtpsl vcmpgtpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrueps vcmptruepsb vcmptruepsw vcmptruepsl vcmptruepsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_osps vcmpeq_ospsb vcmpeq_ospsw vcmpeq_ospsl vcmpeq_ospsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqps vcmplt_oqpsb vcmplt_oqpsw vcmplt_oqpsl vcmplt_oqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqps vcmple_oqpsb vcmple_oqpsw vcmple_oqpsl vcmple_oqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_sps vcmpunord_spsb vcmpunord_spsw vcmpunord_spsl vcmpunord_spsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_usps vcmpneq_uspsb vcmpneq_uspsw vcmpneq_uspsl vcmpneq_uspsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqps vcmpnlt_uqpsb vcmpnlt_uqpsw vcmpnlt_uqpsl vcmpnlt_uqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqps vcmpnle_uqpsb vcmpnle_uqpsw vcmpnle_uqpsl vcmpnle_uqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_sps vcmpord_spsb vcmpord_spsw vcmpord_spsl vcmpord_spsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_usps vcmpeq_uspsb vcmpeq_uspsw vcmpeq_uspsl vcmpeq_uspsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqps vcmpnge_uqpsb vcmpnge_uqpsw vcmpnge_uqpsl vcmpnge_uqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqps vcmpngt_uqpsb vcmpngt_uqpsw vcmpngt_uqpsl vcmpngt_uqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_osps vcmpfalse_ospsb vcmpfalse_ospsw vcmpfalse_ospsl vcmpfalse_ospsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_osps vcmpneq_ospsb vcmpneq_ospsw vcmpneq_ospsl vcmpneq_ospsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqps vcmpge_oqpsb vcmpge_oqpsw vcmpge_oqpsl vcmpge_oqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqps vcmpgt_oqpsb vcmpgt_oqpsw vcmpgt_oqpsl vcmpgt_oqpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_usps vcmptrue_uspsb vcmptrue_uspsw vcmptrue_uspsl vcmptrue_uspsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpps vcmppsb vcmppsw vcmppsl vcmppsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqsd vcmpeqsdb vcmpeqsdw vcmpeqsdl vcmpeqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltsd vcmpltsdb vcmpltsdw vcmpltsdl vcmpltsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplesd vcmplesdb vcmplesdw vcmplesdl vcmplesdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordsd vcmpunordsdb vcmpunordsdw vcmpunordsdl vcmpunordsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqsd vcmpneqsdb vcmpneqsdw vcmpneqsdl vcmpneqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltsd vcmpnltsdb vcmpnltsdw vcmpnltsdl vcmpnltsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlesd vcmpnlesdb vcmpnlesdw vcmpnlesdl vcmpnlesdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordsd vcmpordsdb vcmpordsdw vcmpordsdl vcmpordsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqsd vcmpeq_uqsdb vcmpeq_uqsdw vcmpeq_uqsdl vcmpeq_uqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngesd vcmpngesdb vcmpngesdw vcmpngesdl vcmpngesdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtsd vcmpngtsdb vcmpngtsdw vcmpngtsdl vcmpngtsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalsesd vcmpfalsesdb vcmpfalsesdw vcmpfalsesdl vcmpfalsesdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqsd vcmpneq_oqsdb vcmpneq_oqsdw vcmpneq_oqsdl vcmpneq_oqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgesd vcmpgesdb vcmpgesdw vcmpgesdl vcmpgesdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtsd vcmpgtsdb vcmpgtsdw vcmpgtsdl vcmpgtsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptruesd vcmptruesdb vcmptruesdw vcmptruesdl vcmptruesdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_ossd vcmpeq_ossdb vcmpeq_ossdw vcmpeq_ossdl vcmpeq_ossdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqsd vcmplt_oqsdb vcmplt_oqsdw vcmplt_oqsdl vcmplt_oqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqsd vcmple_oqsdb vcmple_oqsdw vcmple_oqsdl vcmple_oqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_ssd vcmpunord_ssdb vcmpunord_ssdw vcmpunord_ssdl vcmpunord_ssdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_ussd vcmpneq_ussdb vcmpneq_ussdw vcmpneq_ussdl vcmpneq_ussdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqsd vcmpnlt_uqsdb vcmpnlt_uqsdw vcmpnlt_uqsdl vcmpnlt_uqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqsd vcmpnle_uqsdb vcmpnle_uqsdw vcmpnle_uqsdl vcmpnle_uqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_ssd vcmpord_ssdb vcmpord_ssdw vcmpord_ssdl vcmpord_ssdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_ussd vcmpeq_ussdb vcmpeq_ussdw vcmpeq_ussdl vcmpeq_ussdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqsd vcmpnge_uqsdb vcmpnge_uqsdw vcmpnge_uqsdl vcmpnge_uqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqsd vcmpngt_uqsdb vcmpngt_uqsdw vcmpngt_uqsdl vcmpngt_uqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_ossd vcmpfalse_ossdb vcmpfalse_ossdw vcmpfalse_ossdl vcmpfalse_ossdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_ossd vcmpneq_ossdb vcmpneq_ossdw vcmpneq_ossdl vcmpneq_ossdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqsd vcmpge_oqsdb vcmpge_oqsdw vcmpge_oqsdl vcmpge_oqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqsd vcmpgt_oqsdb vcmpgt_oqsdw vcmpgt_oqsdl vcmpgt_oqsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_ussd vcmptrue_ussdb vcmptrue_ussdw vcmptrue_ussdl vcmptrue_ussdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpsd vcmpsdb vcmpsdw vcmpsdl vcmpsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqss vcmpeqssb vcmpeqssw vcmpeqssl vcmpeqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltss vcmpltssb vcmpltssw vcmpltssl vcmpltssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpless vcmplessb vcmplessw vcmplessl vcmplessq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordss vcmpunordssb vcmpunordssw vcmpunordssl vcmpunordssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqss vcmpneqssb vcmpneqssw vcmpneqssl vcmpneqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltss vcmpnltssb vcmpnltssw vcmpnltssl vcmpnltssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnless vcmpnlessb vcmpnlessw vcmpnlessl vcmpnlessq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordss vcmpordssb vcmpordssw vcmpordssl vcmpordssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqss vcmpeq_uqssb vcmpeq_uqssw vcmpeq_uqssl vcmpeq_uqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngess vcmpngessb vcmpngessw vcmpngessl vcmpngessq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtss vcmpngtssb vcmpngtssw vcmpngtssl vcmpngtssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalsess vcmpfalsessb vcmpfalsessw vcmpfalsessl vcmpfalsessq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqss vcmpneq_oqssb vcmpneq_oqssw vcmpneq_oqssl vcmpneq_oqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgess vcmpgessb vcmpgessw vcmpgessl vcmpgessq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtss vcmpgtssb vcmpgtssw vcmpgtssl vcmpgtssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptruess vcmptruessb vcmptruessw vcmptruessl vcmptruessq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_osss vcmpeq_osssb vcmpeq_osssw vcmpeq_osssl vcmpeq_osssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqss vcmplt_oqssb vcmplt_oqssw vcmplt_oqssl vcmplt_oqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqss vcmple_oqssb vcmple_oqssw vcmple_oqssl vcmple_oqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_sss vcmpunord_sssb vcmpunord_sssw vcmpunord_sssl vcmpunord_sssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_usss vcmpneq_usssb vcmpneq_usssw vcmpneq_usssl vcmpneq_usssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqss vcmpnlt_uqssb vcmpnlt_uqssw vcmpnlt_uqssl vcmpnlt_uqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqss vcmpnle_uqssb vcmpnle_uqssw vcmpnle_uqssl vcmpnle_uqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_sss vcmpord_sssb vcmpord_sssw vcmpord_sssl vcmpord_sssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_usss vcmpeq_usssb vcmpeq_usssw vcmpeq_usssl vcmpeq_usssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqss vcmpnge_uqssb vcmpnge_uqssw vcmpnge_uqssl vcmpnge_uqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqss vcmpngt_uqssb vcmpngt_uqssw vcmpngt_uqssl vcmpngt_uqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_osss vcmpfalse_osssb vcmpfalse_osssw vcmpfalse_osssl vcmpfalse_osssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_osss vcmpneq_osssb vcmpneq_osssw vcmpneq_osssl vcmpneq_osssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqss vcmpge_oqssb vcmpge_oqssw vcmpge_oqssl vcmpge_oqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqss vcmpgt_oqssb vcmpgt_oqssw vcmpgt_oqssl vcmpgt_oqssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_usss vcmptrue_usssb vcmptrue_usssw vcmptrue_usssl vcmptrue_usssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpss vcmpssb vcmpssw vcmpssl vcmpssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcomisd vcomisdb vcomisdw vcomisdl vcomisdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcomiss vcomissb vcomissw vcomissl vcomissq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtdq2pd vcvtdq2pdb vcvtdq2pdw vcvtdq2pdl vcvtdq2pdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtdq2ps vcvtdq2psb vcvtdq2psw vcvtdq2psl vcvtdq2psq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtpd2dq vcvtpd2dqb vcvtpd2dqw vcvtpd2dql vcvtpd2dqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtpd2ps vcvtpd2psb vcvtpd2psw vcvtpd2psl vcvtpd2psq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtps2dq vcvtps2dqb vcvtps2dqw vcvtps2dql vcvtps2dqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtps2pd vcvtps2pdb vcvtps2pdw vcvtps2pdl vcvtps2pdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsd2si vcvtsd2sib vcvtsd2siw vcvtsd2sil vcvtsd2siq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsd2ss vcvtsd2ssb vcvtsd2ssw vcvtsd2ssl vcvtsd2ssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsi2sd" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsi2ss" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtss2sd vcvtss2sdb vcvtss2sdw vcvtss2sdl vcvtss2sdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtss2si vcvtss2sib vcvtss2siw vcvtss2sil vcvtss2siq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttpd2dq vcvttpd2dqb vcvttpd2dqw vcvttpd2dql vcvttpd2dqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttps2dq vcvttps2dqb vcvttps2dqw vcvttps2dql vcvttps2dqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttsd2si vcvttsd2sib vcvttsd2siw vcvttsd2sil vcvttsd2siq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttss2si vcvttss2sib vcvttss2siw vcvttss2sil vcvttss2siq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivpd vdivpdb vdivpdw vdivpdl vdivpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivps vdivpsb vdivpsw vdivpsl vdivpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivsd vdivsdb vdivsdw vdivsdl vdivsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivss vdivssb vdivssw vdivssl vdivssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdppd vdppdb vdppdw vdppdl vdppdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdpps vdppsb vdppsw vdppsl vdppsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vextractf128 vextractf128b vextractf128w vextractf128l vextractf128q" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vextractps vextractpsb vextractpsw vextractpsl vextractpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhaddpd vhaddpdb vhaddpdw vhaddpdl vhaddpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhaddps vhaddpsb vhaddpsw vhaddpsl vhaddpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhsubpd vhsubpdb vhsubpdw vhsubpdl vhsubpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhsubps vhsubpsb vhsubpsw vhsubpsl vhsubpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vinsertf128 vinsertf128b vinsertf128w vinsertf128l vinsertf128q" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vinsertps vinsertpsb vinsertpsw vinsertpsl vinsertpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vlddqu vlddqub vlddquw vlddqul vlddquq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vldqqu vldqqub vldqquw vldqqul vldqquq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vlddqu vlddqub vlddquw vlddqul vlddquq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vldmxcsr vldmxcsrb vldmxcsrw vldmxcsrl vldmxcsrq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaskmovdqu" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaskmovps vmaskmovpsb vmaskmovpsw vmaskmovpsl vmaskmovpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaskmovpd vmaskmovpdb vmaskmovpdw vmaskmovpdl vmaskmovpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxpd vmaxpdb vmaxpdw vmaxpdl vmaxpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxps vmaxpsb vmaxpsw vmaxpsl vmaxpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxsd vmaxsdb vmaxsdw vmaxsdl vmaxsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxss vmaxssb vmaxssw vmaxssl vmaxssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminpd vminpdb vminpdw vminpdl vminpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminps vminpsb vminpsw vminpsl vminpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminsd vminsdb vminsdw vminsdl vminsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminss vminssb vminssw vminssl vminssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovapd vmovapdb vmovapdw vmovapdl vmovapdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovaps vmovapsb vmovapsw vmovapsl vmovapsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovq vmovqb vmovqw vmovql vmovqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovd" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovd" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovddup vmovddupb vmovddupw vmovddupl vmovddupq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqa vmovdqab vmovdqaw vmovdqal vmovdqaq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovqqa vmovqqab vmovqqaw vmovqqal vmovqqaq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqa vmovdqab vmovdqaw vmovdqal vmovdqaq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqu vmovdqub vmovdquw vmovdqul vmovdquq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovqqu vmovqqub vmovqquw vmovqqul vmovqquq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqu vmovdqub vmovdquw vmovdqul vmovdquq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovhlps" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovhpd vmovhpdb vmovhpdw vmovhpdl vmovhpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovhps vmovhpsb vmovhpsw vmovhpsl vmovhpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovlhps" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovlpd vmovlpdb vmovlpdw vmovlpdl vmovlpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovlps vmovlpsb vmovlpsw vmovlpsl vmovlpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovmskpd vmovmskpdb vmovmskpdw vmovmskpdl vmovmskpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovmskps vmovmskpsb vmovmskpsw vmovmskpsl vmovmskpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntdq vmovntdqb vmovntdqw vmovntdql vmovntdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntqq vmovntqqb vmovntqqw vmovntqql vmovntqqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntdq vmovntdqb vmovntdqw vmovntdql vmovntdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntdqa vmovntdqab vmovntdqaw vmovntdqal vmovntdqaq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntpd vmovntpdb vmovntpdw vmovntpdl vmovntpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntps vmovntpsb vmovntpsw vmovntpsl vmovntpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovsd vmovsdb vmovsdw vmovsdl vmovsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovshdup vmovshdupb vmovshdupw vmovshdupl vmovshdupq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovsldup vmovsldupb vmovsldupw vmovsldupl vmovsldupq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovss vmovssb vmovssw vmovssl vmovssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovupd vmovupdb vmovupdw vmovupdl vmovupdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovups vmovupsb vmovupsw vmovupsl vmovupsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmpsadbw vmpsadbwb vmpsadbww vmpsadbwl vmpsadbwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulpd vmulpdb vmulpdw vmulpdl vmulpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulps vmulpsb vmulpsw vmulpsl vmulpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulsd vmulsdb vmulsdw vmulsdl vmulsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulss vmulssb vmulssw vmulssl vmulssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vorpd vorpdb vorpdw vorpdl vorpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vorps vorpsb vorpsw vorpsl vorpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpabsb vpabsbb vpabsbw vpabsbl vpabsbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpabsw vpabswb vpabsww vpabswl vpabswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpabsd vpabsdb vpabsdw vpabsdl vpabsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpacksswb vpacksswbb vpacksswbw vpacksswbl vpacksswbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpackssdw vpackssdwb vpackssdww vpackssdwl vpackssdwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpackuswb vpackuswbb vpackuswbw vpackuswbl vpackuswbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpackusdw vpackusdwb vpackusdww vpackusdwl vpackusdwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddb vpaddbb vpaddbw vpaddbl vpaddbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddw vpaddwb vpaddww vpaddwl vpaddwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddd vpadddb vpadddw vpadddl vpadddq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddq vpaddqb vpaddqw vpaddql vpaddqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddsb vpaddsbb vpaddsbw vpaddsbl vpaddsbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddsw vpaddswb vpaddsww vpaddswl vpaddswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddusb vpaddusbb vpaddusbw vpaddusbl vpaddusbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddusw vpadduswb vpaddusww vpadduswl vpadduswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpalignr vpalignrb vpalignrw vpalignrl vpalignrq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpand vpandb vpandw vpandl vpandq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpandn vpandnb vpandnw vpandnl vpandnq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpavgb vpavgbb vpavgbw vpavgbl vpavgbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpavgw vpavgwb vpavgww vpavgwl vpavgwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpblendvb vpblendvbb vpblendvbw vpblendvbl vpblendvbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpblendw vpblendwb vpblendww vpblendwl vpblendwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpestri vpcmpestrib vpcmpestriw vpcmpestril vpcmpestriq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpestrm vpcmpestrmb vpcmpestrmw vpcmpestrml vpcmpestrmq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpistri vpcmpistrib vpcmpistriw vpcmpistril vpcmpistriq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpistrm vpcmpistrmb vpcmpistrmw vpcmpistrml vpcmpistrmq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqb vpcmpeqbb vpcmpeqbw vpcmpeqbl vpcmpeqbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqw vpcmpeqwb vpcmpeqww vpcmpeqwl vpcmpeqwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqd vpcmpeqdb vpcmpeqdw vpcmpeqdl vpcmpeqdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqq vpcmpeqqb vpcmpeqqw vpcmpeqql vpcmpeqqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtb vpcmpgtbb vpcmpgtbw vpcmpgtbl vpcmpgtbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtw vpcmpgtwb vpcmpgtww vpcmpgtwl vpcmpgtwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtd vpcmpgtdb vpcmpgtdw vpcmpgtdl vpcmpgtdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtq vpcmpgtqb vpcmpgtqw vpcmpgtql vpcmpgtqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilpd vpermilpdb vpermilpdw vpermilpdl vpermilpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermiltd2pd vpermiltd2pdb vpermiltd2pdw vpermiltd2pdl vpermiltd2pdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmo2pd vpermilmo2pdb vpermilmo2pdw vpermilmo2pdl vpermilmo2pdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmz2pd vpermilmz2pdb vpermilmz2pdw vpermilmz2pdl vpermilmz2pdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermil2pd vpermil2pdb vpermil2pdw vpermil2pdl vpermil2pdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilps vpermilpsb vpermilpsw vpermilpsl vpermilpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermiltd2ps vpermiltd2psb vpermiltd2psw vpermiltd2psl vpermiltd2psq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmo2ps vpermilmo2psb vpermilmo2psw vpermilmo2psl vpermilmo2psq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmz2ps vpermilmz2psb vpermilmz2psw vpermilmz2psl vpermilmz2psq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermil2ps vpermil2psb vpermil2psw vpermil2psl vpermil2psq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vperm2f128 vperm2f128b vperm2f128w vperm2f128l vperm2f128q" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrb vpextrbb vpextrbw vpextrbl vpextrbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrw vpextrwb vpextrww vpextrwl vpextrwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrd vpextrdb vpextrdw vpextrdl vpextrdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrq vpextrqb vpextrqw vpextrql vpextrqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphaddw vphaddwb vphaddww vphaddwl vphaddwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphaddd vphadddb vphadddw vphadddl vphadddq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphaddsw vphaddswb vphaddsww vphaddswl vphaddswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphminposuw vphminposuwb vphminposuww vphminposuwl vphminposuwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphsubw vphsubwb vphsubww vphsubwl vphsubwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphsubd vphsubdb vphsubdw vphsubdl vphsubdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphsubsw vphsubswb vphsubsww vphsubswl vphsubswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrb vpinsrbb vpinsrbw vpinsrbl vpinsrbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrw vpinsrwb vpinsrww vpinsrwl vpinsrwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrd vpinsrdb vpinsrdw vpinsrdl vpinsrdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrq vpinsrqb vpinsrqw vpinsrql vpinsrqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaddwd vpmaddwdb vpmaddwdw vpmaddwdl vpmaddwdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaddubsw vpmaddubswb vpmaddubsww vpmaddubswl vpmaddubswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxsb vpmaxsbb vpmaxsbw vpmaxsbl vpmaxsbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxsw vpmaxswb vpmaxsww vpmaxswl vpmaxswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxsd vpmaxsdb vpmaxsdw vpmaxsdl vpmaxsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxub vpmaxubb vpmaxubw vpmaxubl vpmaxubq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxuw vpmaxuwb vpmaxuww vpmaxuwl vpmaxuwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxud vpmaxudb vpmaxudw vpmaxudl vpmaxudq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminsb vpminsbb vpminsbw vpminsbl vpminsbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminsw vpminswb vpminsww vpminswl vpminswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminsd vpminsdb vpminsdw vpminsdl vpminsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminub vpminubb vpminubw vpminubl vpminubq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminuw vpminuwb vpminuww vpminuwl vpminuwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminud vpminudb vpminudw vpminudl vpminudq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovmskb" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxbw vpmovsxbwb vpmovsxbww vpmovsxbwl vpmovsxbwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxbd vpmovsxbdb vpmovsxbdw vpmovsxbdl vpmovsxbdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxbq vpmovsxbqb vpmovsxbqw vpmovsxbql vpmovsxbqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxwd vpmovsxwdb vpmovsxwdw vpmovsxwdl vpmovsxwdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxwq vpmovsxwqb vpmovsxwqw vpmovsxwql vpmovsxwqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxdq vpmovsxdqb vpmovsxdqw vpmovsxdql vpmovsxdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxbw vpmovzxbwb vpmovzxbww vpmovzxbwl vpmovzxbwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxbd vpmovzxbdb vpmovzxbdw vpmovzxbdl vpmovzxbdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxbq vpmovzxbqb vpmovzxbqw vpmovzxbql vpmovzxbqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxwd vpmovzxwdb vpmovzxwdw vpmovzxwdl vpmovzxwdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxwq vpmovzxwqb vpmovzxwqw vpmovzxwql vpmovzxwqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxdq vpmovzxdqb vpmovzxdqw vpmovzxdql vpmovzxdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulhuw vpmulhuwb vpmulhuww vpmulhuwl vpmulhuwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulhrsw vpmulhrswb vpmulhrsww vpmulhrswl vpmulhrswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulhw vpmulhwb vpmulhww vpmulhwl vpmulhwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmullw vpmullwb vpmullww vpmullwl vpmullwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulld vpmulldb vpmulldw vpmulldl vpmulldq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmuludq vpmuludqb vpmuludqw vpmuludql vpmuludqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmuldq vpmuldqb vpmuldqw vpmuldql vpmuldqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpor vporb vporw vporl vporq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsadbw vpsadbwb vpsadbww vpsadbwl vpsadbwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshufb vpshufbb vpshufbw vpshufbl vpshufbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshufd vpshufdb vpshufdw vpshufdl vpshufdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshufhw vpshufhwb vpshufhww vpshufhwl vpshufhwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshuflw vpshuflwb vpshuflww vpshuflwl vpshuflwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsignb vpsignbb vpsignbw vpsignbl vpsignbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsignw vpsignwb vpsignww vpsignwl vpsignwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsignd vpsigndb vpsigndw vpsigndl vpsigndq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpslldq vpslldqb vpslldqw vpslldql vpslldqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrldq vpsrldqb vpsrldqw vpsrldql vpsrldqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsllw vpsllwb vpsllww vpsllwl vpsllwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpslld vpslldb vpslldw vpslldl vpslldq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsllq vpsllqb vpsllqw vpsllql vpsllqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsraw vpsrawb vpsraww vpsrawl vpsrawq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrad vpsradb vpsradw vpsradl vpsradq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrlw vpsrlwb vpsrlww vpsrlwl vpsrlwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrld vpsrldb vpsrldw vpsrldl vpsrldq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrlq vpsrlqb vpsrlqw vpsrlql vpsrlqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vptest vptestb vptestw vptestl vptestq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubb vpsubbb vpsubbw vpsubbl vpsubbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubw vpsubwb vpsubww vpsubwl vpsubwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubd vpsubdb vpsubdw vpsubdl vpsubdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubq vpsubqb vpsubqw vpsubql vpsubqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubsb vpsubsbb vpsubsbw vpsubsbl vpsubsbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubsw vpsubswb vpsubsww vpsubswl vpsubswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubusb vpsubusbb vpsubusbw vpsubusbl vpsubusbq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubusw vpsubuswb vpsubusww vpsubuswl vpsubuswq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhbw vpunpckhbwb vpunpckhbww vpunpckhbwl vpunpckhbwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhwd vpunpckhwdb vpunpckhwdw vpunpckhwdl vpunpckhwdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhdq vpunpckhdqb vpunpckhdqw vpunpckhdql vpunpckhdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhqdq vpunpckhqdqb vpunpckhqdqw vpunpckhqdql vpunpckhqdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpcklbw vpunpcklbwb vpunpcklbww vpunpcklbwl vpunpcklbwq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpcklwd vpunpcklwdb vpunpcklwdw vpunpcklwdl vpunpcklwdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckldq vpunpckldqb vpunpckldqw vpunpckldql vpunpckldqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpcklqdq vpunpcklqdqb vpunpcklqdqw vpunpcklqdql vpunpcklqdqq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpxor vpxorb vpxorw vpxorl vpxorq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrcpps vrcppsb vrcppsw vrcppsl vrcppsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrcpss vrcpssb vrcpssw vrcpssl vrcpssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrsqrtps vrsqrtpsb vrsqrtpsw vrsqrtpsl vrsqrtpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrsqrtss vrsqrtssb vrsqrtssw vrsqrtssl vrsqrtssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundpd vroundpdb vroundpdw vroundpdl vroundpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundps vroundpsb vroundpsw vroundpsl vroundpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundsd vroundsdb vroundsdw vroundsdl vroundsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundss vroundssb vroundssw vroundssl vroundssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vshufpd vshufpdb vshufpdw vshufpdl vshufpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vshufps vshufpsb vshufpsw vshufpsl vshufpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtpd vsqrtpdb vsqrtpdw vsqrtpdl vsqrtpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtps vsqrtpsb vsqrtpsw vsqrtpsl vsqrtpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtsd vsqrtsdb vsqrtsdw vsqrtsdl vsqrtsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtss vsqrtssb vsqrtssw vsqrtssl vsqrtssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vstmxcsr vstmxcsrb vstmxcsrw vstmxcsrl vstmxcsrq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubpd vsubpdb vsubpdw vsubpdl vsubpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubps vsubpsb vsubpsw vsubpsl vsubpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubsd vsubsdb vsubsdw vsubsdl vsubsdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubss vsubssb vsubssw vsubssl vsubssq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vtestps vtestpsb vtestpsw vtestpsl vtestpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vtestpd vtestpdb vtestpdw vtestpdl vtestpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vucomisd vucomisdb vucomisdw vucomisdl vucomisdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vucomiss vucomissb vucomissw vucomissl vucomissq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpckhpd vunpckhpdb vunpckhpdw vunpckhpdl vunpckhpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpckhps vunpckhpsb vunpckhpsw vunpckhpsl vunpckhpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpcklpd vunpcklpdb vunpcklpdw vunpcklpdl vunpcklpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpcklps vunpcklpsb vunpcklpsw vunpcklpsl vunpcklpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vxorpd vxorpdb vxorpdw vxorpdl vxorpdq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vxorps vxorpsb vxorpsw vxorpsl vxorpsq" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vzeroall" -Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vzeroupper" - -# AMD Enhanced 3DNow! (Athlon) instructions -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pf2iw pf2iwb pf2iww pf2iwl pf2iwq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfnacc pfnaccb pfnaccw pfnaccl pfnaccq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfpnacc pfpnaccb pfpnaccw pfpnaccl pfpnaccq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pi2fw pi2fwb pi2fww pi2fwl pi2fwq" -Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pswapd pswapdb pswapdw pswapdl pswapdq" - -# Penryn New Instructions (SSE4.1) -Opcode_SSE41="${Opcode_SSE41} blendpd blendpdb blendpdw blendpdl blendpdq" -Opcode_SSE41="${Opcode_SSE41} blendps blendpsb blendpsw blendpsl blendpsq" -Opcode_SSE41="${Opcode_SSE41} blendvpd blendvpdb blendvpdw blendvpdl blendvpdq" -Opcode_SSE41="${Opcode_SSE41} blendvps blendvpsb blendvpsw blendvpsl blendvpsq" -Opcode_SSE41="${Opcode_SSE41} dppd dppdb dppdw dppdl dppdq" -Opcode_SSE41="${Opcode_SSE41} dpps dppsb dppsw dppsl dppsq" -Opcode_X64_SSE41="${Opcode_X64_SSE41} extractps extractpsb extractpsw extractpsl extractpsq" -Opcode_SSE41="${Opcode_SSE41} insertps insertpsb insertpsw insertpsl insertpsq" -Opcode_SSE41="${Opcode_SSE41} movntdqa movntdqab movntdqaw movntdqal movntdqaq" -Opcode_SSE41="${Opcode_SSE41} mpsadbw mpsadbwb mpsadbww mpsadbwl mpsadbwq" -Opcode_SSE41="${Opcode_SSE41} packusdw packusdwb packusdww packusdwl packusdwq" -Opcode_SSE41="${Opcode_SSE41} pblendvb pblendvbb pblendvbw pblendvbl pblendvbq" -Opcode_SSE41="${Opcode_SSE41} pblendw pblendwb pblendww pblendwl pblendwq" -Opcode_SSE41="${Opcode_SSE41} pcmpeqq pcmpeqqb pcmpeqqw pcmpeqql pcmpeqqq" -Opcode_X64_SSE41="${Opcode_X64_SSE41} pextrb pextrbb pextrbw pextrbl pextrbq" -Opcode_SSE41="${Opcode_SSE41} pextrd pextrdb pextrdw pextrdl pextrdq" -Opcode_X64_SSE41="${Opcode_X64_SSE41} pextrq pextrqb pextrqw pextrql pextrqq" -Opcode_X64_SSE41="${Opcode_X64_SSE41} pextrw pextrwb pextrww pextrwl pextrwq" -Opcode_SSE41="${Opcode_SSE41} phminposuw phminposuwb phminposuww phminposuwl phminposuwq" -Opcode_SSE41="${Opcode_SSE41} pinsrb pinsrbb pinsrbw pinsrbl pinsrbq" -Opcode_SSE41="${Opcode_SSE41} pinsrd pinsrdb pinsrdw pinsrdl pinsrdq" -Opcode_X64_SSE41="${Opcode_X64_SSE41} pinsrq pinsrqb pinsrqw pinsrql pinsrqq" -Opcode_SSE41="${Opcode_SSE41} pmaxsb pmaxsbb pmaxsbw pmaxsbl pmaxsbq" -Opcode_SSE41="${Opcode_SSE41} pmaxsd pmaxsdb pmaxsdw pmaxsdl pmaxsdq" -Opcode_SSE41="${Opcode_SSE41} pmaxud pmaxudb pmaxudw pmaxudl pmaxudq" -Opcode_SSE41="${Opcode_SSE41} pmaxuw pmaxuwb pmaxuww pmaxuwl pmaxuwq" -Opcode_SSE41="${Opcode_SSE41} pminsb pminsbb pminsbw pminsbl pminsbq" -Opcode_SSE41="${Opcode_SSE41} pminsd pminsdb pminsdw pminsdl pminsdq" -Opcode_SSE41="${Opcode_SSE41} pminud pminudb pminudw pminudl pminudq" -Opcode_SSE41="${Opcode_SSE41} pminuw pminuwb pminuww pminuwl pminuwq" -Opcode_SSE41="${Opcode_SSE41} pmovsxbw pmovsxbwb pmovsxbww pmovsxbwl pmovsxbwq" -Opcode_SSE41="${Opcode_SSE41} pmovsxbd pmovsxbdb pmovsxbdw pmovsxbdl pmovsxbdq" -Opcode_SSE41="${Opcode_SSE41} pmovsxbq pmovsxbqb pmovsxbqw pmovsxbql pmovsxbqq" -Opcode_SSE41="${Opcode_SSE41} pmovsxwd pmovsxwdb pmovsxwdw pmovsxwdl pmovsxwdq" -Opcode_SSE41="${Opcode_SSE41} pmovsxwq pmovsxwqb pmovsxwqw pmovsxwql pmovsxwqq" -Opcode_SSE41="${Opcode_SSE41} pmovsxdq pmovsxdqb pmovsxdqw pmovsxdql pmovsxdqq" -Opcode_SSE41="${Opcode_SSE41} pmovzxbw pmovzxbwb pmovzxbww pmovzxbwl pmovzxbwq" -Opcode_SSE41="${Opcode_SSE41} pmovzxbd pmovzxbdb pmovzxbdw pmovzxbdl pmovzxbdq" -Opcode_SSE41="${Opcode_SSE41} pmovzxbq pmovzxbqb pmovzxbqw pmovzxbql pmovzxbqq" -Opcode_SSE41="${Opcode_SSE41} pmovzxwd pmovzxwdb pmovzxwdw pmovzxwdl pmovzxwdq" -Opcode_SSE41="${Opcode_SSE41} pmovzxwq pmovzxwqb pmovzxwqw pmovzxwql pmovzxwqq" -Opcode_SSE41="${Opcode_SSE41} pmovzxdq pmovzxdqb pmovzxdqw pmovzxdql pmovzxdqq" -Opcode_SSE41="${Opcode_SSE41} pmuldq pmuldqb pmuldqw pmuldql pmuldqq" -Opcode_SSE41="${Opcode_SSE41} pmulld pmulldb pmulldw pmulldl pmulldq" -Opcode_SSE41="${Opcode_SSE41} ptest ptestb ptestw ptestl ptestq" -Opcode_SSE41="${Opcode_SSE41} roundpd roundpdb roundpdw roundpdl roundpdq" -Opcode_SSE41="${Opcode_SSE41} roundps roundpsb roundpsw roundpsl roundpsq" -Opcode_SSE41="${Opcode_SSE41} roundsd roundsdb roundsdw roundsdl roundsdq" -Opcode_SSE41="${Opcode_SSE41} roundss roundssb roundssw roundssl roundssq" - -# AMD SSE4A -Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} extrq" -Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} insertq" -Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} movntsd movntsdb movntsdw movntsdl movntsdq" -Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} movntss movntssb movntssw movntssl movntssq" diff --git a/misc/README.Indexes b/misc/README.Indexes new file mode 100644 index 0000000..ddf1267 --- /dev/null +++ b/misc/README.Indexes @@ -0,0 +1 @@ +create index mirror_statuses_last_sync on mirror_statuses(last_sync ASC); diff --git a/misc/database-layout.dmf b/misc/database-layout.dmf index bc2102b..012f306 100644 --- a/misc/database-layout.dmf +++ b/misc/database-layout.dmf @@ -2,55 +2,61 @@ <diagram xmlns="http://oxygene.sk/ns/diagram/1/"> <notation>Relational</notation> <item-list> - <item type="database-table" id="{91a05cd7-dc02-474b-bd10-aab0f53ce9d7}"> + <item type="database-table" id="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"> <position> - <x>977</x> - <y>378</y> + <x>729</x> + <y>684</y> </position> <table> - <name>command_log</name> + <name>upstream_repositories</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>BIGINT</data-type> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>date</name> - <data-type>TIMESTAMP</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>command</name> + <name>name</name> <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> + </column-list> + </table> + </item> + <item type="database-table" id="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}"> + <position> + <x>217</x> + <y>328</y> + </position> + <table> + <name>compressions</name> + <color>#ffffff</color> + <column-list> <column> - <name>parameters</name> - <data-type>TEXT</data-type> + <name>id</name> + <data-type>SMALLINT</data-type> <required>True</required> - <primary-key>False</primary-key> + <primary-key>True</primary-key> </column> <column> - <name>shell</name> - <data-type>BIT</data-type> + <name>suffix</name> + <data-type>VARCHAR(8)</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}"> + <item type="database-table" id="{bb59ebca-0255-40dd-91b4-68bd2e110447}"> <position> - <x>632</x> - <y>498</y> + <x>901</x> + <y>641</y> </position> <table> - <name>upstream_packages</name> + <name>mirror_statuses</name> <color>#ffffff</color> <column-list> <column> @@ -60,165 +66,123 @@ <primary-key>True</primary-key> </column> <column> - <name>pkgname</name> - <data-type>VARCHAR(64)</data-type> + <name>protocol</name> + <data-type>VARCHAR(8)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>epoch</name> - <data-type>MEDIUMINT</data-type> + <name>url</name> + <data-type>VARCHAR(128)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>pkgver</name> + <name>country</name> <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>pkgrel</name> - <data-type>MEDIUMINT</data-type> + <name>country_code</name> + <data-type>VARCHAR(4)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>architecture</name> - <data-type>VARCHAR(6)</data-type> + <name>last_sync</name> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>repository</name> - <data-type>SMALLINT</data-type> + <name>start</name> + <data-type>FLOAT</data-type> <required>True</required> <primary-key>False</primary-key> </column> - </column-list> - </table> - </item> - <item type="database-table" id="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}"> - <position> - <x>-31</x> - <y>605</y> - </position> - <table> - <name>toolchain_order</name> - <color>#ffffff</color> - <column-list> - <column> - <name>number</name> - <data-type>SMALLINT</data-type> - <required>True</required> - <primary-key>True</primary-key> - </column> <column> - <name>pkgbase</name> - <data-type>VARCHAR(64)</data-type> + <name>stop</name> + <data-type>FLOAT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>requires_all_dependencies_built</name> + <name>isos</name> <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> - </column-list> - </table> - </item> - <item type="database-table" id="{a67b38a9-c701-412c-8292-5ef58536da85}"> - <position> - <x>524</x> - <y>62</y> - </position> - <table> - <name>versions</name> - <color>#ffffff</color> - <column-list> - <column> - <name>id</name> - <data-type>BIGINT</data-type> - <required>True</required> - <primary-key>True</primary-key> - </column> <column> - <name>order</name> - <data-type>BIGINT</data-type> + <name>ipv4</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>epoch</name> - <data-type>MEDIUMINT</data-type> + <name>ipv6</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>version</name> - <data-type>VARCHAR(32)</data-type> + <name>active</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"> + <item type="database-table" id="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"> <position> - <x>345</x> - <y>-71</y> + <x>656</x> + <y>380</y> </position> <table> - <name>dependencies</name> + <name>architecture_compatibilities</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>BIGINT</data-type> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>dependent</name> - <data-type>BIGINT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>depending_on</name> - <data-type>BIGINT</data-type> + <name>built_for</name> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>dependency_type</name> + <name>runs_on</name> <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>version</name> - <data-type>BIGINT</data-type> + <name>fully_compatible</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>version_relation</name> - <data-type>VARCHAR(2)</data-type> + <name>build_slave_compatible</name> + <data-type>BIT(n)</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"> + <item type="database-table" id="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"> <position> - <x>525</x> - <y>215</y> + <x>209</x> + <y>83</y> </position> <table> - <name>binary_packages_in_repositories</name> + <name>ssh_keys</name> <color>#ffffff</color> <column-list> <column> @@ -228,93 +192,51 @@ <primary-key>True</primary-key> </column> <column> - <name>package</name> - <data-type>BIGINT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>repository</name> + <name>owner</name> <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>is_to_be_deleted</name> - <data-type>BIT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>last_moved</name> - <data-type>TIMESTAMP</data-type> + <name>fingerprint</name> + <data-type>TEXT</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{5f12db03-a8bb-4467-bab6-a57e545b9081}"> + <item type="database-table" id="{6180fcbf-5069-4d86-8919-fd39394f1813}"> <position> - <x>-52</x> - <y>134</y> + <x>-54</x> + <y>70</y> </position> <table> - <name>ssh_log</name> + <name>email_actions</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>BIGINT</data-type> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>date</name> - <data-type>TIMESTAMP</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>build_slave</name> - <data-type>MEDIUMINT</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> - <column> - <name>action</name> + <name>name</name> <data-type>VARCHAR(32)</data-type> <required>True</required> <primary-key>False</primary-key> </column> - <column> - <name>parameters</name> - <data-type>TEXT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>duration</name> - <data-type>MEDIUMINT</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> - <column> - <name>exit_code</name> - <data-type>MEDIUMINT</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> </column-list> </table> </item> - <item type="database-table" id="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"> + <item type="database-table" id="{b5671c08-e24a-4293-b983-3c86b1a6d622}"> <position> - <x>-55</x> - <y>-72</y> + <x>62</x> + <y>8</y> </position> <table> - <name>email_log</name> + <name>allowed_email_actions</name> <color>#ffffff</color> <column-list> <column> @@ -324,92 +246,68 @@ <primary-key>True</primary-key> </column> <column> - <name>date</name> - <data-type>TIMESTAMP</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>success</name> - <data-type>BIT</data-type> + <name>gpg_key</name> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> <name>action</name> <data-type>MEDIUMINT</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> - <column> - <name>count</name> - <data-type>MEDIUMINT</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> - <column> - <name>gpg_key</name> - <data-type>BIGINT</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> - <column> - <name>comment</name> - <data-type>TEXT</data-type> - <required>False</required> + <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{d823ab09-1c04-44ee-ad4b-6802208967ff}"> + <item type="database-table" id="{f31249ea-ab19-45a4-9427-1854379ad8e7}"> <position> - <x>793</x> - <y>497</y> + <x>226</x> + <y>-78</y> </position> <table> - <name>repository_moves</name> + <name>gpg_keys</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>MEDIUMINT</data-type> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>from_repository</name> - <data-type>MEDIUMINT</data-type> + <name>fingerprint</name> + <data-type>VARCHAR(40)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>to_repository</name> + <name>owner</name> <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>upstream_package_repository</name> - <data-type>SMALLINT</data-type> + <name>public_key</name> + <data-type>TEXT</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"> + <item type="database-table" id="{75e4ebd8-5915-4aff-8316-0c542d3953da}"> <position> - <x>829</x> - <y>168</y> + <x>218</x> + <y>17</y> </position> <table> - <name>repository_stabilities</name> + <name>persons</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>SMALLINT</data-type> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> @@ -419,38 +317,26 @@ <required>True</required> <primary-key>False</primary-key> </column> - <column> - <name>bugtracker_category</name> - <data-type>VARCHAR(32)</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> </column-list> </table> </item> - <item type="database-table" id="{04b6fdc5-85ae-4416-8db5-034ad05be93a}"> + <item type="database-table" id="{36980651-4f03-4748-aee8-1f9211aaafde}"> <position> - <x>-42</x> - <y>529</y> + <x>821</x> + <y>-49</y> </position> <table> - <name>build_dependency_loops</name> + <name>todo_links</name> <color>#ffffff</color> <column-list> <column> - <name>id</name> + <name>dependent</name> <data-type>BIGINT</data-type> <required>True</required> - <primary-key>True</primary-key> - </column> - <column> - <name>loop</name> - <data-type>MEDIUMINT</data-type> - <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>build_assignment</name> + <name>depending_on</name> <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> @@ -458,49 +344,55 @@ </column-list> </table> </item> - <item type="database-table" id="{be821d83-a9b4-4c0c-8e1b-433730200714}"> + <item type="database-table" id="{dc01c567-d657-4db7-8a55-d2763ed00cee}"> <position> - <x>580</x> - <y>-71</y> + <x>971</x> + <y>-69</y> </position> <table> - <name>dependency_types</name> + <name>todos</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>SMALLINT</data-type> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>name</name> - <data-type>VARCHAR(32)</data-type> + <name>file</name> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>relevant_for_building</name> - <data-type>BIT</data-type> + <name>line</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>relevant_for_binary_packages</name> - <data-type>BIT</data-type> + <name>description</name> + <data-type>TEXT</data-type> <required>True</required> <primary-key>False</primary-key> </column> + <column> + <name>importance</name> + <data-type>SMALLINT</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> </column-list> </table> </item> - <item type="database-table" id="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"> + <item type="database-table" id="{9085c36f-5884-41c8-9ca8-9d53973e657d}"> <position> - <x>653</x> - <y>21</y> + <x>357</x> + <y>455</y> </position> <table> - <name>install_targets</name> + <name>statitstics</name> <color>#ffffff</color> <column-list> <column> @@ -510,127 +402,85 @@ <primary-key>True</primary-key> </column> <column> - <name>name</name> - <data-type>VARCHAR(64)</data-type> + <name>date</name> + <data-type>TIMESTAMP</data-type> <required>True</required> <primary-key>False</primary-key> </column> - </column-list> - </table> - </item> - <item type="database-table" id="{04f424bf-6465-478b-9529-0038615b51d9}"> - <position> - <x>382</x> - <y>378</y> - </position> - <table> - <name>architectures</name> - <color>#ffffff</color> - <column-list> - <column> - <name>id</name> - <data-type>SMALLINT</data-type> - <required>True</required> - <primary-key>True</primary-key> - </column> <column> - <name>name</name> - <data-type>VARCHAR(16)</data-type> + <name>stable_packages_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> - </column-list> - </table> - </item> - <item type="database-table" id="{7c210122-c51d-4724-b7cc-22f143bc47ac}"> - <position> - <x>103</x> - <y>694</y> - </position> - <table> - <name>package_sources</name> - <color>#ffffff</color> - <column-list> <column> - <name>id</name> - <data-type>BIGINT</data-type> + <name>pending_tasks_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> - <primary-key>True</primary-key> + <primary-key>False</primary-key> </column> <column> - <name>pkgbase</name> - <data-type>VARCHAR(64)</data-type> + <name>pending_packages_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>git_revision</name> - <data-type>VARCHAR(40)</data-type> + <name>staging_packages_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>mod_git_revision</name> - <data-type>VARCHAR(40)</data-type> + <name>testing_packages_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>upstream_package_repository</name> - <data-type>SMALLINT</data-type> + <name>tested_packages_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>uses_upstream</name> - <data-type>BIT</data-type> + <name>broken_tasks_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>uses_modification</name> - <data-type>BIT</data-type> + <name>dependency_loops_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>commit_time</name> - <data-type>TIMESTAMP</data-type> + <name>dependency_looped_tasks_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>upstream_flag_date</name> - <data-type>TIMESTAMP</data-type> - <required>False</required> + <name>locked_tasks_count</name> + <data-type>MEDIUMINT</data-type> + <required>True</required> <primary-key>False</primary-key> </column> - </column-list> - </table> - </item> - <item type="database-table" id="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"> - <position> - <x>729</x> - <y>684</y> - </position> - <table> - <name>upstream_repositories</name> - <color>#ffffff</color> - <column-list> <column> - <name>id</name> - <data-type>SMALLINT</data-type> + <name>blocked_tasks_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> - <primary-key>True</primary-key> + <primary-key>False</primary-key> </column> <column> - <name>name</name> - <data-type>VARCHAR(64)</data-type> + <name>next_tasks_count</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>git_repository</name> + <name>architecture</name> <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> @@ -638,83 +488,65 @@ </column-list> </table> </item> - <item type="database-table" id="{b3c86235-971a-4d3e-873c-c4179aa96cbc}"> + <item type="database-table" id="{92f54126-a433-458e-80b7-67235e560334}"> <position> - <x>598</x> - <y>736</y> + <x>816</x> + <y>57</y> </position> <table> - <name>git_repositories</name> + <name>repository_stability_relations</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>SMALLINT</data-type> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>name</name> - <data-type>VARCHAR(64)</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>url</name> - <data-type>VARCHAR(128)</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>directory</name> - <data-type>VARCHAR(128)</data-type> + <name>more_stable</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>head</name> - <data-type>VARCHAR(40)</data-type> + <name>less_stable</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"> + <item type="database-table" id="{7b159780-7f39-45a7-9557-046874a57e43}"> <position> - <x>803</x> - <y>261</y> + <x>-43</x> + <y>267</y> </position> <table> - <name>repositories</name> + <name>fail_reasons</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>MEDIUMINT</data-type> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> <name>name</name> - <data-type>VARCHAR(64)</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>stability</name> - <data-type>SMALLINT</data-type> + <data-type>VARCHAR(32)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>is_on_master_mirror</name> - <data-type>BIT</data-type> + <name>identifier</name> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>architecture</name> + <name>severity</name> <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> @@ -722,41 +554,53 @@ </column-list> </table> </item> - <item type="database-table" id="{f8caa2d5-11ba-485c-b273-8183713896bf}"> + <item type="database-table" id="{a774fcb7-1193-4b57-947c-135212695915}"> <position> - <x>619</x> - <y>112</y> + <x>-44</x> + <y>372</y> </position> <table> - <name>install_target_providers</name> + <name>failed_builds</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>BIGINT</data-type> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>package</name> - <data-type>BIGINT</data-type> + <name>build_slave</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>install_target</name> + <name>build_assignment</name> <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>version</name> - <data-type>BIGINT</data-type> + <name>date</name> + <data-type>TIMESTAMP</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>install_target_is_group</name> + <name>reason</name> + <data-type>SMALLINT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>log_file</name> + <data-type>VARCHAR(512)</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>log_file_exists</name> <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> @@ -764,13 +608,13 @@ </column-list> </table> </item> - <item type="database-table" id="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"> + <item type="database-table" id="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"> <position> - <x>320</x> - <y>118</y> + <x>153</x> + <y>447</y> </position> <table> - <name>binary_packages</name> + <name>build_assignments</name> <color>#ffffff</color> <column-list> <column> @@ -780,80 +624,50 @@ <primary-key>True</primary-key> </column> <column> - <name>build_assignment</name> + <name>package_source</name> <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>epoch</name> - <data-type>MEDIUMINT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>pkgver</name> - <data-type>VARCHAR(64)</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>pkgrel</name> - <data-type>MEDIUMINT</data-type> + <name>architecture</name> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>sub_pkgrel</name> - <data-type>MEDIUMINT</data-type> - <required>True</required> + <name>is_blocked</name> + <data-type>VARCHAR(128)</data-type> + <required>False</required> <primary-key>False</primary-key> </column> <column> - <name>has_issues</name> - <data-type>BIT</data-type> - <required>True</required> + <name>is_black_listed</name> + <data-type>VARCHAR(128)</data-type> + <required>False</required> <primary-key>False</primary-key> </column> <column> - <name>is_tested</name> + <name>is_broken</name> <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>pkgname</name> - <data-type>VARCHAR(64)</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>architecture</name> + <name>priority</name> <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>sha512sum</name> - <data-type>VARCHAR(128)</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> - <column> - <name>sub_pkgrel_omitted</name> - <data-type>BIT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>compression</name> - <data-type>SMALLINT</data-type> + <name>return_date</name> + <data-type>TIMESTAMP</data-type> <required>False</required> <primary-key>False</primary-key> </column> <column> - <name>signing_key</name> - <data-type>BIGINT</data-type> + <name>currently_blocking</name> + <data-type>MEDIUMINT</data-type> <required>False</required> <primary-key>False</primary-key> </column> @@ -932,13 +746,13 @@ </column-list> </table> </item> - <item type="database-table" id="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"> + <item type="database-table" id="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"> <position> - <x>153</x> - <y>447</y> + <x>320</x> + <y>118</y> </position> <table> - <name>build_assignments</name> + <name>binary_packages</name> <color>#ffffff</color> <column-list> <column> @@ -948,103 +762,121 @@ <primary-key>True</primary-key> </column> <column> - <name>package_source</name> + <name>build_assignment</name> <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>architecture</name> - <data-type>SMALLINT</data-type> + <name>epoch</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>is_blocked</name> - <data-type>VARCHAR(128)</data-type> - <required>False</required> + <name>pkgver</name> + <data-type>VARCHAR(64)</data-type> + <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>is_black_listed</name> - <data-type>VARCHAR(128)</data-type> - <required>False</required> + <name>pkgrel</name> + <data-type>MEDIUMINT</data-type> + <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>is_broken</name> + <name>sub_pkgrel</name> + <data-type>MEDIUMINT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>has_issues</name> <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>priority</name> + <name>is_tested</name> + <data-type>BIT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>pkgname</name> + <data-type>VARCHAR(64)</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>architecture</name> <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>return_date</name> - <data-type>TIMESTAMP</data-type> + <name>sha512sum</name> + <data-type>VARCHAR(128)</data-type> <required>False</required> <primary-key>False</primary-key> </column> <column> - <name>currently_blocking</name> - <data-type>MEDIUMINT</data-type> + <name>sub_pkgrel_omitted</name> + <data-type>BIT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>compression</name> + <data-type>SMALLINT</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> + <column> + <name>signing_key</name> + <data-type>BIGINT</data-type> <required>False</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{a774fcb7-1193-4b57-947c-135212695915}"> + <item type="database-table" id="{f8caa2d5-11ba-485c-b273-8183713896bf}"> <position> - <x>-44</x> - <y>372</y> + <x>619</x> + <y>112</y> </position> <table> - <name>failed_builds</name> + <name>install_target_providers</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>MEDIUMINT</data-type> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>build_slave</name> - <data-type>MEDIUMINT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>build_assignment</name> + <name>package</name> <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>date</name> - <data-type>TIMESTAMP</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>reason</name> - <data-type>SMALLINT</data-type> + <name>install_target</name> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>log_file</name> - <data-type>VARCHAR(512)</data-type> + <name>version</name> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>log_file_exists</name> + <name>install_target_is_group</name> <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> @@ -1052,35 +884,41 @@ </column-list> </table> </item> - <item type="database-table" id="{7b159780-7f39-45a7-9557-046874a57e43}"> + <item type="database-table" id="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"> <position> - <x>-43</x> - <y>267</y> + <x>803</x> + <y>261</y> </position> <table> - <name>fail_reasons</name> + <name>repositories</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>SMALLINT</data-type> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> <name>name</name> - <data-type>VARCHAR(32)</data-type> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>identifier</name> - <data-type>VARCHAR(64)</data-type> + <name>stability</name> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>severity</name> + <name>is_on_master_mirror</name> + <data-type>BIT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>architecture</name> <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> @@ -1088,43 +926,55 @@ </column-list> </table> </item> - <item type="database-table" id="{92f54126-a433-458e-80b7-67235e560334}"> + <item type="database-table" id="{b3c86235-971a-4d3e-873c-c4179aa96cbc}"> <position> - <x>816</x> - <y>57</y> + <x>598</x> + <y>736</y> </position> <table> - <name>repository_stability_relations</name> + <name>git_repositories</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>MEDIUMINT</data-type> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>more_stable</name> - <data-type>MEDIUMINT</data-type> + <name>name</name> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>less_stable</name> - <data-type>MEDIUMINT</data-type> + <name>url</name> + <data-type>VARCHAR(128)</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>directory</name> + <data-type>VARCHAR(128)</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>head</name> + <data-type>VARCHAR(40)</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{9085c36f-5884-41c8-9ca8-9d53973e657d}"> + <item type="database-table" id="{7c210122-c51d-4724-b7cc-22f143bc47ac}"> <position> - <x>357</x> - <y>455</y> + <x>103</x> + <y>694</y> </position> <table> - <name>statitstics</name> + <name>package_sources</name> <color>#ffffff</color> <column-list> <column> @@ -1134,151 +984,163 @@ <primary-key>True</primary-key> </column> <column> - <name>date</name> - <data-type>TIMESTAMP</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>stable_packages_count</name> - <data-type>MEDIUMINT</data-type> - <required>True</required> - <primary-key>False</primary-key> - </column> - <column> - <name>pending_tasks_count</name> - <data-type>MEDIUMINT</data-type> + <name>pkgbase</name> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>pending_packages_count</name> - <data-type>MEDIUMINT</data-type> + <name>git_revision</name> + <data-type>VARCHAR(40)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>staging_packages_count</name> - <data-type>MEDIUMINT</data-type> + <name>mod_git_revision</name> + <data-type>VARCHAR(40)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>testing_packages_count</name> - <data-type>MEDIUMINT</data-type> + <name>upstream_package_repository</name> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>tested_packages_count</name> - <data-type>MEDIUMINT</data-type> + <name>uses_upstream</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>broken_tasks_count</name> - <data-type>MEDIUMINT</data-type> + <name>uses_modification</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>dependency_loops_count</name> - <data-type>MEDIUMINT</data-type> + <name>commit_time</name> + <data-type>TIMESTAMP</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>dependency_looped_tasks_count</name> - <data-type>MEDIUMINT</data-type> - <required>True</required> + <name>upstream_flag_date</name> + <data-type>TIMESTAMP</data-type> + <required>False</required> <primary-key>False</primary-key> </column> + </column-list> + </table> + </item> + <item type="database-table" id="{04f424bf-6465-478b-9529-0038615b51d9}"> + <position> + <x>382</x> + <y>378</y> + </position> + <table> + <name>architectures</name> + <color>#ffffff</color> + <column-list> <column> - <name>locked_tasks_count</name> - <data-type>MEDIUMINT</data-type> + <name>id</name> + <data-type>SMALLINT</data-type> <required>True</required> - <primary-key>False</primary-key> + <primary-key>True</primary-key> </column> <column> - <name>blocked_tasks_count</name> - <data-type>MEDIUMINT</data-type> + <name>name</name> + <data-type>VARCHAR(16)</data-type> <required>True</required> <primary-key>False</primary-key> </column> + </column-list> + </table> + </item> + <item type="database-table" id="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"> + <position> + <x>653</x> + <y>21</y> + </position> + <table> + <name>install_targets</name> + <color>#ffffff</color> + <column-list> <column> - <name>next_tasks_count</name> - <data-type>MEDIUMINT</data-type> + <name>id</name> + <data-type>BIGINT</data-type> <required>True</required> - <primary-key>False</primary-key> + <primary-key>True</primary-key> </column> <column> - <name>architecture</name> - <data-type>SMALLINT</data-type> + <name>name</name> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{dc01c567-d657-4db7-8a55-d2763ed00cee}"> + <item type="database-table" id="{be821d83-a9b4-4c0c-8e1b-433730200714}"> <position> - <x>971</x> - <y>-69</y> + <x>580</x> + <y>-71</y> </position> <table> - <name>todos</name> + <name>dependency_types</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>BIGINT</data-type> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>file</name> - <data-type>VARCHAR(64)</data-type> + <name>name</name> + <data-type>VARCHAR(32)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>line</name> - <data-type>MEDIUMINT</data-type> + <name>relevant_for_building</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>description</name> - <data-type>TEXT</data-type> + <name>relevant_for_binary_packages</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> - <column> - <name>importance</name> - <data-type>SMALLINT</data-type> - <required>False</required> - <primary-key>False</primary-key> - </column> </column-list> </table> </item> - <item type="database-table" id="{36980651-4f03-4748-aee8-1f9211aaafde}"> + <item type="database-table" id="{04b6fdc5-85ae-4416-8db5-034ad05be93a}"> <position> - <x>821</x> - <y>-49</y> + <x>-42</x> + <y>529</y> </position> <table> - <name>todo_links</name> + <name>build_dependency_loops</name> <color>#ffffff</color> <column-list> <column> - <name>dependent</name> + <name>id</name> <data-type>BIGINT</data-type> <required>True</required> + <primary-key>True</primary-key> + </column> + <column> + <name>loop</name> + <data-type>MEDIUMINT</data-type> + <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>depending_on</name> + <name>build_assignment</name> <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> @@ -1286,18 +1148,18 @@ </column-list> </table> </item> - <item type="database-table" id="{75e4ebd8-5915-4aff-8316-0c542d3953da}"> + <item type="database-table" id="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"> <position> - <x>218</x> - <y>17</y> + <x>829</x> + <y>168</y> </position> <table> - <name>persons</name> + <name>repository_stabilities</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>MEDIUMINT</data-type> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> @@ -1307,52 +1169,58 @@ <required>True</required> <primary-key>False</primary-key> </column> + <column> + <name>bugtracker_category</name> + <data-type>VARCHAR(32)</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> </column-list> </table> </item> - <item type="database-table" id="{f31249ea-ab19-45a4-9427-1854379ad8e7}"> + <item type="database-table" id="{d823ab09-1c04-44ee-ad4b-6802208967ff}"> <position> - <x>226</x> - <y>-78</y> + <x>793</x> + <y>497</y> </position> <table> - <name>gpg_keys</name> + <name>repository_moves</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>BIGINT</data-type> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>fingerprint</name> - <data-type>VARCHAR(40)</data-type> + <name>from_repository</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>owner</name> + <name>to_repository</name> <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>public_key</name> - <data-type>TEXT</data-type> + <name>upstream_package_repository</name> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{b5671c08-e24a-4293-b983-3c86b1a6d622}"> + <item type="database-table" id="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"> <position> - <x>62</x> - <y>8</y> + <x>-55</x> + <y>-72</y> </position> <table> - <name>allowed_email_actions</name> + <name>email_log</name> <color>#ffffff</color> <column-list> <column> @@ -1362,51 +1230,105 @@ <primary-key>True</primary-key> </column> <column> - <name>gpg_key</name> - <data-type>BIGINT</data-type> + <name>date</name> + <data-type>TIMESTAMP</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>success</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> <name>action</name> <data-type>MEDIUMINT</data-type> - <required>True</required> + <required>False</required> + <primary-key>False</primary-key> + </column> + <column> + <name>count</name> + <data-type>MEDIUMINT</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> + <column> + <name>gpg_key</name> + <data-type>BIGINT</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> + <column> + <name>comment</name> + <data-type>TEXT</data-type> + <required>False</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{6180fcbf-5069-4d86-8919-fd39394f1813}"> + <item type="database-table" id="{5f12db03-a8bb-4467-bab6-a57e545b9081}"> <position> - <x>-54</x> - <y>70</y> + <x>-52</x> + <y>134</y> </position> <table> - <name>email_actions</name> + <name>ssh_log</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>MEDIUMINT</data-type> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>name</name> + <name>date</name> + <data-type>TIMESTAMP</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>build_slave</name> + <data-type>MEDIUMINT</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> + <column> + <name>action</name> <data-type>VARCHAR(32)</data-type> <required>True</required> <primary-key>False</primary-key> </column> + <column> + <name>parameters</name> + <data-type>TEXT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>duration</name> + <data-type>MEDIUMINT</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> + <column> + <name>exit_code</name> + <data-type>MEDIUMINT</data-type> + <required>False</required> + <primary-key>False</primary-key> + </column> </column-list> </table> </item> - <item type="database-table" id="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"> + <item type="database-table" id="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"> <position> - <x>209</x> - <y>83</y> + <x>525</x> + <y>215</y> </position> <table> - <name>ssh_keys</name> + <name>binary_packages_in_repositories</name> <color>#ffffff</color> <column-list> <column> @@ -1416,69 +1338,87 @@ <primary-key>True</primary-key> </column> <column> - <name>owner</name> + <name>package</name> + <data-type>BIGINT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>repository</name> <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>fingerprint</name> - <data-type>TEXT</data-type> + <name>is_to_be_deleted</name> + <data-type>BIT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>last_moved</name> + <data-type>TIMESTAMP</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"> + <item type="database-table" id="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"> <position> - <x>656</x> - <y>380</y> + <x>345</x> + <y>-71</y> </position> <table> - <name>architecture_compatibilities</name> + <name>dependencies</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>MEDIUMINT</data-type> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>built_for</name> - <data-type>SMALLINT</data-type> + <name>dependent</name> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>runs_on</name> + <name>depending_on</name> + <data-type>BIGINT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>dependency_type</name> <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>fully_compatible</name> - <data-type>BIT</data-type> + <name>version</name> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>build_slave_compatible</name> - <data-type>BIT(n)</data-type> + <name>version_relation</name> + <data-type>VARCHAR(2)</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{bb59ebca-0255-40dd-91b4-68bd2e110447}"> + <item type="database-table" id="{a67b38a9-c701-412c-8292-5ef58536da85}"> <position> - <x>901</x> - <y>641</y> + <x>524</x> + <y>62</y> </position> <table> - <name>mirror_statuses</name> + <name>versions</name> <color>#ffffff</color> <column-list> <column> @@ -1488,215 +1428,269 @@ <primary-key>True</primary-key> </column> <column> - <name>protocol</name> - <data-type>VARCHAR(8)</data-type> + <name>order</name> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>url</name> - <data-type>VARCHAR(128)</data-type> + <name>epoch</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>country</name> + <name>version</name> + <data-type>VARCHAR(32)</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + </column-list> + </table> + </item> + <item type="database-table" id="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}"> + <position> + <x>-31</x> + <y>605</y> + </position> + <table> + <name>toolchain_order</name> + <color>#ffffff</color> + <column-list> + <column> + <name>number</name> + <data-type>SMALLINT</data-type> + <required>True</required> + <primary-key>True</primary-key> + </column> + <column> + <name>pkgbase</name> <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>country_code</name> - <data-type>VARCHAR(4)</data-type> + <name>requires_all_dependencies_built</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> + </column-list> + </table> + </item> + <item type="database-table" id="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}"> + <position> + <x>632</x> + <y>498</y> + </position> + <table> + <name>upstream_packages</name> + <color>#ffffff</color> + <column-list> <column> - <name>last_sync</name> + <name>id</name> <data-type>BIGINT</data-type> <required>True</required> - <primary-key>False</primary-key> + <primary-key>True</primary-key> </column> <column> - <name>start</name> - <data-type>FLOAT</data-type> + <name>pkgname</name> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>stop</name> - <data-type>FLOAT</data-type> + <name>epoch</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>isos</name> - <data-type>BIT</data-type> + <name>pkgver</name> + <data-type>VARCHAR(64)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>ipv4</name> - <data-type>BIT</data-type> + <name>pkgrel</name> + <data-type>MEDIUMINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>ipv6</name> - <data-type>BIT</data-type> + <name>architecture</name> + <data-type>VARCHAR(6)</data-type> <required>True</required> <primary-key>False</primary-key> </column> <column> - <name>active</name> - <data-type>BIT</data-type> + <name>repository</name> + <data-type>SMALLINT</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-table" id="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}"> + <item type="database-table" id="{91a05cd7-dc02-474b-bd10-aab0f53ce9d7}"> <position> - <x>217</x> - <y>328</y> + <x>977</x> + <y>378</y> </position> <table> - <name>compressions</name> + <name>command_log</name> <color>#ffffff</color> <column-list> <column> <name>id</name> - <data-type>SMALLINT</data-type> + <data-type>BIGINT</data-type> <required>True</required> <primary-key>True</primary-key> </column> <column> - <name>suffix</name> - <data-type>VARCHAR(8)</data-type> + <name>date</name> + <data-type>TIMESTAMP</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>command</name> + <data-type>VARCHAR(64)</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>parameters</name> + <data-type>TEXT</data-type> + <required>True</required> + <primary-key>False</primary-key> + </column> + <column> + <name>shell</name> + <data-type>BIT</data-type> <required>True</required> <primary-key>False</primary-key> </column> </column-list> </table> </item> - <item type="database-relationship" id="{44fe350c-d54c-45f8-a967-afd81ccc4721}"> + <item type="database-relationship" id="{f2d38c97-7a03-4454-8b95-7b35ba1c0304}"> <line> <connector-list> <connector> <position> - <x>375.286</x> - <y>118</y> + <x>656</x> + <y>441.333</y> </position> - <angle>90</angle> - <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> + <angle>180</angle> + <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/> </connector> <connector> <position> - <x>296.813</x> - <y>0.8125</y> + <x>478</x> + <y>415.5</y> </position> - <angle>270</angle> - <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> + <angle>0</angle> + <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> </connector> </connector-list> </line> <relationship> - <cardinality>OneToMany</cardinality> + <cardinality>OneToOne</cardinality> <modality> <child>Mandatory</child> - <parent>Optional</parent> + <parent>Mandatory</parent> </modality> <columns> - <child>13</child> + <child>1</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{1f929538-fe3a-4c8f-8c6c-26ea441bd6e0}"> + <item type="database-relationship" id="{30a694b2-681f-44ae-90bb-911220d65737}"> <line> <connector-list> <connector> <position> - <x>320</x> - <y>227.406</y> + <x>656</x> + <y>410.667</y> </position> <angle>180</angle> - <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> + <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/> </connector> <connector> <position> - <x>265.75</x> - <y>328</y> + <x>478</x> + <y>403</y> </position> - <angle>90</angle> - <hub owner="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}"/> + <angle>0</angle> + <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Optional</child> + <child>Mandatory</child> <parent>Mandatory</parent> </modality> <columns> - <child>12</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{279b4b3b-c166-4343-bce6-ff3dfb6669a0}"> + <item type="database-relationship" id="{48ec4e54-ceb5-48f1-b773-9ab92f6c1c5a}"> <line> <connector-list> <connector> <position> - <x>483.75</x> - <y>455</y> + <x>342</x> + <y>768</y> </position> - <angle>90</angle> - <hub owner="{9085c36f-5884-41c8-9ca8-9d53973e657d}"/> + <angle>0</angle> + <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/> </connector> <connector> <position> - <x>444.677</x> - <y>428.813</y> + <x>729</x> + <y>709</y> </position> - <angle>270</angle> - <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> + <angle>180</angle> + <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/> </connector> </connector-list> </line> <relationship> - <cardinality>OneToMany</cardinality> + <cardinality>OneToOne</cardinality> <modality> - <child>Optional</child> - <parent>Optional</parent> + <child>Mandatory</child> + <parent>Mandatory</parent> </modality> <columns> - <child>14</child> + <child>4</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{747ab82c-bbbf-498d-a6bd-13633c73fd6f}"> + <item type="database-relationship" id="{25ec7ee3-9041-4ef4-a5b8-c41a06385813}"> <line> <connector-list> <connector> <position> - <x>699.656</x> - <y>618.813</y> + <x>803</x> + <y>322.333</y> </position> - <angle>270</angle> - <hub owner="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}"/> + <angle>180</angle> + <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> </connector> <connector> <position> - <x>778.641</x> - <y>684</y> + <x>478</x> + <y>390.5</y> </position> - <angle>90</angle> - <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/> + <angle>0</angle> + <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> </connector> </connector-list> </line> @@ -1707,62 +1701,62 @@ <parent>Mandatory</parent> </modality> <columns> - <child>6</child> + <child>4</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{64756b6f-e7d3-4995-8b5d-21d07292741f}"> + <item type="database-relationship" id="{30efa4b2-f4e7-4c8d-943e-44c699e54853}"> <line> <connector-list> <connector> <position> - <x>93.3906</x> - <y>669.813</y> + <x>912.5</x> + <y>575</y> </position> <angle>270</angle> - <hub owner="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}"/> + <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/> </connector> <connector> <position> - <x>181.755</x> - <y>694</y> + <x>828.333</x> + <y>684</y> </position> <angle>90</angle> - <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/> + <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Optional</child> - <parent>Optional</parent> + <child>Mandatory</child> + <parent>Mandatory</parent> </modality> <columns> - <child>1</child> - <parent>1</parent> + <child>3</child> + <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{8e252eee-d544-482b-9a11-ba30ff6b4ebd}"> + <item type="database-relationship" id="{747ab82c-bbbf-498d-a6bd-13633c73fd6f}"> <line> <connector-list> <connector> <position> - <x>446.115</x> - <y>35.8125</y> + <x>700.5</x> + <y>618</y> </position> <angle>270</angle> - <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> + <hub owner="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}"/> </connector> <connector> <position> - <x>524</x> - <y>101.406</y> + <x>778.667</x> + <y>684</y> </position> - <angle>180</angle> - <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/> + <angle>90</angle> + <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/> </connector> </connector-list> </line> @@ -1773,29 +1767,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>4</child> + <child>6</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{3016bcca-8c69-49ae-b7af-6f236ee0a018}"> + <item type="database-relationship" id="{3539786a-db3b-4c5c-ba35-e89fb027cda8}"> <line> <connector-list> <connector> <position> - <x>619</x> - <y>142.938</y> + <x>263.5</x> + <y>83</y> </position> - <angle>180</angle> - <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/> + <angle>90</angle> + <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/> </connector> <connector> <position> - <x>607.188</x> - <y>101.406</y> + <x>254</x> + <y>67</y> </position> - <angle>0</angle> - <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/> + <angle>270</angle> + <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/> </connector> </connector-list> </line> @@ -1806,29 +1800,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>3</child> + <child>1</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{d3ded37c-70d5-4388-8e27-2329f59a1d9c}"> + <item type="database-relationship" id="{326ba5fe-513e-48e9-b924-51305ffa2aeb}"> <line> <connector-list> <connector> <position> - <x>496.672</x> - <y>-35.3958</y> + <x>152</x> + <y>160</y> </position> - <angle>0</angle> - <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> + <angle>90</angle> + <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> </connector> <connector> <position> - <x>580</x> - <y>-31.5938</y> + <x>263.5</x> + <y>147</y> </position> - <angle>180</angle> - <hub owner="{be821d83-a9b4-4c0c-8e1b-433730200714}"/> + <angle>270</angle> + <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/> </connector> </connector-list> </line> @@ -1839,70 +1833,70 @@ <parent>Mandatory</parent> </modality> <columns> - <child>3</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{ab992baa-6a2c-441b-a290-da42a791eb95}"> + <item type="database-relationship" id="{4174d8cf-11ae-4a89-bc89-ae6044cee76d}"> <line> <connector-list> <connector> <position> - <x>496.672</x> - <y>0.208333</y> + <x>-9</x> + <y>48</y> </position> - <angle>0</angle> - <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> + <angle>270</angle> + <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/> </connector> <connector> <position> - <x>653</x> - <y>46.4063</y> + <x>-5.5</x> + <y>70</y> </position> - <angle>180</angle> - <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/> + <angle>90</angle> + <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Mandatory</child> + <child>Optional</child> <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>3</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{0213a360-5a3b-484f-82c7-320003506c8a}"> + <item type="database-relationship" id="{af592aac-17cd-415f-99e8-9cf164311215}"> <line> <connector-list> <connector> <position> - <x>734.359</x> - <y>261.406</y> + <x>62</x> + <y>40</y> </position> - <angle>0</angle> - <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/> + <angle>180</angle> + <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/> </connector> <connector> <position> - <x>803</x> - <y>291.938</y> + <x>43</x> + <y>95</y> </position> - <angle>180</angle> - <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> + <angle>0</angle> + <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/> </connector> </connector-list> </line> <relationship> - <cardinality>OneToMany</cardinality> + <cardinality>OneToOne</cardinality> <modality> - <child>Optional</child> - <parent>Optional</parent> + <child>Mandatory</child> + <parent>Mandatory</parent> </modality> <columns> <child>2</child> @@ -1910,24 +1904,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{f26515ec-f37f-4eb3-a07f-6d5077208806}"> + <item type="database-relationship" id="{80755775-c938-4545-b4eb-1f08cfb1f0cc}"> <line> <connector-list> <connector> <position> - <x>395.557</x> - <y>35.8125</y> + <x>136</x> + <y>8</y> </position> - <angle>270</angle> - <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> + <angle>90</angle> + <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/> </connector> <connector> <position> - <x>430.573</x> - <y>118</y> + <x>226</x> + <y>-26</y> </position> - <angle>90</angle> - <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> + <angle>180</angle> + <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> </connector> </connector-list> </line> @@ -1943,64 +1937,64 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{c672e45e-2bd4-4ff1-9b42-fdd2443cae6a}"> + <item type="database-relationship" id="{803ce991-1984-4cab-9bb8-48acabb347af}"> <line> <connector-list> <connector> <position> - <x>525</x> - <y>261.406</y> + <x>37</x> + <y>-12</y> </position> - <angle>180</angle> - <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/> + <angle>0</angle> + <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/> </connector> <connector> <position> - <x>485.859</x> - <y>263.875</y> + <x>226</x> + <y>-52</y> </position> - <angle>0</angle> - <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> + <angle>180</angle> + <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Mandatory</child> + <child>Optional</child> <parent>Mandatory</parent> </modality> <columns> - <child>1</child> + <child>5</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{9a650bd7-521d-499f-ac79-a0fd9226a656}"> + <item type="database-relationship" id="{abba2005-f23b-445f-aea6-ff9365bc1569}"> <line> <connector-list> <connector> <position> - <x>59.5313</x> - <y>194.406</y> + <x>262.333</x> + <y>0</y> </position> - <angle>0</angle> - <hub owner="{5f12db03-a8bb-4467-bab6-a57e545b9081}"/> + <angle>270</angle> + <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> </connector> <connector> <position> - <x>80</x> - <y>241.406</y> + <x>254</x> + <y>17</y> </position> - <angle>180</angle> - <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> + <angle>90</angle> + <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Optional</child> + <child>Mandatory</child> <parent>Mandatory</parent> </modality> <columns> @@ -2009,24 +2003,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{30efa4b2-f4e7-4c8d-943e-44c699e54853}"> + <item type="database-relationship" id="{172204a1-76e9-45fc-826f-b3d174112734}"> <line> <connector-list> <connector> <position> - <x>911.133</x> - <y>575.813</y> + <x>951</x> + <y>-32.3333</y> </position> - <angle>270</angle> - <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/> + <angle>0</angle> + <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/> </connector> <connector> <position> - <x>828.281</x> - <y>684</y> + <x>971</x> + <y>-38.3333</y> </position> - <angle>90</angle> - <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/> + <angle>180</angle> + <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/> </connector> </connector-list> </line> @@ -2037,29 +2031,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>3</child> + <child>0</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{6094d4c4-439f-4e6c-94e1-736ae145362a}"> + <item type="database-relationship" id="{bb03129e-aba8-4449-88c1-6c352745aeda}"> <line> <connector-list> <connector> <position> - <x>871.755</x> - <y>497</y> + <x>951</x> + <y>-15.6667</y> </position> - <angle>90</angle> - <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/> + <angle>0</angle> + <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/> </connector> <connector> <position> - <x>859.469</x> - <y>353.813</y> + <x>971</x> + <y>-7.66667</y> </position> - <angle>270</angle> - <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> + <angle>180</angle> + <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/> </connector> </connector-list> </line> @@ -2075,24 +2069,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{4b0f5386-c5f6-4fa4-9c78-f0d85410c366}"> + <item type="database-relationship" id="{fa899065-104a-466d-bc8c-16589a774a45}"> <line> <connector-list> <connector> <position> - <x>950.51</x> - <y>497</y> + <x>940</x> + <y>121</y> </position> - <angle>90</angle> - <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/> + <angle>270</angle> + <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/> </connector> <connector> <position> - <x>915.938</x> - <y>353.813</y> + <x>935.667</x> + <y>168</y> </position> - <angle>270</angle> - <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> + <angle>90</angle> + <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/> </connector> </connector-list> </line> @@ -2108,24 +2102,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{c54c97e3-dd0a-4b21-9eeb-708d5b492e2a}"> + <item type="database-relationship" id="{8f5f94cd-2919-43f6-ae67-6b783850a2e7}"> <line> <connector-list> <connector> <position> - <x>430.573</x> - <y>336.813</y> + <x>878</x> + <y>121</y> </position> <angle>270</angle> - <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> + <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/> </connector> <connector> <position> - <x>429.008</x> - <y>378</y> + <x>882.333</x> + <y>168</y> </position> <angle>90</angle> - <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> + <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/> </connector> </connector-list> </line> @@ -2136,29 +2130,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>9</child> + <child>1</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{67f0b7bd-a201-45d1-b18c-db46a8de0480}"> + <item type="database-relationship" id="{65ace480-001e-4e4e-912d-2a975ff995c8}"> <line> <connector-list> <connector> <position> - <x>887.703</x> - <y>261</y> + <x>7.66667</x> + <y>372</y> </position> <angle>90</angle> - <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> + <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/> </connector> <connector> <position> - <x>907.734</x> - <y>232.813</y> + <x>5.5</x> + <y>345</y> </position> <angle>270</angle> - <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/> + <hub owner="{7b159780-7f39-45a7-9557-046874a57e43}"/> </connector> </connector-list> </line> @@ -2169,29 +2163,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>4</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{9a1b5925-a86a-470b-9c2b-3132fdcfc87e}"> + <item type="database-relationship" id="{35556854-c6c3-45e8-9e10-bd5150680fd2}"> <line> <connector-list> <connector> <position> - <x>712.203</x> - <y>112</y> + <x>111</x> + <y>432</y> </position> - <angle>90</angle> - <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/> + <angle>0</angle> + <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/> </connector> <connector> <position> - <x>702.906</x> - <y>71.8125</y> + <x>153</x> + <y>496.333</y> </position> - <angle>270</angle> - <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/> + <angle>180</angle> + <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> </connector> </connector-list> </line> @@ -2207,24 +2201,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{89cacf0f-5195-48db-aace-02a13aa29eee}"> + <item type="database-relationship" id="{307a930b-cbe8-4000-b89d-b6cc99479b19}"> <line> <connector-list> <connector> <position> - <x>619</x> - <y>173.875</y> + <x>59.3333</x> + <y>372</y> </position> - <angle>180</angle> - <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/> + <angle>90</angle> + <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/> </connector> <connector> <position> - <x>485.859</x> - <y>190.938</y> + <x>128</x> + <y>322</y> </position> - <angle>0</angle> - <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> + <angle>270</angle> + <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> </connector> </connector-list> </line> @@ -2240,24 +2234,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{48ec4e54-ceb5-48f1-b773-9ab92f6c1c5a}"> + <item type="database-relationship" id="{40654aec-f5e1-4d82-a528-102a76a971d3}"> <line> <connector-list> <connector> <position> - <x>339.266</x> - <y>768.406</y> + <x>122</x> + <y>561</y> </position> <angle>0</angle> - <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/> + <hub owner="{04b6fdc5-85ae-4416-8db5-034ad05be93a}"/> </connector> <connector> <position> - <x>729</x> - <y>705.604</y> + <x>153</x> + <y>545.667</y> </position> <angle>180</angle> - <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/> + <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> </connector> </connector-list> </line> @@ -2268,62 +2262,62 @@ <parent>Mandatory</parent> </modality> <columns> - <child>4</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{fb5f9b76-6f5d-4c06-b7dd-f89583096ba7}"> + <item type="database-relationship" id="{41ee8002-8436-4c74-9f79-75b7a8b9d0bf}"> <line> <connector-list> <connector> <position> - <x>729</x> - <y>727.208</y> + <x>176</x> + <y>322</y> </position> - <angle>180</angle> - <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/> + <angle>270</angle> + <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> </connector> <connector> <position> - <x>705.344</x> - <y>782.406</y> + <x>201.667</x> + <y>447</y> </position> - <angle>0</angle> - <hub owner="{b3c86235-971a-4d3e-873c-c4179aa96cbc}"/> + <angle>90</angle> + <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Mandatory</child> + <child>Optional</child> <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>3</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{1702ddc7-99c5-4af4-8731-eb8f4b6306d3}"> + <item type="database-relationship" id="{883853fb-bda9-450c-bde3-77422973b925}"> <line> <connector-list> <connector> <position> - <x>224.648</x> - <y>595.813</y> + <x>376.333</x> + <y>336</y> </position> <angle>270</angle> - <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> + <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> </connector> <connector> <position> - <x>260.51</x> - <y>694</y> + <x>250.333</x> + <y>447</y> </position> <angle>90</angle> - <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/> + <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> </connector> </connector-list> </line> @@ -2344,16 +2338,16 @@ <connector-list> <connector> <position> - <x>296.297</x> - <y>521.406</y> + <x>299</x> + <y>521</y> </position> <angle>0</angle> <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> </connector> <connector> <position> - <x>413.339</x> - <y>428.813</y> + <x>414</x> + <y>428</y> </position> <angle>270</angle> <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> @@ -2372,24 +2366,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{883853fb-bda9-450c-bde3-77422973b925}"> + <item type="database-relationship" id="{1702ddc7-99c5-4af4-8731-eb8f4b6306d3}"> <line> <connector-list> <connector> <position> - <x>375.286</x> - <y>336.813</y> + <x>226</x> + <y>595</y> </position> <angle>270</angle> - <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> + <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> </connector> <connector> <position> - <x>248.531</x> - <y>447</y> + <x>262.333</x> + <y>694</y> </position> <angle>90</angle> - <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> + <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/> </connector> </connector-list> </line> @@ -2405,57 +2399,57 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{41ee8002-8436-4c74-9f79-75b7a8b9d0bf}"> + <item type="database-relationship" id="{89cacf0f-5195-48db-aace-02a13aa29eee}"> <line> <connector-list> <connector> <position> - <x>173.979</x> - <y>322.813</y> + <x>619</x> + <y>173.333</y> </position> - <angle>270</angle> - <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> + <angle>180</angle> + <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/> </connector> <connector> <position> - <x>200.766</x> - <y>447</y> + <x>489</x> + <y>190.667</y> </position> - <angle>90</angle> - <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> + <angle>0</angle> + <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Optional</child> + <child>Mandatory</child> <parent>Mandatory</parent> </modality> <columns> - <child>3</child> + <child>1</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{40654aec-f5e1-4d82-a528-102a76a971d3}"> + <item type="database-relationship" id="{9a1b5925-a86a-470b-9c2b-3132fdcfc87e}"> <line> <connector-list> <connector> <position> - <x>120.391</x> - <y>561.406</y> + <x>713.5</x> + <y>112</y> </position> - <angle>0</angle> - <hub owner="{04b6fdc5-85ae-4416-8db5-034ad05be93a}"/> + <angle>90</angle> + <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/> </connector> <connector> <position> - <x>153</x> - <y>546.208</y> + <x>703</x> + <y>71</y> </position> - <angle>180</angle> - <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> + <angle>270</angle> + <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/> </connector> </connector-list> </line> @@ -2471,24 +2465,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{307a930b-cbe8-4000-b89d-b6cc99479b19}"> + <item type="database-relationship" id="{67f0b7bd-a201-45d1-b18c-db46a8de0480}"> <line> <connector-list> <connector> <position> - <x>57.1458</x> - <y>372</y> + <x>888.5</x> + <y>261</y> </position> <angle>90</angle> - <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/> + <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> </connector> <connector> <position> - <x>126.99</x> - <y>322.813</y> + <x>909</x> + <y>232</y> </position> <angle>270</angle> - <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> + <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/> </connector> </connector-list> </line> @@ -2499,29 +2493,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>1</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{35556854-c6c3-45e8-9e10-bd5150680fd2}"> + <item type="database-relationship" id="{c54c97e3-dd0a-4b21-9eeb-708d5b492e2a}"> <line> <connector-list> <connector> <position> - <x>107.719</x> - <y>432.406</y> + <x>432.667</x> + <y>336</y> </position> - <angle>0</angle> - <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/> + <angle>270</angle> + <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> </connector> <connector> <position> - <x>153</x> - <y>496.604</y> + <x>430</x> + <y>378</y> </position> - <angle>180</angle> - <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/> + <angle>90</angle> + <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> </connector> </connector-list> </line> @@ -2532,29 +2526,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>9</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{65ace480-001e-4e4e-912d-2a975ff995c8}"> + <item type="database-relationship" id="{4b0f5386-c5f6-4fa4-9c78-f0d85410c366}"> <line> <connector-list> <connector> <position> - <x>6.57292</x> - <y>372</y> + <x>872.667</x> + <y>497</y> </position> <angle>90</angle> - <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/> + <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/> </connector> <connector> <position> - <x>4.71875</x> - <y>345.813</y> + <x>860</x> + <y>353</y> </position> <angle>270</angle> - <hub owner="{7b159780-7f39-45a7-9557-046874a57e43}"/> + <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> </connector> </connector-list> </line> @@ -2565,62 +2559,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>4</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{8f5f94cd-2919-43f6-ae67-6b783850a2e7}"> + <item type="database-relationship" id="{6094d4c4-439f-4e6c-94e1-736ae145362a}"> <line> <connector-list> <connector> <position> - <x>940.958</x> - <y>121.813</y> - </position> - <angle>270</angle> - <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/> - </connector> - <connector> - <position> - <x>933.979</x> - <y>168</y> + <x>952.333</x> + <y>497</y> </position> <angle>90</angle> - <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/> + <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/> </connector> - </connector-list> - </line> - <relationship> - <cardinality>OneToOne</cardinality> - <modality> - <child>Mandatory</child> - <parent>Mandatory</parent> - </modality> - <columns> - <child>1</child> - <parent>0</parent> - </columns> - </relationship> - </item> - <item type="database-relationship" id="{fa899065-104a-466d-bc8c-16589a774a45}"> - <line> - <connector-list> <connector> <position> - <x>878.479</x> - <y>121.813</y> + <x>917</x> + <y>353</y> </position> <angle>270</angle> - <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/> - </connector> - <connector> - <position> - <x>881.49</x> - <y>168</y> - </position> - <angle>90</angle> - <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/> + <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> </connector> </connector-list> </line> @@ -2631,62 +2592,62 @@ <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>1</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{bb03129e-aba8-4449-88c1-6c352745aeda}"> + <item type="database-relationship" id="{9a650bd7-521d-499f-ac79-a0fd9226a656}"> <line> <connector-list> <connector> <position> - <x>948.234</x> - <y>-32.0625</y> + <x>61</x> + <y>194</y> </position> <angle>0</angle> - <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/> + <hub owner="{5f12db03-a8bb-4467-bab6-a57e545b9081}"/> </connector> <connector> <position> - <x>971</x> - <y>-38.0625</y> + <x>80</x> + <y>241</y> </position> <angle>180</angle> - <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/> + <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Mandatory</child> + <child>Optional</child> <parent>Mandatory</parent> </modality> <columns> - <child>1</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{172204a1-76e9-45fc-826f-b3d174112734}"> + <item type="database-relationship" id="{c672e45e-2bd4-4ff1-9b42-fdd2443cae6a}"> <line> <connector-list> <connector> <position> - <x>948.234</x> - <y>-15.125</y> + <x>525</x> + <y>261</y> </position> - <angle>0</angle> - <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/> + <angle>180</angle> + <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/> </connector> <connector> <position> - <x>971</x> - <y>-7.125</y> + <x>489</x> + <y>263.333</y> </position> - <angle>180</angle> - <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/> + <angle>0</angle> + <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> </connector> </connector-list> </line> @@ -2697,29 +2658,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>0</child> + <child>1</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{abba2005-f23b-445f-aea6-ff9365bc1569}"> + <item type="database-relationship" id="{f26515ec-f37f-4eb3-a07f-6d5077208806}"> <line> <connector-list> <connector> <position> - <x>261.406</x> - <y>0.8125</y> + <x>396.667</x> + <y>35</y> </position> <angle>270</angle> - <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> + <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> </connector> <connector> <position> - <x>253.289</x> - <y>17</y> + <x>432.667</x> + <y>118</y> </position> <angle>90</angle> - <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/> + <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> </connector> </connector-list> </line> @@ -2730,62 +2691,62 @@ <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>1</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{803ce991-1984-4cab-9bb8-48acabb347af}"> + <item type="database-relationship" id="{0213a360-5a3b-484f-82c7-320003506c8a}"> <line> <connector-list> <connector> <position> - <x>35.2969</x> - <y>-11.5938</y> + <x>734</x> + <y>261</y> </position> <angle>0</angle> - <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/> + <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/> </connector> <connector> <position> - <x>226</x> - <y>-51.7292</y> + <x>803</x> + <y>291.667</y> </position> <angle>180</angle> - <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> + <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> </connector> </connector-list> </line> <relationship> - <cardinality>OneToOne</cardinality> + <cardinality>OneToMany</cardinality> <modality> <child>Optional</child> - <parent>Mandatory</parent> + <parent>Optional</parent> </modality> <columns> - <child>5</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{80755775-c938-4545-b4eb-1f08cfb1f0cc}"> + <item type="database-relationship" id="{ab992baa-6a2c-441b-a290-da42a791eb95}"> <line> <connector-list> <connector> <position> - <x>136.789</x> - <y>8</y> + <x>500</x> + <y>-0.333333</y> </position> - <angle>90</angle> - <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/> + <angle>0</angle> + <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> </connector> <connector> <position> - <x>226</x> - <y>-25.4583</y> + <x>653</x> + <y>46</y> </position> <angle>180</angle> - <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> + <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/> </connector> </connector-list> </line> @@ -2796,29 +2757,29 @@ <parent>Mandatory</parent> </modality> <columns> - <child>1</child> + <child>2</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{af592aac-17cd-415f-99e8-9cf164311215}"> + <item type="database-relationship" id="{d3ded37c-70d5-4388-8e27-2329f59a1d9c}"> <line> <connector-list> <connector> <position> - <x>62</x> - <y>40.4063</y> + <x>500</x> + <y>-35.6667</y> </position> - <angle>180</angle> - <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/> + <angle>0</angle> + <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> </connector> <connector> <position> - <x>43.4531</x> - <y>95.4063</y> + <x>580</x> + <y>-32</y> </position> - <angle>0</angle> - <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/> + <angle>180</angle> + <hub owner="{be821d83-a9b4-4c0c-8e1b-433730200714}"/> </connector> </connector-list> </line> @@ -2829,36 +2790,36 @@ <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>3</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{4174d8cf-11ae-4a89-bc89-ae6044cee76d}"> + <item type="database-relationship" id="{3016bcca-8c69-49ae-b7af-6f236ee0a018}"> <line> <connector-list> <connector> <position> - <x>-9.85156</x> - <y>48.8125</y> + <x>619</x> + <y>142.667</y> </position> - <angle>270</angle> - <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/> + <angle>180</angle> + <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/> </connector> <connector> <position> - <x>-5.27344</x> - <y>70</y> + <x>608</x> + <y>101</y> </position> - <angle>90</angle> - <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/> + <angle>0</angle> + <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Optional</child> + <child>Mandatory</child> <parent>Mandatory</parent> </modality> <columns> @@ -2867,24 +2828,24 @@ </columns> </relationship> </item> - <item type="database-relationship" id="{326ba5fe-513e-48e9-b924-51305ffa2aeb}"> + <item type="database-relationship" id="{8e252eee-d544-482b-9a11-ba30ff6b4ebd}"> <line> <connector-list> <connector> <position> - <x>220.969</x> - <y>241.406</y> + <x>448.333</x> + <y>35</y> </position> - <angle>0</angle> - <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/> + <angle>270</angle> + <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/> </connector> <connector> <position> - <x>262.109</x> - <y>147.813</y> + <x>524</x> + <y>101</y> </position> - <angle>270</angle> - <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/> + <angle>180</angle> + <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/> </connector> </connector-list> </line> @@ -2895,139 +2856,139 @@ <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>4</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{3539786a-db3b-4c5c-ba35-e89fb027cda8}"> + <item type="database-relationship" id="{64756b6f-e7d3-4995-8b5d-21d07292741f}"> <line> <connector-list> <connector> <position> - <x>262.109</x> - <y>83</y> + <x>95</x> + <y>669</y> </position> - <angle>90</angle> - <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/> + <angle>270</angle> + <hub owner="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}"/> </connector> <connector> <position> - <x>253.289</x> - <y>67.8125</y> + <x>182.667</x> + <y>694</y> </position> - <angle>270</angle> - <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/> + <angle>90</angle> + <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Mandatory</child> - <parent>Mandatory</parent> + <child>Optional</child> + <parent>Optional</parent> </modality> <columns> <child>1</child> - <parent>0</parent> + <parent>1</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{25ec7ee3-9041-4ef4-a5b8-c41a06385813}"> + <item type="database-relationship" id="{279b4b3b-c166-4343-bce6-ff3dfb6669a0}"> <line> <connector-list> <connector> <position> - <x>803</x> - <y>322.875</y> + <x>485.5</x> + <y>455</y> </position> - <angle>180</angle> - <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/> + <angle>90</angle> + <hub owner="{9085c36f-5884-41c8-9ca8-9d53973e657d}"/> </connector> <connector> <position> - <x>476.016</x> - <y>390.703</y> + <x>446</x> + <y>428</y> </position> - <angle>0</angle> + <angle>270</angle> <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> </connector> </connector-list> </line> <relationship> - <cardinality>OneToOne</cardinality> + <cardinality>OneToMany</cardinality> <modality> - <child>Mandatory</child> - <parent>Mandatory</parent> + <child>Optional</child> + <parent>Optional</parent> </modality> <columns> - <child>4</child> + <child>14</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{30a694b2-681f-44ae-90bb-911220d65737}"> + <item type="database-relationship" id="{1f929538-fe3a-4c8f-8c6c-26ea441bd6e0}"> <line> <connector-list> <connector> <position> - <x>656</x> - <y>441.875</y> + <x>320</x> + <y>227</y> </position> <angle>180</angle> - <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/> + <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> </connector> <connector> <position> - <x>476.016</x> - <y>416.109</y> + <x>266</x> + <y>328</y> </position> - <angle>0</angle> - <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> + <angle>90</angle> + <hub owner="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}"/> </connector> </connector-list> </line> <relationship> <cardinality>OneToOne</cardinality> <modality> - <child>Mandatory</child> + <child>Optional</child> <parent>Mandatory</parent> </modality> <columns> - <child>2</child> + <child>12</child> <parent>0</parent> </columns> </relationship> </item> - <item type="database-relationship" id="{f2d38c97-7a03-4454-8b95-7b35ba1c0304}"> + <item type="database-relationship" id="{44fe350c-d54c-45f8-a967-afd81ccc4721}"> <line> <connector-list> <connector> <position> - <x>656</x> - <y>410.938</y> + <x>376.333</x> + <y>118</y> </position> - <angle>180</angle> - <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/> + <angle>90</angle> + <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/> </connector> <connector> <position> - <x>476.016</x> - <y>403.406</y> + <x>298.667</x> + <y>0</y> </position> - <angle>0</angle> - <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/> + <angle>270</angle> + <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/> </connector> </connector-list> </line> <relationship> - <cardinality>OneToOne</cardinality> + <cardinality>OneToMany</cardinality> <modality> <child>Mandatory</child> - <parent>Mandatory</parent> + <parent>Optional</parent> </modality> <columns> - <child>1</child> + <child>13</child> <parent>0</parent> </columns> </relationship> |