From 94f19d463761fd33a875a009cd590e85e84a9420 Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Sun, 24 Sep 2017 13:11:00 -0500 Subject: [PATCH] Initial project files. Signed-off-by: Bill Schmidt --- Intrinsics_Reference/LICENSE | 176 + Intrinsics_Reference/README.md | 95 + Intrinsics_Reference/app_template.xml | 30 + Intrinsics_Reference/bk_main.xml | 119 + Intrinsics_Reference/ch_example.xml | 220 + Intrinsics_Reference/ch_isa_intrin_xref.xml | 26 + Intrinsics_Reference/ch_outline.xml | 45 + Intrinsics_Reference/ch_scal_reference.xml | 31 + Intrinsics_Reference/ch_template_overview.xml | 96 + Intrinsics_Reference/ch_vec_reference.xml | 6075 +++++++++++++++++ .../figures/example_graphic.bmp | Bin 0 -> 663606 bytes .../figures/example_graphic.odg | Bin 0 -> 17483 bytes .../project_process_non-std_track_graphic.odg | Bin 0 -> 20975 bytes .../project_process_non-std_track_graphic.svg | 151 + .../project_process_std_track_graphic.odg | Bin 0 -> 30855 bytes .../project_process_std_track_graphic.svg | 208 + .../figures/project_structure_graphic.odg | Bin 0 -> 40281 bytes .../figures/project_structure_graphic.svg | 451 ++ Intrinsics_Reference/pom.xml | 137 + .../sec_template_debugging.xml | 228 + .../sec_template_existing_document.xml | 95 + Intrinsics_Reference/sec_template_faq.xml | 34 + .../sec_template_getting_started.xml | 105 + .../sec_template_git_commands.xml | 182 + .../sec_template_new_document.xml | 274 + .../sec_template_policies.xml | 59 + Intrinsics_Reference/sec_template_process.xml | 169 + .../sec_template_references.xml | 38 + .../sec_template_structure.xml | 88 + pom.xml | 1 + 30 files changed, 9133 insertions(+) create mode 100644 Intrinsics_Reference/LICENSE create mode 100644 Intrinsics_Reference/README.md create mode 100644 Intrinsics_Reference/app_template.xml create mode 100644 Intrinsics_Reference/bk_main.xml create mode 100644 Intrinsics_Reference/ch_example.xml create mode 100644 Intrinsics_Reference/ch_isa_intrin_xref.xml create mode 100644 Intrinsics_Reference/ch_outline.xml create mode 100644 Intrinsics_Reference/ch_scal_reference.xml create mode 100644 Intrinsics_Reference/ch_template_overview.xml create mode 100644 Intrinsics_Reference/ch_vec_reference.xml create mode 100644 Intrinsics_Reference/figures/example_graphic.bmp create mode 100644 Intrinsics_Reference/figures/example_graphic.odg create mode 100644 Intrinsics_Reference/figures/project_process_non-std_track_graphic.odg create mode 100644 Intrinsics_Reference/figures/project_process_non-std_track_graphic.svg create mode 100644 Intrinsics_Reference/figures/project_process_std_track_graphic.odg create mode 100644 Intrinsics_Reference/figures/project_process_std_track_graphic.svg create mode 100644 Intrinsics_Reference/figures/project_structure_graphic.odg create mode 100644 Intrinsics_Reference/figures/project_structure_graphic.svg create mode 100644 Intrinsics_Reference/pom.xml create mode 100644 Intrinsics_Reference/sec_template_debugging.xml create mode 100644 Intrinsics_Reference/sec_template_existing_document.xml create mode 100644 Intrinsics_Reference/sec_template_faq.xml create mode 100644 Intrinsics_Reference/sec_template_getting_started.xml create mode 100644 Intrinsics_Reference/sec_template_git_commands.xml create mode 100644 Intrinsics_Reference/sec_template_new_document.xml create mode 100644 Intrinsics_Reference/sec_template_policies.xml create mode 100644 Intrinsics_Reference/sec_template_process.xml create mode 100644 Intrinsics_Reference/sec_template_references.xml create mode 100644 Intrinsics_Reference/sec_template_structure.xml diff --git a/Intrinsics_Reference/LICENSE b/Intrinsics_Reference/LICENSE new file mode 100644 index 0000000..68c771a --- /dev/null +++ b/Intrinsics_Reference/LICENSE @@ -0,0 +1,176 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + diff --git a/Intrinsics_Reference/README.md b/Intrinsics_Reference/README.md new file mode 100644 index 0000000..cbc0127 --- /dev/null +++ b/Intrinsics_Reference/README.md @@ -0,0 +1,95 @@ +# OpenPOWER Foundation Documentation Development Guide +This repository holds the source for the documentation development guide +(formerly *Master Template Document*) for +OpenPOWER Foundation. The PDF and HTML generated from the doc/template/ +directory build a document that both describes how to build a new +document and contains examples and directions on how to do it. + +To build this project, one must ensure that the Docs-Master project has +also been cloned at the same directory level as the Docs-Template project. +This can be accomplished with the following steps: + +1. Clone the master documentation project (Docs-Master) using the following command: + + ``` + $ git clone https://github.com/OpenPOWERFoundation/Docs-Master.git + ``` + +2. Clone this project (Docs-Template) using the following command: + + ``` + $ git clone https://github.com/OpenPOWERFoundation/Docs-Template.git + ``` + +3. Build the project with these commands: + ``` + $ cd Docs-Template + $ mvn clean generate-sources + ``` + +The online version of the document can be found in the OpenPOWER Foundation +Document library at [OpenPOWER Foundation Documentation Development Guide](http://openpowerfoundation.org/?resource_lib=openpower-foundation-documentation-development-guide). + +The project which controls the look and feel of the document is the +[Docs-Maven-Plugin project](https://github.com/OpenPOWERFoundation/Docs-Maven-Plugin), an +OpenPOWER Foundation private project on GitHub. To obtain access to the Maven Plugin project, +contact Jeff Scheel \([scheel@us.ibm.com](mailto://scheel@us.ibm.com)\) or +Jeff Brown \([jeffdb@us.ibm.com](mailto://jeffdb@us.ibm.com)\). + +## License +This project is licensed under the Apache V2 license. More information +can be found in the LICENSE file or online at + + http://www.apache.org/licenses/LICENSE-2.0 + +## Contributions +To contribute to the OpenPOWER Foundation template document project, contact Jeff Scheel \([scheel@us.ibm.com](mailto://scheel@us.ibm.com)\) or +Jeff Brown \([jeffdb@us.ibm.com](mailto://jeffdb@us.ibm.com)\). + +Contributions to this project should conform to the `Developer Certificate +of Origin` as defined at http://elinux.org/Developer_Certificate_Of_Origin. +Commits to this project need to contain the following line to indicate +the submitter accepts the DCO: +``` +Signed-off-by: Your Name +``` +By contributing in this way, you agree to the terms as follows: +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + diff --git a/Intrinsics_Reference/app_template.xml b/Intrinsics_Reference/app_template.xml new file mode 100644 index 0000000..f4b7ae4 --- /dev/null +++ b/Intrinsics_Reference/app_template.xml @@ -0,0 +1,30 @@ + + + + + Appendix template + This is the first paragraph of a new appendix... +
+ Section title + Section text... +
+
diff --git a/Intrinsics_Reference/bk_main.xml b/Intrinsics_Reference/bk_main.xml new file mode 100644 index 0000000..618e227 --- /dev/null +++ b/Intrinsics_Reference/bk_main.xml @@ -0,0 +1,119 @@ + + + + + +]> + + + + + Intrinsic Function Programming Reference + + + + + + + + System Software Work Group + + + syssw-chair@openpowerfoundation.org + + OpenPower Foundation + + + + + 2017 + OpenPOWER Foundation + + + Revision 0.8.0 + OpenPOWER + + + + + + + + Copyright details are filled in by the template. + + + + + + The purpose of this document is to provide a guide + for vector programming on OpenPOWER systems, with an emphasis on examples + of best practices. It further provides a reference for intrinsics + provided by compliant compilers on OpenPOWER systems. + This document is a Non-standard Track, Work Group Specification work product owned by the + System Software Workgroup and handled in compliance with the requirements outlined in the + OpenPOWER Foundation Work Group (WG) Process document. It was + created using the Master Template Guide version &template_version;. + + + + + + 2017-09-25 + + + + Version 0.8: Initial publication to private GitHub project. + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Intrinsics_Reference/ch_example.xml b/Intrinsics_Reference/ch_example.xml new file mode 100644 index 0000000..98fbf6d --- /dev/null +++ b/Intrinsics_Reference/ch_example.xml @@ -0,0 +1,220 @@ + + + + + Documentation examples + + +
+ Section Title goes here + This Section covers something of interest to a limited number of people and shows a 1st level section + +
+ Example Itemized List + + Here is an example of an itemized list + + + + Item you don't care about + + + + Item you might care about + + + + Item you do care about + + +
+
+ Example ordered list + + All good documents need ordered lists. + + + First item + + + Second item + + + first indented item + + + second indented item + + + + + Third item + + +
+ +
+ Example figure with embedded graphic + + Here is how you embed a graphic. +
+ Example figure + + + + + +
+ Raw images such as the bitmap (bmp) file above may become blurry as they are scaled. + Scalable graphic formats like SVG (Scalable Vector Graphics) embed and scale the best. +
+ +
+ Example table + Of course all good documents need tables. Here's how you build a basic table. + + + Example Table Title + + + + + + + + + + 1st Column Heading + + + + + 2nd Column Heading + + + + + 3rd Column Heading + + + + + 4th Column Heading + + + + + + + + Yes + + + Red + Green + Blue + Custom (Amber) + + + MAIN_Junk + + + More_Junk + + + + + merged cells horizontal + + + cell_stuff + + + + + Merge cells vertical + + + filler + + + merge cells both ways + + + + + filler 2 + + + + + How about we put a list in the table cell + + + item 1 + + + item 2 + + + item 2 + + + + + Another Cell + + + Yet Another Cell + + + Finally the last cell + + + + +
+
+
+ Example of crossreferences and footnotes + To reference another section or table is pretty easy. For example: see for how tables look. + Lists are shown in and if you need to make a footnote + The footnote text goes here and can reference something like for additional explanation. + For clarification that is easy. Of course you might want an additional reference to the footnote which can also be done easily. + Lastly you probably want to mark text by making it italic text example or Bold Text Example. +
+
+ Example of code citations and user input + When showing user input, you want a nice sceen-looking layout, a prompt, monospace text, and a way to differentiate input from output. Here's an example: + $ echo "Hello world" +Hello world +$ + + Docbook also allows for formatting and display of common languages, allowing for whitespace + and line returns just as they are written. Here's a sample snippet of C code with line numbering enabled: +main() +{ + printf("Hello world\n"); +}]]> + If code formatting is not quite what you need, simply displaying text "literally" may suffice as follows: This is my literal +text. It ignores whitespace. +
+ +
+
diff --git a/Intrinsics_Reference/ch_isa_intrin_xref.xml b/Intrinsics_Reference/ch_isa_intrin_xref.xml new file mode 100644 index 0000000..c2de808 --- /dev/null +++ b/Intrinsics_Reference/ch_isa_intrin_xref.xml @@ -0,0 +1,26 @@ + + + + + Instruction/Intrinsic Cross-Reference + + This chapter will contain a cross-reference from Power hardware + instructions to intrinsics that generate them. + + diff --git a/Intrinsics_Reference/ch_outline.xml b/Intrinsics_Reference/ch_outline.xml new file mode 100644 index 0000000..429fbf9 --- /dev/null +++ b/Intrinsics_Reference/ch_outline.xml @@ -0,0 +1,45 @@ + + + + + Notes on what to include + + + + Rewrite the material from ABI Chapter 6 + + + Recommendations for different ways to create efficient vector + code + + + Portable: C,C++; tricks to help compiler vectorize code + + + Use intrinsics + + + Assembly code - not recommended, but if you must + + + + + + + diff --git a/Intrinsics_Reference/ch_scal_reference.xml b/Intrinsics_Reference/ch_scal_reference.xml new file mode 100644 index 0000000..ad8d5a4 --- /dev/null +++ b/Intrinsics_Reference/ch_scal_reference.xml @@ -0,0 +1,31 @@ + + + + + Scalar Intrinsic Reference + + Some front matter should go here, describing conventions + used throughout the chapter. + +
+ Built-In ((Purpose)) Functions + Some front matter should go here, describing conventions + specific to this section. +
+
diff --git a/Intrinsics_Reference/ch_template_overview.xml b/Intrinsics_Reference/ch_template_overview.xml new file mode 100644 index 0000000..b2f487a --- /dev/null +++ b/Intrinsics_Reference/ch_template_overview.xml @@ -0,0 +1,96 @@ + + + + Document development overview + + The OpenPOWER Foundation Documentation Development Guide + provides a framework for OpenPOWER public and private + documentation. The goal of the template and this writeup is to promote community contributions + to OpenPOWER documenation and to enable new contributions within a common look and feel. + + The major sections of this document addresses the following topics: + + + : + This section details tools and commands used to contribute to OpenPOWER documentation. + All users who are new to OpenPOWER Foundation documentation should start here. + + + : + This section provides step-by-step instructions on how to create a new document + from scratch. Use this section to start a new document. + + + : + This section highlights common steps in editing an existing OpenPOWER + Foundation document. Use this section as a guideline for contributing to an existing document. + + + : + This section provides examples of the two most common types of build failures + and helps users find the relevant failure information. + + + : + This section explains key document types and the appropriate work flow for publishing OpenPOWER Foundation + documents. + + + : + This section provides detailed descriptions of the various project + components and their roles in the documentation creation process. + + + : This section contains + the generally accepted guidelines for creating OpenPOWER documentation. Use this section as a reference + for documentation style beyond template provided features. + + + : + This section answers common questions. Use this section when the other sections + do not answer your questions. + + + : + This section contains examples of commonly used git commands. Reference this section + to find information on a specific git operation. + + + : + This section provides pointers to on-line information about XML, Docbook, + Maven, and other relevant references. + + + + In addition to OpenPOWER Foundation specific topics, + provides examples of common documenation constructs in XML. + + + + + + + + + + + + + + diff --git a/Intrinsics_Reference/ch_vec_reference.xml b/Intrinsics_Reference/ch_vec_reference.xml new file mode 100644 index 0000000..7caee0a --- /dev/null +++ b/Intrinsics_Reference/ch_vec_reference.xml @@ -0,0 +1,6075 @@ + + + + + Vector Intrinsic Reference + + Some front matter should go here, describing conventions + used throughout the chapter. + +
+ Built-In Vector Functions + Some front matter should go here, describing conventions + specific to this section. + + + + vec_abs + Vector Absolute Value + + r = vec_abs (a) + + + Purpose: + Returns a vector r that contains the + absolute values of the contents of the given vector + a. + + Result value: + The value of each element of r is the + absolute value of the corresponding element of + a. For integer vectors, the arithmetic + is modular. + + Endian considerations: + None. + + + + Supported type signatures for vec_abs + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + + + + vector signed char + + + vector signed char + + + + vspltisw t,0 + vsububm t,t,a + vmaxsb r,t,a + + + + + + vector signed short + + + vector signed short + + + + vspltisw t,0 + vsubuhm t,t,a + vmaxsh r,t,a + + + + + + vector signed int + + + vector signed int + + + + vspltisw t,0 + vsubuwm t,t,a + vmaxsw r,t,a + + + + + + vector signed long long + + + vector signed long long + + + + vspltisw t,0 + vsubudm t,t,a + vmaxsd r,t,a + + + + + + vector float + + + vector float + + + + xvabssp r,a + + + + + + vector double + + + vector double + + + + xvabsdp r,a + + + + + +
+ +
+ + + + vec_absd + Vector Absolute Difference + + r = vec_absd (a, b) + + + Purpose: + Computes the absolute difference of two vectors. + + Result value: + The value of each element of r is the + absolute difference of the corresponding elements of a and b, using + modulo arithmetic. + + Endian considerations: + None. + + + + Supported type signatures for vec_absd + + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + vabsdub r,a,b + + + + ISA 3.0 or later + + + + + vector unsigned short + + + vector unsigned short + + + vector unsigned short + + + + vabsduh r,a,b + + + + ISA 3.0 or later + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + vabsduw r,a,b + + + + ISA 3.0 or later + + + + +
+ +
+ + + + vec_abss + Vector Absolute Value Saturated + + r = vec_abss (a) + + + Purpose: + Returns a vector r that contains the + saturated absolute values of the contents of the given vector + a. + + Result value: + The value of each element of r is the + saturated absolute value of the corresponding element of + a. + + Endian considerations: + None. + + + + Supported type signatures for vec_abss + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + + + + vector signed char + + + vector signed char + + + + vspltisb t,0 + vsubsbs t,t,a + vmaxsb r,t,a + + + + + + vector signed short + + + vector signed short + + + + vspltish t,0 + vsubshs t,t,a + vmaxsh r,t,a + + + + + + vector signed int + + + vector signed int + + + + vspltisw t,0 + vsubsws t,t,a + vmaxsw r,t,a + + + + + +
+ +
+ + + + vec_add + Vector Addition + + r = vec_add (a, b) + + + Purpose: + Computes the sum of two vectors. + + Result value: + The value of each element of r is the + sum of the corresponding elements of a and b. Modular + arithmetic is used for both signed and unsigned integers. + + Endian considerations: + None. + + + + Supported type signatures for vec_add + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector signed char + + + vector signed char + + + vector signed char + + + + vaddubm r,a,b + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + vaddubm r,a,b + + + + + + vector signed short + + + vector signed short + + + vector signed short + + + + vadduhm r,a,b + + + + + + vector unsigned short + + + vector unsigned short + + + vector unsigned short + + + + vadduhm r,a,b + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + + vadduwm r,a,b + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + vadduwm r,a,b + + + + + + vector signed long long + + + vector signed long long + + + vector signed long long + + + + vaddudm r,a,b + + + + + + vector unsigned long long + + + vector unsigned long long + + + vector unsigned long long + + + + vaddudm r,a,b + + + + + + vector signed __int128 + + + vector signed __int128 + + + vector signed __int128 + + + + vadduqm r,a,b + + + + + + vector unsigned __int128 + + + vector unsigned __int128 + + + vector unsigned __int128 + + + + vadduqm r,a,b + + + + + + vector float + + + vector float + + + vector float + + + + xvaddsp r,a,b + + + + + + vector double + + + vector double + + + vector double + + + + xvadddp r,a,b + + + + + +
+ +
+ + + + vec_addc + Vector Add Carrying + + r = vec_addc (a, b) + + + Purpose: + Returns a vector of carry bits produced by adding two vectors. + + Result value: + The value of each element of r is the + carry produced by adding the corresponding elements of a and b (1 + if there is a carry, 0 otherwise). + + Endian considerations: + None. + + + + Supported type signatures for vec_addc + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + + vaddcuw r,a,b + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + vaddcuw r,a,b + + + + + + vector signed __int128 + + + vector signed __int128 + + + vector signed __int128 + + + + vaddcuq r,a,b + + + + + + vector unsigned __int128 + + + vector unsigned __int128 + + + vector unsigned __int128 + + + + vaddcuq r,a,b + + + + + +
+ +
+ + + + vec_adde + Vector Add Extended + + r = vec_adde (a, b, c) + + + Purpose: + Returns a vector formed as the sum of two vectors and a carry vector. + + Result value: + The value of each element of r is + produced by adding the corresponding elements of a and b with + a carry specified in the corresponding element of c (1 if there is a carry, 0 otherwise). + + Endian considerations: + None. + + + + Supported type signatures for vec_adde + + + + + + + + + + + r + + + + + a + + + + + b + + + + + c + + + + + Example Implementation + + + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + vector signed int + + + + vspltisw t,1 + vadduwm r,a,b + xxland c,c,t + vadduwm r,r,c + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + vspltisw t,1 + vadduwm r,a,b + xxland c,c,t + vadduwm r,r,c + + + + + + vector signed __int128 + + + vector signed __int128 + + + vector signed __int128 + + + vector signed __int128 + + + + vaddeuqm r,a,b,c + + + + + + vector unsigned __int128 + + + vector unsigned __int128 + + + vector unsigned __int128 + + + vector unsigned __int128 + + + + vaddeuqm r,a,b,c + + + + + +
+ +
+ + + + vec_addec + Vector Add Extended Carrying + + r = vec_addec (a, b, c) + + + Purpose: + Returns a vector of carry bits produced by adding two vectors and + a carry vector. + + Result value: + The value of each element of r is + the carry produced by adding the corresponding elements of a and b and + a carry specified in the corresponding element of c (1 if there is a carry, 0 otherwise). + + Endian considerations: + None. + + + + Supported type signatures for vec_addec + + + + + + + + + + + r + + + + + a + + + + + b + + + + + c + + + + + Example Implementation + + + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + vector signed int + + + + vspltisw t,1 + xxland u,c,t + vadduwm v,a,b + vaddcuw w,a,b + vaddcuw x,v,u + xxlor r,w,x + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + vspltisw t,1 + xxland u,c,t + vadduwm v,a,b + vaddcuw w,a,b + vaddcuw x,v,u + xxlor r,w,x + + + + + + vector signed __int128 + + + vector signed __int128 + + + vector signed __int128 + + + vector signed __int128 + + + + vaddecuq r,a,b,c + + + + + + vector unsigned __int128 + + + vector unsigned __int128 + + + vector unsigned __int128 + + + vector unsigned __int128 + + + + vaddecuq r,a,b,c + + + + + +
+ +
+ + + + vec_adds + Vector Add Saturating + + r = vec_adds (a, b) + + + Purpose: + Computes the saturated sum of two vectors. + + Result value: + The value of each element of r is the + saturated sum of the corresponding elements of a and b. + + Endian considerations: + None. + + + + Supported type signatures for vec_adds + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector signed char + + + vector signed char + + + vector signed char + + + + vaddsbs r,a,b + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + vaddubs r,a,b + + + + + + vector signed short + + + vector signed short + + + vector signed short + + + + vaddshs r,a,b + + + + + + vector unsigned short + + + vector unsigned short + + + vector unsigned short + + + + vadduhs r,a,b + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + + vaddsws r,a,b + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + vadduws r,a,b + + + + + +
+ +
+ + + + vec_and + Vector AND + + r = vec_and (a, b) + + + Purpose: + Performs a bitwise AND of two vectors. + + Result value: + The value of r is the bitwise AND + of a and b. + + Endian considerations: + None. + + + + Supported type signatures for vec_and + + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector bool char + + + vector bool char + + + vector bool char + + + + xxland r,a,b + + + + + + + + vector signed char + + + vector signed char + + + vector signed char + + + + xxland r,a,b + + + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + xxland r,a,b + + + + + + + + vector bool short + + + vector bool short + + + vector bool short + + + + xxland r,a,b + + + + + + + + vector signed short + + + vector signed short + + + vector signed short + + + + xxland r,a,b + + + + + + + + vector unsigned short + + + vector unsigned short + + + vector unsigned short + + + + xxland r,a,b + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + + xxland r,a,b + + + + + + + + vector bool int + + + vector bool int + + + vector bool int + + + + xxland r,a,b + + + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + xxland r,a,b + + + + + + + + vector bool long long + + + vector bool long long + + + vector bool long long + + + + xxland r,a,b + + + + Phased in + + + + + vector signed long long + + + vector signed long long + + + vector signed long long + + + + xxland r,a,b + + + + Phased in + + + + + vector unsigned long long + + + vector unsigned long long + + + vector unsigned long long + + + + xxland r,a,b + + + + Phased in + + + + + vector float + + + vector float + + + vector float + + + + xxland r,a,b + + + + + + + + vector double + + + vector double + + + vector double + + + + xxland r,a,b + + + + + + + +
+ +
+ + + + vec_andc + Vector AND with Complement + + r = vec_andc (a, b) + + + Purpose: + Performs a bitwise AND of one vector with the bitwise complement of + another vector. + + Result value: + The value of r is the bitwise AND + of a with the bitwise complement + of b. + + Endian considerations: + None. + + + + Supported type signatures for vec_andc + + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector bool char + + + vector bool char + + + vector bool char + + + + xxlandc r,a,b + + + + + + + + vector signed char + + + vector signed char + + + vector signed char + + + + xxlandc r,a,b + + + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + xxlandc r,a,b + + + + + + + + vector bool short + + + vector bool short + + + vector bool short + + + + xxlandc r,a,b + + + + + + + + vector signed short + + + vector signed short + + + vector signed short + + + + xxlandc r,a,b + + + + + + + + vector unsigned short + + + vector unsigned short + + + vector unsigned short + + + + xxlandc r,a,b + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + + xxlandc r,a,b + + + + + + + + vector bool int + + + vector bool int + + + vector bool int + + + + xxlandc r,a,b + + + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + xxlandc r,a,b + + + + + + + + vector bool long long + + + vector bool long long + + + vector bool long long + + + + xxlandc r,a,b + + + + Phased in + + + + + vector signed long long + + + vector signed long long + + + vector signed long long + + + + xxlandc r,a,b + + + + Phased in + + + + + vector unsigned long long + + + vector unsigned long long + + + vector unsigned long long + + + + xxlandc r,a,b + + + + Phased in + + + + + vector float + + + vector float + + + vector float + + + + xxlandc r,a,b + + + + + + + + vector double + + + vector double + + + vector double + + + + xxlandc r,a,b + + + + + + + +
+ +
+ + + + vec_avg + Vector Average + + r = vec_avg (a, b) + + + Purpose: + Returns a vector containing the elementwise average of two vectors. + + Result value: + The value of each element of r is the + average of the value of the corresponding elements of a and b. + + Endian considerations: + None. + + + + Supported type signatures for vec_avg + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector signed char + + + vector signed char + + + vector signed char + + + + vavgsb r,a,b + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + vavgub r,a,b + + + + + + vector signed short + + + vector signed short + + + vector signed short + + + + vavgsh r,a,b + + + + + + vector unsigned short + + + vector unsigned short + + + vector unsigned short + + + + vavguh r,a,b + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + + vavgsw r,a,b + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + vavguw r,a,b + + + + + +
+ +
+ + + + vec_bperm + Vector Bit Permute + + r = vec_bperm (a, b) + + + Purpose: + Gathers up to 16 one-bit values from a quadword or from each + doubleword element in the specified order, zeroing other bits. + + Result value: + When the type of a is vector + unsigned char or vector unsigned __int128: + + + + For each i + + + (0 ≤ i < 16), + + + let bit index j denote the byte value of the + ith + element of b. + + + + + If bit index j is greater than or equal to + 128, bit i of + r is set to 0. + + + + + If bit index j is smaller than 128, bit + i of r + is set to the value of the + jth bit of + a. + + + + + All other bits of r are zeroed. + + + + + + When the type of a is vector + unsigned long long: + + + + For each doubleword element i + + + (0 ≤ i < 2) + + + of a: + + + + For each j + + + (0 ≤ j < 8), + + + let bit index k denote the byte + value of the + jth + element of b. + + + + + If bit index k is greater than or + equal to 64, bit j of element + i of r is set to 0. + + + + + If bit index k is less than 64, + bit j of element + i of r is set to the value of the + kth + bit of element i of input + a. + + + + + All other bits are zeroed. + + + + + + + + Endian considerations: + All bit and byte numberings within each element in the above + description denote big-endian (i.e., left-to-right) order, + reflecting the underlying hardware instruction. Unlike most + of the vector intrinsics in this chapter, vec_bperm + does not follow the bi-endian programming model. + + + + Supported type signatures for vec_bperm + + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + vbpermq r,a,b + + + + + + + + vector unsigned long long + + + vector unsigned __int128 + + + vector unsigned char + + + + vbpermq r,a,b + + + + Phased in + + + + + vector unsigned long long + + + vector unsigned long long + + + vector unsigned char + + + + vbpermd r,a,b + + + + ISA 3.0 or later + Phased in + + + + +
+ +
+ + + + vec_ceil + Vector Ceiling + + r = vec_ceil (a) + + + Purpose: + Returns a vector r that contains the + result of applying the floating-point ceiling function to each + element of a. + + Result value: + The value of each element of r is the + smallest representable floating-point integral value greater than or + equal to the value of the corresponding element of + a. + + Endian considerations: + None. + + + + Supported type signatures for vec_ceil + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + + + + vector float + + + vector float + + + + xvrspip r,a + + + + + + vector double + + + vector double + + + + xvrdpip r,a + + + + + +
+ +
+ + + + vec_cmpb + Vector Compare Bytes + + r = vec_cmpb (a, b) + + + Purpose: + Performs a bounds comparison of each set of corresponding elements + of the given vectors. + + Result value: + Each element of r has the value 0 + if the value of the corresponding element of a is less than or equal to the value of + the corresponding element of b + and greater than or equal to the negated value of the corresponding + element of b. Otherwise: + + + + If an element of b is greater + than or equal to 0, then the value of the corresponding + element of r is 0 if the + absolute value of the corresponding element of a is equal to the value of the + corresponding element of b. + The value is negative if it is greater than the value of the + corresponding element of b. + It is positive if it is less than the value of the corresponding + element of b. + + + + + If an element of b is less + than 0, then the value of the element of r is positive if the value of the + corresponding element of a is + less than or equal to the value of the element of b. Otherwise, it is negative. + + + + + Endian considerations: + None. + + + + Supported type signatures for vec_cmpb + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector signed int + + + vector float + + + vector float + + + + vcmpbfp r,a,b + + + + + +
+ +
+ + + + vec_cmpeq + Vector Compare Equal + + r = vec_cmpeq (a, b) + + + Purpose: + Returns a vector containing the results of comparing each set of + corresponding elements of the given vectors for equality. + + Result value: + For each element of r, the value + of each bit is 1 if the corresponding elements of a and b + are equal. Otherwise, the value of each bit is 0. + + Endian considerations: + None. + + + + Supported type signatures for vec_cmpeq + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector bool char + + + vector bool char + + + vector bool char + + + + vcmpequb r,a,b + + + + + + vector bool char + + + vector signed char + + + vector signed char + + + + vcmpequb r,a,b + + + + + + vector bool char + + + vector unsigned char + + + vector unsigned char + + + + vcmpequb r,a,b + + + + + + vector bool short + + + vector bool short + + + vector bool short + + + + vcmpequh r,a,b + + + + + + vector bool short + + + vector signed short + + + vector signed short + + + + vcmpequh r,a,b + + + + + + vector bool short + + + vector unsigned short + + + vector unsigned short + + + + vcmpequh r,a,b + + + + + + vector bool int + + + vector bool int + + + vector bool int + + + + vcmpequw r,a,b + + + + + + vector bool int + + + vector signed int + + + vector signed int + + + + vcmpequw r,a,b + + + + + + vector bool int + + + vector unsigned int + + + vector unsigned int + + + + vcmpequw r,a,b + + + + + + vector bool long long + + + vector bool long long + + + vector bool long long + + + + vcmpequd r,a,b + + + + + + vector bool long long + + + vector signed long long + + + vector signed long long + + + + vcmpequd r,a,b + + + + + + vector bool long long + + + vector unsigned long long + + + vector unsigned long long + + + + vcmpequd r,a,b + + + + + + vector bool int + + + vector float + + + vector float + + + + xvcmpeqsp r,a,b + + + + + + vector bool long long + + + vector double + + + vector double + + + + xvcmpeqdp r,a,b + + + + + +
+ +
+ + + + vec_cmpge + Vector Compare Greater or Equal + + r = vec_cmpge (a, b) + + + Purpose: + Returns a vector containing the results of a greater-than-or-equal-to + comparison between each set of corresponding elements of the given + vectors. + + Result value: + For each element of r, the value + of each bit is 1 if the corresponding element of a is greater than or equal to the corresponding + element of b. Otherwise, the value + of each bit is 0. + + Endian considerations: + None. + + + + Supported type signatures for vec_cmpge + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector bool char + + + vector signed char + + + vector signed char + + + + vcmpgtsb t,b,a + xxlnor r,t,t + + + + + + vector bool char + + + vector unsigned char + + + vector unsigned char + + + + vcmpgtub t,b,a + xxlnor r,t,t + + + + + + vector bool short + + + vector signed short + + + vector signed short + + + + vcmpgtsh t,b,a + xxlnor r,t,t + + + + + + vector bool short + + + vector unsigned short + + + vector unsigned short + + + + vcmpgtuh t,b,a + xxlnor r,t,t + + + + + + vector bool int + + + vector signed int + + + vector signed int + + + + vcmpgtsw t,b,a + xxlnor r,t,t + + + + + + vector bool int + + + vector unsigned int + + + vector unsigned int + + + + vcmpgtuw t,b,a + xxlnor r,t,t + + + + + + vector bool long long + + + vector signed long long + + + vector signed long long + + + + vcmpgtsd t,b,a + xxlnor r,t,t + + + + + + vector bool long long + + + vector unsigned long long + + + vector unsigned long long + + + + vcmpgtud t,b,a + xxlnor r,t,t + + + + + + vector bool int + + + vector float + + + vector float + + + + xvcmpgesp r,a,b + + + + + + vector bool long long + + + vector double + + + vector double + + + + xvcmpgedp r,a,b + + + + + +
+ +
+ + + + vec_cmpgt + Vector Compare Greater Than + + r = vec_cmpgt (a, b) + + + Purpose: + Returns a vector containing the results of a greater-than + comparison between each set of corresponding elements of the given + vectors. + + Result value: + For each element of r, the value + of each bit is 1 if the corresponding element of a is greater than the corresponding + element of b. Otherwise, the value + of each bit is 0. + + Endian considerations: + None. + + + + Supported type signatures for vec_cmpgt + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector bool char + + + vector signed char + + + vector signed char + + + + vcmpgtsb r,a,b + + + + + + vector bool char + + + vector unsigned char + + + vector unsigned char + + + + vcmpgtub r,a,b + + + + + + vector bool short + + + vector signed short + + + vector signed short + + + + vcmpgtsh r,a,b + + + + + + vector bool short + + + vector unsigned short + + + vector unsigned short + + + + vcmpgtuh r,a,b + + + + + + vector bool int + + + vector signed int + + + vector signed int + + + + vcmpgtsw r,a,b + + + + + + vector bool int + + + vector unsigned int + + + vector unsigned int + + + + vcmpgtuw r,a,b + + + + + + vector bool long long + + + vector signed long long + + + vector signed long long + + + + vcmpgtsd r,a,b + + + + + + vector bool long long + + + vector unsigned long long + + + vector unsigned long long + + + + vcmpgtud r,a,b + + + + + + vector bool int + + + vector float + + + vector float + + + + xvcmpgtsp r,a,b + + + + + + vector bool long long + + + vector double + + + vector double + + + + xvcmpgtdp r,a,b + + + + + +
+ +
+ + + + vec_cmple + Vector Compare Less Than or Equal + + r = vec_cmple (a, b) + + + Purpose: + Returns a vector containing the results of a less-than-or-equal + comparison between each set of corresponding elements of the given + vectors. + + Result value: + For each element of r, the value + of each bit is 1 if the corresponding element of a is less than or equal to the corresponding + element of b. Otherwise, the value + of each bit is 0. + + Endian considerations: + None. + + + + Supported type signatures for vec_cmple + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector bool char + + + vector signed char + + + vector signed char + + + + vcmpgtsb t,a,b + xxlnor r,t,t + + + + + + vector bool char + + + vector unsigned char + + + vector unsigned char + + + + vcmpgtub t,a,b + xxlnor r,t,t + + + + + + vector bool short + + + vector signed short + + + vector signed short + + + + vcmpgtsh t,a,b + xxlnor r,t,t + + + + + + vector bool short + + + vector unsigned short + + + vector unsigned short + + + + vcmpgtuh t,a,b + xxlnor r,t,t + + + + + + vector bool int + + + vector signed int + + + vector signed int + + + + vcmpgtsw t,a,b + xxlnor r,t,t + + + + + + vector bool int + + + vector unsigned int + + + vector unsigned int + + + + vcmpgtuw t,a,b + xxlnor r,t,t + + + + + + vector bool long long + + + vector signed long long + + + vector signed long long + + + + vcmpgtsd t,a,b + xxlnor r,t,t + + + + + + vector bool long long + + + vector unsigned long long + + + vector unsigned long long + + + + vcmpgtud t,a,b + xxlnor r,t,t + + + + + + vector bool int + + + vector float + + + vector float + + + + xvcmpgesp r,b,a + + + + + + vector bool long long + + + vector double + + + vector double + + + + xvcmpgedp r,b,a + + + + + +
+ +
+ + + + vec_cmplt + Vector Compare Less Than + + r = vec_cmplt (a, b) + + + Purpose: + Returns a vector containing the results of a less-than + comparison between each set of corresponding elements of the given + vectors. + + Result value: + For each element of r, the value + of each bit is 1 if the corresponding element of a is less than the corresponding + element of b. Otherwise, the value + of each bit is 0. + + Endian considerations: + None. + + + + Supported type signatures for vec_cmplt + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector bool char + + + vector signed char + + + vector signed char + + + + vcmpgtsb r,b,a + + + + + + vector bool char + + + vector unsigned char + + + vector unsigned char + + + + vcmpgtub r,b,a + + + + + + vector bool short + + + vector signed short + + + vector signed short + + + + vcmpgtsh r,b,a + + + + + + vector bool short + + + vector unsigned short + + + vector unsigned short + + + + vcmpgtuh r,b,a + + + + + + vector bool int + + + vector signed int + + + vector signed int + + + + vcmpgtsw r,b,a + + + + + + vector bool int + + + vector unsigned int + + + vector unsigned int + + + + vcmpgtuw r,b,a + + + + + + vector bool long long + + + vector signed long long + + + vector signed long long + + + + vcmpgtsd r,b,a + + + + + + vector bool long long + + + vector unsigned long long + + + vector unsigned long long + + + + vcmpgtud r,b,a + + + + + + vector bool int + + + vector float + + + vector float + + + + xvcmpgtsp r,b,a + + + + + + vector bool long long + + + vector double + + + vector double + + + + xvcmpgtdp r,b,a + + + + + +
+ +
+ + + + vec_cmpne + Vector Compare Not Equal + + r = vec_cmpne (a, b) + + + Purpose: + Returns a vector containing the results of comparing each set of + corresponding elements of the given vectors for inequality. + + Result value: + For each element of r, the value + of each bit is 1 if the corresponding elements of a and b + are not equal. Otherwise, the value of each bit is 0. + + Endian considerations: + None. + + + + Supported type signatures for vec_cmpne + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector bool char + + + vector bool char + + + vector bool char + + + + vcmpneb r,a,b + + + + + + vector bool char + + + vector signed char + + + vector signed char + + + + vcmpneb r,a,b + + + + + + vector bool char + + + vector unsigned char + + + vector unsigned char + + + + vcmpneb r,a,b + + + + + + vector bool short + + + vector bool short + + + vector bool short + + + + vcmpneh r,a,b + + + + + + vector bool short + + + vector signed short + + + vector signed short + + + + vcmpneh r,a,b + + + + + + vector bool short + + + vector unsigned short + + + vector unsigned short + + + + vcmpneh r,a,b + + + + + + vector bool int + + + vector bool int + + + vector bool int + + + + vcmpnew r,a,b + + + + + + vector bool int + + + vector signed int + + + vector signed int + + + + vcmpnew r,a,b + + + + + + vector bool int + + + vector unsigned int + + + vector unsigned int + + + + vcmpnew r,a,b + + + + + + vector bool long long + + + vector bool long long + + + vector bool long long + + + + vcmpequd t,a,b + xxlnor r,t,t + + + + + + vector bool long long + + + vector signed long long + + + vector signed long long + + + + vcmpequd t,a,b + xxlnor r,t,t + + + + + + vector bool long long + + + vector unsigned long long + + + vector unsigned long long + + + + vcmpequd t,a,b + xxlnor r,t,t + + + + + + vector bool int + + + vector float + + + vector float + + + + xvcmpeqsp t,a,b + xxlnor r,t,t + + + + + + vector bool long long + + + vector double + + + vector double + + + + xvcmpeqdp t,a,b + xxlnor r,t,t + + + + + +
+ +
+ + + + vec_cmpnez + Vector Compare Not Equal or Zero + + r = vec_cmpnez (a, b) + + + Purpose: + Returns a vector containing the results of comparing each set of + corresponding elements of the given vectors for inequality, or for + an element with a zero value. + + Result value: + For each element of r, the value + of each bit is 1 if the corresponding elements of a and b + are not equal, or if the a element or + the b element is zero. Otherwise, + the value of each bit is 0. + + Endian considerations: + None. + + + + Supported type signatures for vec_cmpnez + + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector bool char + + + vector signed char + + + vector signed char + + + + vcmpnezb r,a,b + + + + ISA 3.0 or later + + + + + vector bool char + + + vector unsigned char + + + vector unsigned char + + + + vcmpnezb r,a,b + + + + ISA 3.0 or later + + + + + vector bool short + + + vector signed short + + + vector signed short + + + + vcmpnezh r,a,b + + + + ISA 3.0 or later + + + + + vector bool short + + + vector unsigned short + + + vector unsigned short + + + + vcmpnezh r,a,b + + + + ISA 3.0 or later + + + + + vector bool int + + + vector signed int + + + vector signed int + + + + vcmpnezw r,a,b + + + + ISA 3.0 or later + + + + + vector bool int + + + vector unsigned int + + + vector unsigned int + + + + vcmpnezw r,a,b + + + + ISA 3.0 or later + + + + +
+ +
+ + + + vec_cntlz + Vector Count Leading Zeros + + r = vec_cntlz (a) + + + Purpose: + Returns a vector containing the number of most-significant bits + equal to zero of each corresponding element of the given vector. + + Result value: + The value of each element of r is + set to the number of leading zeros of the corresponding element + of a. + + Endian considerations: + None. + + + + Supported type signatures for vec_cntlz + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector signed char + + + vector signed char + + + + vclzb r,a + + + + Phased in + + + + + vector unsigned char + + + vector unsigned char + + + + vclzb r,a + + + + Phased in + + + + + vector signed short + + + vector signed short + + + + vclzh r,a + + + + Phased in + + + + + vector unsigned short + + + vector unsigned short + + + + vclzh r,a + + + + Phased in + + + + + vector signed int + + + vector signed int + + + + vclzw r,a + + + + Phased in + + + + + vector unsigned int + + + vector unsigned int + + + + vclzw r,a + + + + Phased in + + + + + vector signed long long + + + vector signed long long + + + + vclzd r,a + + + + Phased in + + + + + vector unsigned long long + + + vector unsigned int long long + + + + vclzd r,a + + + + Phased in + + + + +
+ +
+ + + + vec_cntlz_lsbb + Vector Count Leading Zero Least-Significant Bits by + Byte + + r = vec_cntlz_lsbb (a) + + + Purpose: + Returns the number of leading byte elements (starting at the + lowest-numbered element) of a vector that have a least-significant + bit of zero. + + Result value: + The value of r is set to the + number of leading byte elements (starting at the lowest-numbered + element) of a that have a + least-significant bit of zero. + + Endian considerations: + None. + + + + Supported type signatures for vec_cntlz_lsbb + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + signed int + + + vector signed char + + + + vclzlsbb r,a + + + + ISA 3.0 or later + + + + + signed int + + + vector unsigned char + + + + vclzlsbb r,a + + + + ISA 3.0 or later + + + + +
+ +
+ + + + vec_cnttz + Vector Count Trailing Zeros + + r = vec_cnttz (a) + + + Purpose: + Returns a vector containing the number of least-significant bits + equal to zero of each corresponding element of the given vector. + + Result value: + The value of each element of r is + set to the number of trailing zeros of the corresponding element + of a. + + Endian considerations: + None. + + + + Supported type signatures for vec_cnttz + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector signed char + + + vector signed char + + + + vctzb r,a + + + + ISA 3.0 or later + + + + + vector unsigned char + + + vector unsigned char + + + + vctzb r,a + + + + ISA 3.0 or later + + + + + vector signed short + + + vector signed short + + + + vctzh r,a + + + + ISA 3.0 or later + + + + + vector unsigned short + + + vector unsigned short + + + + vctzh r,a + + + + ISA 3.0 or later + + + + + vector signed int + + + vector signed int + + + + vctzw r,a + + + + ISA 3.0 or later + + + + + vector unsigned int + + + vector unsigned int + + + + vctzw r,a + + + + ISA 3.0 or later + + + + + vector signed long long + + + vector signed long long + + + + vctzd r,a + + + + ISA 3.0 or later + + + + + vector unsigned long long + + + vector unsigned int long long + + + + vctzd r,a + + + + ISA 3.0 or later + + + + +
+ +
+ + + + vec_cnttz_lsbb + Vector Count Trailing Zero Least-Significant Bits by + Byte + + r = vec_cnttz_lsbb (a) + + + Purpose: + Returns the number of trailing byte elements (starting at the + highest-numbered element) of a vector that have a least-significant + bit of zero. + + Result value: + The value of r is set to the + number of trailing byte elements (starting at the highest-numbered + element) of a that have a + least-significant bit of zero. + + Endian considerations: + None. + + + + Supported type signatures for vec_cnttz_lsbb + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + signed int + + + vector signed char + + + + vctzlsbb r,a + + + + ISA 3.0 or later + + + + + signed int + + + vector unsigned char + + + + vctzlsbb r,a + + + + ISA 3.0 or later + + + + +
+ +
+ + + + vec_cpsgn + Vector Copy Sign + + r = vec_cpsgn (a, b) + + + Purpose: + Returns a vector by copying the sign of the elements in one + vector to the sign of the corresponding elements of another + vector. + + Result value: + The value of each element of r is set + to the corresponding element of b + with its sign replaced by the sign from the corresponding element of + a. + + Endian considerations: + None. + + + + Supported type signatures for vec_cpsgn + + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector float + + + vector float + + + vector float + + + + xvcpsgnsp r,b,a + + + + Phased in + + + + + vector double + + + vector double + + + vector double + + + + xvcpsgndp r,b,a + + + + Phased in + + + + +
+ +
+ + + + vec_ctf + Vector Convert to Floating-Point + + r = vec_ctf (a, b) + + + Purpose: + Converts an integer vector into a floating-point vector. + + Result value: + The value of each element of r is the + closest floating-point approximation of the value of the + corresponding element of a divided + by 2 to the power of b, which should + be in the range 0–31. + + Endian considerations: + None. + + + + Supported type signatures for vec_ctf + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector float + + + vector signed int + + + const int + + + + vcfsx r,a,b + + + + + + vector float + + + vector unsigned int + + + const int + + + + vcfux r,a,b + + + + + +
+ +
+ + + + vec_cts + Vector Convert to Signed Integer + + r = vec_cts (a, b) + + + Purpose: + Converts a floating-point vector into a signed integer vector. + + Result value: + The value of each element of r is the + saturated signed-integer value, truncated towards zero, obtained by + multiplying the corresponding element of a multiplied by 2 to the power of b, which should be in the range 0–31. + + Endian considerations: + None. + + + + Supported type signatures for vec_cts + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector signed int + + + vector float + + + const int + + + + vctsxs r,a,b + + + + + +
+ +
+ + + + vec_ctu + Vector Convert to Unsigned Integer + + r = vec_ctu (a, b) + + + Purpose: + Converts a floating-point vector into an unsigned integer vector. + + Result value: + The value of each element of r is the + saturated unsigned-integer value, truncated towards zero, obtained by + multiplying the corresponding element of a multiplied by 2 to the power of b, which should be in the range 0–31. + + Endian considerations: + None. + + + + Supported type signatures for vec_ctu + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector unsigned int + + + vector float + + + const int + + + + vctuxs r,a,b + + + + + +
+ +
+ + + + vec_div + Vector Divide + + r = vec_div (a, b) + + + Purpose: + Divides the elements in one vector by the corresponding elements + in another vector and places the quotients in the result vector. + Division is emulated using scalar arithmetic for integer types. + + Result value: + The value of each element of r is + obtained by dividing the corresponding element of a by the corresponding element of b. + + Endian considerations: + None. + + + + Supported type signatures for vec_div + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector signed long long + + + vector signed long long + + + vector signed long long + + + + xxspltd t,a,1 + mfvsrd u,t + xxspltd v,b,1 + mfvsrd w,v + divd x,u,w + mfvsrd u,a + mtvsrd y,x + mfvsrd w,b + divd x,u,w + mtvsrd z,x + xxmrghd r,z,y + + + + + + vector unsigned long long + + + vector unsigned long long + + + vector unsigned long long + + + + xxspltd t,a,1 + mfvsrd u,t + xxspltd v,b,1 + mfvsrd w,v + divd x,u,w + mfvsrd u,a + mtvsrd y,x + mfvsrd w,b + divd x,u,w + mtvsrd z,x + xxmrghd r,z,y + + + + + + vector float + + + vector float + + + vector float + + + + xvdivsp r,a,b + + + + + + vector double + + + vector double + + + vector double + + + + xvdivdp r,a,b + + + + + +
+ +
+ + + + vec_double + Vector Convert to Double Precision + + r = vec_double (a) + + + Purpose: + Converts a vector of long integers into a vector of double-precision + numbers. + + Result value: + The value of each element of r is + obtained by converting the corresponding element of a to double precision floating-point. + + Endian considerations: + None. + + + + Supported type signatures for vec_double + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + + + + vector double + + + vector signed long long + + + + xvcvsxddp r,a + + + + + + vector double + + + vector unsigned long long + + + + xvcvuxddp r,a + + + + + +
+ +
+ + + + vec_doublee + Vector Convert Even Elements to Double Precision + + r = vec_doublee (a) + + + Purpose: + Converts the even elements of a vector into a vector of double-precision + numbers. + + Result value: + Elements 0 and 1 of r are set to + the converted values of elements 0 and 2 of a. + + Endian considerations: + None. + + + + Supported type signatures for vec_doublee + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector double + + + vector signed int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector unsigned int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector float + + + + [TBD] + + + + Phased in + + + + +
+ +
+ + + + vec_doubleh + Vector Convert High Elements to Double Precision + + r = vec_doubleh (a) + + + Purpose: + Converts the high-order elements of a vector into a vector + of double-precision numbers. + + Result value: + Elements 0 and 1 of r are set to + the converted values of elements 0 and 1 of a. + + Endian considerations: + None. + + + + Supported type signatures for vec_doubleh + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector double + + + vector signed int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector unsigned int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector float + + + + [TBD] + + + + Phased in + + + + +
+ +
+ + + + vec_doublel + Vector Convert Low Elements to Double Precision + + r = vec_doublel (a) + + + Purpose: + Converts the low-order elements of a vector into a vector + of double-precision numbers. + + Result value: + Elements 0 and 1 of r are set to + the converted values of elements 2 and 3 of a. + + Endian considerations: + None. + + + + Supported type signatures for vec_doublel + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector double + + + vector signed int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector unsigned int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector float + + + + [TBD] + + + + Phased in + + + + +
+ +
+ + + + vec_doubleo + Vector Convert Odd Elements to Double Precision + + r = vec_doubleo (a) + + + Purpose: + Converts the odd elements of a vector into a vector + of double-precision numbers. + + Result value: + Elements 0 and 1 of r are set to + the converted values of elements 1 and 3 of a. + + Endian considerations: + None. + + + + Supported type signatures for vec_doubleo + + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + Restrictions + + + + + + + + vector double + + + vector signed int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector unsigned int + + + + [TBD] + + + + Phased in + + + + + vector double + + + vector float + + + + [TBD] + + + + Phased in + + + + +
+ +
+ + + + vec_eqv + Vector Equivalence + + r = vec_eqv (a, b) + + + Purpose: + Performs a bitwise equivalence (exclusive NOR) of two vectors. + + Result value: + The value of r is the bitwise XNOR + of a and b. + + Endian considerations: + None. + + + + Supported type signatures for vec_eqv + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example Implementation + + + + + + + + vector bool char + + + vector bool char + + + vector bool char + + + + xxleqv r,a,b + + + + + + vector signed char + + + vector signed char + + + vector signed char + + + + xxleqv r,a,b + + + + + + vector unsigned char + + + vector unsigned char + + + vector unsigned char + + + + xxleqv r,a,b + + + + + + vector bool short + + + vector bool short + + + vector bool short + + + + xxleqv r,a,b + + + + + + vector signed short + + + vector signed short + + + vector signed short + + + + xxleqv r,a,b + + + + + + vector unsigned short + + + vector unsigned short + + + vector unsigned short + + + + xxleqv r,a,b + + + + + + vector signed int + + + vector signed int + + + vector signed int + + + + xxleqv r,a,b + + + + + + vector bool int + + + vector bool int + + + vector bool int + + + + xxleqv r,a,b + + + + + + vector unsigned int + + + vector unsigned int + + + vector unsigned int + + + + xxleqv r,a,b + + + + + + vector bool long long + + + vector bool long long + + + vector bool long long + + + + xxleqv r,a,b + + + + + + vector signed long long + + + vector signed long long + + + vector signed long long + + + + xxleqv r,a,b + + + + + + vector unsigned long long + + + vector unsigned long long + + + vector unsigned long long + + + + xxleqv r,a,b + + + + + + vector float + + + vector float + + + vector float + + + + xxleqv r,a,b + + + + + + vector double + + + vector double + + + vector double + + + + xxleqv r,a,b + + + + + +
+ +
+ + + + vec_expte + Vector Exponential Estimate + + r = vec_expte (a) + + + Purpose: + Returns a vector r containing + estimates of 2 raised to the power of the corresponding elements + of a. + + Result value: + The value of each element of r is the + estimated value of 2 raised to the power of the corresponding element of + a. + + Endian considerations: + None. + + + + Supported type signatures for vec_expte + + + + + + + + + r + + + + + a + + + + + Example Implementation + + + + + + + + vector float + + + vector float + + + + vexptefp r,a + + + + + +
+ +
+ + + + vec_extract + Vector Extract + + r = vec_extract (a, b) + + + Purpose: + Returns the value of the bth + element of vector a. + + Result value: + The value of each element of r is the + element of a at position + b modulo the number of elements of + a. + + Endian considerations: + The element numbering within a register is left-to-right for big-endian + targets, and right-to-left for little-endian targets. + + + + Supported type signatures for vec_extract + + + + + + + + + + + r + + + + + a + + + + + b + + + + + Example LE Implementation + + + + + Example BE Implementation + + + + + + + + signed char + + + vector signed char + + + signed int + + + + vexptefp r,a + + + + + vexptefp r,a + + + + + +
+ +
+ +
+
diff --git a/Intrinsics_Reference/figures/example_graphic.bmp b/Intrinsics_Reference/figures/example_graphic.bmp new file mode 100644 index 0000000000000000000000000000000000000000..296b4ea20356036481974b80798052c0f8fc620e GIT binary patch literal 663606 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 AF#rGn literal 0 HcmV?d00001 diff --git a/Intrinsics_Reference/figures/example_graphic.odg b/Intrinsics_Reference/figures/example_graphic.odg new file mode 100644 index 0000000000000000000000000000000000000000..9a0a43e1cdf0cbd0c4f73b40b187a8be7f8c7d7e GIT binary patch literal 17483 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 literal 0 HcmV?d00001 diff --git a/Intrinsics_Reference/figures/project_process_non-std_track_graphic.odg b/Intrinsics_Reference/figures/project_process_non-std_track_graphic.odg new file mode 100644 index 0000000000000000000000000000000000000000..9e4852d77ec3ddc80728050c3efda695a3bc73d1 GIT binary patch literal 20975 zcma&O1CV4*6fW5AYR$AgZQIkfZQHhO+qP}n-P5*h+t~i!+ZVALvHRjx#I4G@bu%k( z=BfO?^PQ6=D*+0I3O9ZAfFI=V0bQV`FP%ZD?cQWMyRSNMmBJXKQL^;2`_|YLLqVo!f^72HOg0+Zv>!l6GSD{%Atx%VwX9z?$+79#Bp##b zxM&eeCL#hx1R?U1jRFS!H9R~Ff!5|SR=@a;996vimgR9hq1r4GPc0$Je+)T&vc=IN z=KX!#d7Sy&83GRm?8j?NIjGnJ1jdlW3(RZGEDIE?28Rq}s0<1Yl(zVPdP)+`A1{}T zB4lqIYsaBn$D9QOoQ`?)2#3+#^iu)+e>O+Qe8U-|w^AgL((CN(+}z2rNXv}n2a+m| z9-MZjl6uJtEJ<%Gezx#ab*T5~`oCA^QRkZZQ+Idw;y11Tx~32&Ush=5UcRmW(>*%y z!4Gd`{TI6v1h1)|%D{E>y8QYtw`Cq>YS75N$h~&h(fjMoR_~wJKDfU^D$2`od_L^J zmVgw1k$V&4;^RS>dha{O3_+ZKD*})7bNl216$9y>^j=X?Ql?O;)q6Z&LE?JC`we{~ z1B1iku41!k?~wM<^iA@))ezMg{Y&j6UHpEK!o_15yEA3 z=Sd{Q{nGp>c<+b#N%5nB8axEhKnQ|7FhZo=An$uX;B<)jVt1Xr^}SqaiI_kruDA5L zWz-nwgM^{&{BFR>?*%`XVCs`Xla&;8C;lUD#2y85cKd~}ULT*Q=W3|J?e+py_s?(W zK7W=Fos|sjU+IHR=N^wUQZ$MU2sVQ)wP^xjKS~Vxm;N#k4KyJ9mkS*sf?pG_W-gF0 ze1nVKYduQ#^361dj|-R~viH#s6D-O}#$^)ia$8|Je@SyH0h z7`PuoK_K+=-<;mYG>QyAxEnIR+b!$ouNYRGWt3{=HA`L=Pjo&p?2VKXKa2uSN?mB| z7Xe)jT|a5p$iZOgE4&0s@~&Bz+eC`4_!)n8;6r|VzkRwQ2+)?IJ`QoO50y37N~FZz znSbxGlzt%SQIdqvmGbtS)q%%!;Q*%Zs9bVzuSSdKX#Wc|O%d%Tb3{%!kHuF?dT+W5 zdkC7VIi;-u)+u?jCa}G8@Ar~5wr5I|FWqO1AWWC6)q+Va^eb!K{y^@Ya2)Ky%CNpE zWj~nNsb6!-h0?ST3=TeTSkgSS$5*&;I35}G#~i=Ai$%*&u;Bty*5a+*Tu&xwoR;{D zsDn)0kfU(LfFr)-d_mCR@U71k9i;`eOz+X)v{#}`9oHu2`j9lp9ojo~QKXzNclyv; zZ+sb?P|TV+o;WKgyM-!5{7rrv4D+w=4MlTl0JOw+`dNHTaHHpeQ)J4N9=u;*g32`W z(vR70f1O|dP4rpy+F|Se2$YYhs8^xm4!K_u5%;+3ogyte81H>`N%c)xAbsfm4(yMe zyPq;Bd;a#rqu+7to2|wIht_41Wy;>ibK~v3l`Wnsap4(IOGy()bMAVFS+BpIP5G66 zv>dX|Qw-YLT{`8n*ZMt&aGxL2=VhCfWY-+L2{592xb%=t(J7-;^?gZC#7J_d+%x+~ zl}rsGV4AK?9WJJ&m9n#-IxRbVP};1y6+XcPuCx_rFqB$6ws7hth6 zl#)<>Qu5qqt%?(W1TeHMC~B^LF7=Q%s&8hllS{E)h(romc(`yQ4K6Mf`CQv%=4r<4sulMEb2hsvgD87Gok8B!A-h4wVZzUWhn|L&TK# zbq$}blCqJaMwBf>oSd5otr9!l=*B8mul>820nZ+9Nby_Bm_QcjFC?v?a9tr>HXl@! z>Bb)Y7#{d9OEOu_1yHmDWQYR1T>W)_Ubb{JQ{W+HbQ)V=2&Ga{=3&N8uS3FCb;{b_ z`Ech~gVcp#A+YoTMfV%3x&YBU5NVz~#t7gF{!DE=1Y4L)&iU!>r`K;IV}LBsK7T#S z*ij*uAogsM25kJ0L>K)4$B~c$sx2{h?Rkq{3k)IiaNBdK0;1nGfoL{Nv7+r&^_IZ8 zV^D=?0yub-r8H1ZTn1p4mCe>fdX4Y!y@22F?^dX)BN!p?zkXk4LF`LjJNqRMLoobapKl*+Tg5RbP)ViNnJuq$n-17Anz5Zvz(i!4 z7=5@NGf5&d7BRm)N{J#*I2qC5&>+ctr%@#HMv~0Ew&wC+Iyg(V7!|!?P(A=L?lN6P zV_LeUt>8uPb{1|6jW$!-vy?}myyr16$i1Ziq>Z3aMgdK-6ELHN!e%}B%&U3{+!=!m_J_yHw!99jOy`=J7O=<>af7^m^*Rd>@MZq zgMBgWo)^ncoUAtp%toZ5cS$<-FhV;P9s|a=fnXo#KjgHcsika0pM+YN+>$mgv1iiP zdiqoM7#Y!LYk14Zk%@xwo6L7M7l53? z!D@3SJX;j|LWj1Rv|l=;O?dkSpnl#J{S@2#aK-K-X?Ng^K`CgPr3)GFQmln&Mg6G= zA8QKio-jD^tAnKaYE87Gf~F11H&hgS?xY_+c^C>>SWxF@L`+4q(&tNOuZzR^Be1`O^htQbO%h_0PN!kqAMIJ9VmCq(UGuP1 zviSM70PaLnLx{gafABAAs!zg}pR?@ID29A51 zL_s%os&cPjl5hOp@HEzdSvm6?z^$%e)Ij<&H-AGKS=j zOqYKF<JTx2RH@cpUXDiyf8?m1 zG<~c*!@o(H- zNpf&DGfzbWg-?}Ey`SNL>vcu{9=ghgYq8$A8?FfGs%~%ZZ_#Qv!DI4=M|Dsq96LSzJf3=s&L*R- zfMs9Pfb3LH6k$%b@wxxH)M(Ki&b;34xltX+L(AS4!mLCEF+0CpE)OK6u7Z)fY>qfa zCz+vV8U;_AHBk}unikM*PVj}T8GuIvj`P9tjZ-^O`ZokM2M4w|d3=B@E1-}XH z4}krJ&FTL2_1@!rVuSnqgsIN1j=Hp6h39{q&MpP*ew{7g!hI8!X-GY3Pvi$_=6zZZ z?(;U#z;?)-9erPI-CRgju+OjZ+R2c^ft)Ll4d47Ug>v21WHl-^t)V#UxHEb;`47SD z6U)rc`eUJv(A^_V`*7=dwv6LS-Rs~*ggmH-1=`1LWY)&}9RKPC(!&{-f@~7k(t?~S zC&HpD1tJMNEjR%#q!g^8U_Y}z+kA*%tjeU65bVGH!-eso*0egE)-zLJW0afntS-p6 zTrBw(D5S+UT7S+(H&>r2iG^S}6DZw7Vqzv&t@4&TIyF5`X~)pd7S5V>WTXQMsQ*$c zl+DvS&j1-mvD(>g`)T~$9D;3hdVgVVsbbcU+EKG$v3CDlT+VsB402m^@=BR zz^vF_tbYb{yIR++VB;>Qj{WCBSpg~e@;4X{QDh(UA~ovw&5f^(_KVpYnwc4)yr|LF zU}8VIIxsS6WL`Luq7^R-S_^LD;uJk zsE9l;I)1Ip#AbWsFr}nLJv;R8DlG)zBeVgwR#U-(dPs=)$n_zc2%GxNg3q|Z?eb&F zFnbGCzO=oz6!EY@YDI{TA+8Z}v`Lkz(~M+0h0+xe9q9cW?(OR9?GfS7q9CAfvakaP zelf%HK<7h+WyU-Fo};VFu4P<|ExpDpquU0pWN<9lXJ@C3YDf?2O(Xk6N)RYwqvi-I zRG=hN4cYiPeTHBZxdDEgK7XtLfP>I&Is*_+}|+ zwM2sxBkZU@zP@j(8Pwz1L`9K=vBuS^^oPoS5X&%w%qr79H`f<5{yCvh9X` z%xU9!(|1(EePLs>v?ia{_r(X%Quca@>%(5-F2<+5w|ex88Osz4V7=7|jLs!3$Zk#> zA|V!WJ1GnIWbk)7Sh^ZHiPf~BS+;{EZIh_x?(e}JNWS(iH$yU%4Z|}4hG8tO0 zIg<9jWPdC=H2p*Uy55gbS)h@Fb9Bcjw%*FLs`+4RDeh+adpX(D8G1)XLnj_Y?<2i; zio^xMygI)YOd#;iy(SQ{l5SK{~C7(3M2Bt(8429PHjc#>XF8wmqZ%oEa+?_fJ@gi!`}3mOC1wh~ct2YW6PT zsNj;;BKsMkqP;a=yIn^8^$W1BOXpbU@S9GEiyPjb${i57>D5ArS60bDGw^2ki z$xyeyzjtE?>-;z)riAG7-f>;FX{G%9aFfm(`zLw-3l0Oe-N9sfWzK<_b^h`p`Oxr+ z&Cz;ZNO(!NoK>34HJF-AFe!P228dWDXD|ycS zHh)cbwu}r}1p2N*D;hXzE1%c2?30W*WMg|S(ac1_a0b7OJf znR!Q}R8msXP257eKk^zO`&HVi+nunpcJ~MBT{VdS;gLKaSQk{3luc@$_Y~QGBFeyV zcP(PvpR&IUm`)^83`c`slcINzsjK6BX7>5`f;- zB9eSW#I+E?)Gp!B_BzsyZ2t&nS3mR*vKqtf9;^=GThrF&{(zJDlH;-Pz#u^S2nBlu z!O3t$iMVSLjBU=WJd&}0DA&IeRc}yG3*uSpstOXSQg#0N!y@gp8cBOR^#?U1gy5F+ z(WkEx_eU~9B-p$}Z}xhB;_`SRA|k5P>EXtGd5deEvSY9`UOm(rJ^8s6xL#^ta31(x zTAx>mS`9TdC@?y)d4K%>MizXKq{ecq69b?-mB}WNOvP8ou2-&Owe+L&;~hx&m^_=5k0qqbT@)oP305J~^j(NkYV@k1>gkH7`Y7?x*=tURQg zKWGcOV8Kd9YbFm9n`8fRw7VIZl!2a>Hm}UuQk2k?=e+Q+zf!ul ztbWao;L!6_m`VEm*Wchk(7IsxZohpWOGr;mkJ#q}wt(#2Chk2gWt|yt_~27j?!lw> z(*Qr}3TUGz-|Fv59|ka6;{Mv{u#U0?kRw)aeVcb75NKW48Pl3WTj0UB(1Wp^f%>G- zj)CRQ&_7|9!}Vd2YG)(m0Kqf-q#S>3?FX8t*xAM~;rJx!nVfwXNaS9Cr~<+v;)8lV zxufk&y&<}A9v)jXurl-qTzat)VQMNi zJSHYx=N*gO2S_=nXHg)-hLSH1DG@?}q1a{uk^F&%@bldO?JDIrpf~#i`kAO+vwZHm z8e$eqfZ|A2nVSd}4F-}IXAW$O+!!zbTOp)N$olJtGsjhp6)M{UJ8?bSsIarU*TdXl{l0L0 zJ$yc1n&fe>-CcUeUD)S4hR=w%v|jOGttf;w0%0xE6Tp$?{lrnhn=m>&GJkA$$$4E} ze`nv?_?pY{zRkJ6ezP8(Jq09`kzD+q?s`h{`G_khvI`xCiMZ?U!^5<}Q^Ov|i_HVF zqA#r`HG8)Nh1TT^joP=JNshCSD|mmtS|%lF)4+P?3~&W_?bm4V@@+Y;Iacl-)GPgy zTYG=IpFW<@lCSRP@jSM%z&}mh`SYTL16zv=8a#Sev}VBRY(5L}83!@7 zH>h3XYNgh3bbsj9mC^wKV8Ix0)A=#n;Q&>_8|-pARJ0Onx6{MLj4K{Fa57F5hpFdmH)+-cX{*_lie|a|U z`gnip^t_G5NI$nu7(4tnRh+S0ynA$F8!!2~Lx{G7Fz)*5u3^DhIo$=2z^l4H4>(A6 zkNAA8pBY(rZEA5xXKKU`*WyRxu6E{a#=s)?vi8wYP29W=fq%bOpncsQ%P@al7U4^b zXSFE(fJx3YMx(=cg(nl&%yNt4{IV7M#iGh~*K_u|@@Dsw4DFY(>5zTZSbTPZx4usY zzkwu!{`dWh&rNDu`9kOZ4*6B5GX~6^*SG59H!@cDpWn@wlQf~b#l`{zDlpU|gB6ogfNrI1A5Txv8mHCr>BOdo z1o`u!A2V|Q43LCl9~8S}0ogDEENia3Tu%45@_mtXBwj_zqDk?p9XNR{EGdfso4AGT zbF;Sj5p;w@k~tCfuLR^VLUdD9JXSG%?3sZpmo3Zli@&OfqV{=1r6abAXFQ7m!vdq{ z?6y0m(qe5x`2%!J*wFrHJNq$qG157|4e6V(% zH&^4A-486aqO7!Pm$`dW?#631ml&Ruv-qrXh%Y- z;%M&Vwi&VtJ+=&)){KoLN~$5C6Re^~O;(wjuK8Y-@p-$u_Q}v{3x0ZPVbb}ym=CTW zuYYx7#t9LqnuXq@W2De@ft2Z-yVmwugUwzasLgnx3o;V8@+#%Gsw0+#X6Q2q!9j30*vzQ45B>ck`oO|)U}4cSgzQ_5ouWjj zETF7^e+);rH=Y0Tb{~x*S>D#}_|8&6WPpiEx7C~E&va(aV$A`1 zWU|?IZJZDd`_Tkiwn^hnmpYwDGD99z#-v_Q3k; zV1>!h*(+x=4u&KNfiuyE9bju+8y5TP=9n1G6xGIONopkhG!QL!KzexahM55%QVr|@ zIGK|1$h1NJ<%;8~Ku?cATUwfou!ujZ-OC`zPPM~sg6d#T=bwKBqxY7U#9C$_l2fK+ z#)8eADM8XaEQ8UA*<}fReWDEsn5L-qMIj^e1vO3?x7gG7@?&p+=lhuW7c?TbtPV z>zxR1s-%xz-j8qw6cd=tmmUy^?ii{x2*=nRUph?)Ca_2JAZmVe?rUI{iD&a9wBHlY zS~7A8S9Cf!gs&%LODzjz5SwG@{LUZf8)e09S~xfr$ zvXK8ENflq^$Kxibe?=|UAbIDbHkK03_pZCyLsDZM3g!`9iF8AUp9S zml_{W7Q9oj9EpB-jbJlMnGgp}LEBYC?MgX1lC&f6$S6+ZmxV8g?}T|S5MINN3Twva zILU#ZOrfYvWuR)!#@)_~!_Ik+%}O!ZbbPotM4;{M2q#K@xP-Fxoy2xVGhG;`Lzo;Y zoqdF7auM!@%f|SI6Ph>=leSw0^Iv0@%29@|@kS1u;X=bBs>uU(udKhD>BB~IGgg9= zD|IxT!=hk0Mf@oT=+BO6Lw=7*bp&hW`UqNQl6^p(S9|8iU{_+*2X%#H*WKTs{6!_j%wBdjW4TYC;LiE4sv|bD zVLR%o8hl>Ei&CVow(sNwgv%!nA2R^#p{Eh^RUtCjQgso0#xmH=fDr?ccpG|Z-;+8AZZ|; zK%?N!zJtNQ01ocHGYRL5*V5d|ua8^Mu1gv?#IOB^>E)_UArUcl9a-pNGB>aAF5C zlalq_Ma0200}(bV&u%*rJ8NO*c2j;3e@SJTE25v+eb$bfeAxtfb?KC)xMU3W=?omE;x=rct?Q2#fP1Dzu6y(1k1d<#orf_-Em`lKrSl0~6$SCYA*cIgG zCxBTdAl_1|ySKi;G!VsD<>wlx(bKcDL9!K^axWe)af2Y&*Vfk>-7Efvk`SdbGB9pz zNiY=ySNDt+o?oBd1icmtVihkOtyGd|#OL0DgNXJrv!2-JsTaiWZ3^%`^O~sm*oRMo zrNb{{uya@Wf~3-j7Fd^ubl--q5<%!xwtE?f$b7dyws`#c9KftXe+ zFoEcWqNVeyA~?`mMR)TJZZic_Z9LYJzP1yHsn^dOob-rBePwH_d$4(_T1DIPRJ3-L zJRV-Qus9qS-B!H{N+5tH5N|=es-mT+#0ChU8$8AF(`QsccXaxGeTE3H3_$s8S~#4p zMs2#J{Vy7E;^7sPq(uLO6exC2d!o{(XS?(&T&A^v7OI@dH)Nyq>72;+?9Q(pSiJ&m@$3Q`hql>d=tCfXCO@v^q?2L`5r2fYyn!3mD%e6Y0opkkSxS+ab zMpE)F444pP;eu#gnQU&3miFudt@W?w5$H2QkKmW|+~jZ?W6wpwW{jUqmqy-9;t9J# ze6<0#XeY7?MyHNn*`t!Q**&^nST)v@|EB(l@8Nte!u(^|f{}(G8Fje04dz12)YQ{2 zw-{BC*LHY&@V3c`%{H<$XYX;G^!m!HK3e+1CLRkXR0jO9{ll^8cFfhneM`&pId|k? zSJWUdqm+ahgTqSq-TYqOlqbXe%0!Q!c3_6On4G-A!?B>6nu2Tlfcy9x9^2z>;nv6u ze7Tb`9QOPzGi-?G2O_25KYhl$%Pr0vrS+|Y#p#TelZblmXSW_(YDx&L^ z4x2vSQhF$|I&}Bj*RnXcyWcCGNl8iUTGb2y48X;#j2&I){5(?LpB6f7ZZEd#%D=+& zAp+Xl#pmsI{ka%3;C_>n7b)A+lCH*LSRDQ*6=}uJ^Cm7-lJN=35Gs85dGho)s@l`g zGl*ECmK=HS=XHic5*TrLo^))d6gVDDRA8A}SfAcc<>-t#>?sB-onNc|F~cZ$HB#bl zjEfMqSIk`;C2%wA?*I5Oo%tP~5e0p3Q8O8geDBju_n&4(51Ag}FOdhxO~QaPL?Uzm zBWI9m7C1%J)}~b&kMtkSGZm$h3t#9m5c}6$T%d2EdX{|b%Dq%a_`E(!DL-Dvk)<^d=^$;Ycm5ja&U2R5fTFbR}T>YY`Q}N4uk>uld=_XF^-0Yw!FCLbvH)(qqT{N zi^uJms$TDXf z@CS%m7)tU(!CgUWQWKzW`f2|7w4NQ&tFW0abbWOMO!@(Wxc;Z}-76dhp# znqo;2)QD_^$CZ*4KNJ&45~7v6^MUPlDL^0?_`$`|46}B`)$s z3(wjK+%X71!EeAtV%Jdgq|J4EF?W8*ys#inJoWz_V@K|pbOpA8miJ?7rxVl+2~OX= zZy~|?VZJ{>bdeVe%ou-88Egabeq{8rp#Lk;&GFLxjqaq3zj0@0*dU zlsFbSf<)JLrk)^;fNKMhiYoL7()-@axsjwM#;~wU31x%9D`hf)LZ~3^kYE!UQ~ijo ziOYPF6XfCvyMp`2Lv0lHR{~_gSpR8}vTjjH7183r{H#Ikzq`vPv_e8?+cTy}t2;;P z-i5Rljm0YvS#QCDpdJ3Wio_`vNHs8O|5DiVi+G2S@uDI@BX6ISRm5N84#*Eo1gJ{} z`$JRtliPxUDutKQ(@^b*SAKuyD7dwtH{AV!+@@FF_A}s>Mn89+^Ydk3lhPgRR?H4l zWLLNqN$>k1?=W@n$8zAqkR6|wBjnAqULQyji+8%qYC%PMI~&qceO2h&XqdKkU(Qu5 zV|6Yu-R6wfrzh*5{-4d?eQn(Ay}=&R9KSkk%GY*mw)z+n^K5~+PG$`cJZNx^2CRqA zl~Wz0lv;dCX1hp(**hG^zA>-3(5|eWm^#4(gTQHA*Ep;suAZ2^`HN`ikQV_|w7o$$ z*6?J$x4_{hJC}HCABWKcxOl-t26k2FH_CIFyKK*OUPHe#JAC-wAtD`ck1_+aG|F<_(jdz3z%>Y9bp83p8Q+#U7#fZY_Q7p6{3f;>80?gh~Ji>#&g})6V~5 z-nQSmb6Vort2REsqoA{&3RsKijMK~KZNa(c6&@s^exwzFDWp++R%0}v zXeVXjVK~?ePkD__1fxG>;qhUMW{1!3Q&;($_~VKCHQ&MSGuLwbW@>L-AP%$K{5kiB zew#h_t&3vkK4%L}l&kJmI5f1;7RV zL96=rEuDwF61yT}SiTB41LZ7ZA@;%_0f=FJ!Nnze*44P9e=MNTAb3QhlRJP`g8gSX z^kF2BZKz}Fudyp)wAI$T$MCRdrrNEZ__a3L^-kL3l>X36BT#X)gkCIU{UNSyI`AHf zee^|EuY^0|EO_Ry*hd5UH6?gYf%bc^mIq%uq6b2QT%L(Ec)-JbQ9#JO=r{hRU3T$- zgYD~fd*M+Ph~b(|9!g6IqF=$T_rA0`p~BUe_)23aEm(cSa^x$R_CKCBAz@miblAC= zv1mFr;sVjV<{td#Dip1|J3vfh58aKal+HSHNu$$Mc%k@jaSnYN zZva75i!vff&Y7zL=7yrGN2kn0;>7-eBEEvIyID(f#s%vcy&O8q!T;lw>;Lau?Qh(Z z_O6c*@*T(j^2^19qy?+_b^ZTm(mDVD_#avD|9$em9{(c?-pEmp#?{I)Dv>WHgAP9E z`V%Ge3dIr>s*j*@K|o1KqiL>K-Ufj_p;DtZ&MNs~dl_9+>~FdK;MZ2?aT>zwep^|W zifp<>-J@8j*Ke={6tt46Z?9+im6w>I4o#exOyDY_b4+*=)854FBxtFTimGjLKBKa> z;(SY9g@IB_z6r$k!ZJoonJH$pp60IzdTOE4>-X9ifime(L$%obmwI(IP{-Hhk?T(Nd>E9Cc zq_$Y1i^O&0+4jNFUNWL23YYIOV#jPTdH|O?I3}PwUHw!3WhqNWAgK(j4e8oINGVP? zv_u; z5pL6QqLApNHZ-je|97w{_S2a8#DDO6XZ{tC!|Q8bE%TAPQ(-|R-cPm>I6HuZw(0h5 z(6Cj5WCMJmLF@yYi=8A0K?TE#2?TfoU1Uz8uh{t4{Ip=69B1q{E=eh zahW+kx*Ts7T}D~+59pIRri!ca>Pn+VFX)-+&Q9MKwu`oLPS&yNb!Ur{k9i5^u%Yog zZYbF@Z}#494aN-$MS(>+MSVft%9M6 zPMl9(H10m%7R^j1uL);ed5^u0sL8|y$5dFDZP-lSAwMeDiJtyY-@KUN~X?z$4pcdECa z`PjpRI3q`I-(;rD!d*;cbj#uYCGt?%Km5sR9NKE{JB&wHnz6=>OsT>xC|D?dx^ej_ za0Gu`QoDX56&PUBvo$1)i?1;;u;ZX(b7iAH@E0$AQebl0$mY8Kc(3HoPBB8=F5=p| z=FD%MO5MoFzs>9;`X_%cxft7Y84%@(QPA2A{GU+(Ac{*As-r)^eCng@2V0=ChX)36Cf5eHw)h8;N8Uc; za4PY1VPNLN5~3+aHEYbZrb~>p&CR`YbJa{0rCXs$?(lT}MW0Ts;Wnc#UOC&LjE{&EC*gV_op) z%W%6PS`cD%PEneGyzmvEb>HKVu-gz)Twpfy_VDa9K~#wO&VnMASNdOk+zmp}iA}cA z^-pe~!6OIumyUacBU60(WL9usx@eNl$p`lFa~j#%8{;edX7{5zpBeGUBw`Doq2L;q z5t3nSCBFjPB;(UW5+L1GW*0)^Ekv#z=nbRzWq6fk$epysLRnb}FN2t_lEI_7wiGe@ zIc&+MYRIdwI8h5PbI57Tsv}fDf2pAWY+pTfg!!cxWb^1|)cnc($r=}D}1L39o7)ocCl`1V;j8?s!8%q zveFIsJEUoy{J6AxDin+f)`JfSS@u-!*W@WZ@KeGj`FRnUYdME}z?^1c$h?3Ac5*#i z__+4-)q@!Y70oCa_@h=xM@F~=d1QQhg%PRlzS4y5JwXAKZ^c<6lY`T-2vPr-uiXa` zx5i+!I{CB9ClkrFbWNXd$}MW4{{ru zW=#>UIr;G10xzecKxpNM178}w#9bB&0d*}@T&9Ro)WcCYU%W`n4XrZYH{ z(@q#kTLvuZL78JorM{V!<&!@xFd4`NUz|}#jHEG-Q03EY?L6n*JQ1J8Z2xL)7}iP4 z*zGuUEL}DAn)kj{q5XRSx3!t+H2(&Xom>&-(|9gAuif}O8DcMEVg7i^+pU$#C3VgL zUdXf9kkH*+8G8pE*=<;|Z`_CDqMY!NsWJ7h!EN5Yq~42RNsG}(1Dz8^*|~rja)0Zd zNav={^ks|L{EX`_@zTO5Tf*#}*P6qS;RXSs13d=0hEtwxd+@LhMfY~K`8oaHsv$?s zDSvb4#aYemaoV~|*tUyjORm$Y2eVYjf?r=dfH#>hJd*^RB-VwK6xdJpXcmMO|s z&YYtV2=tB@C;U20_GaV5WU+C!j;*+T50|c6I*Yf%bS|3vQ&(pbR&X1NPq~bw3SpMz zbGXO9UECKKO}mDflTMFoJ8BiD1AJC$xQj4aUi4uv)N;6 zOHMIwpH={yB7s9~=65e_US>~wsJnzyN_ z*9VhZz6X^>(McN?C(Fx42`>}VxRSus(=+=w6HVgZ+NJZ+6eGEY#*}_tEm4yatNCj< zHDNquG?iqnYGot#d>!T%tOJu0PhUlOqD=#eaY7y+_G70yohArODkX@+nqavkX*bSN zLczJ-kK5A7XK9})c4S@Zdix-ItFOc&;K{hR-S!9-dbeB>6Vj@`y3hn>16dwgG-Sv~ zX|0qkzgA8GR-U3&e!kXhqcjcud`0vgU4+dT#Kk^_gOAu0I&TSJ+Hs)Tp}PqHygm^l z@+K03R4c`495LWzy^YA=@`zw%=7BoAF*U>;5sSP6r!h#38PWn>i_YY8X8lCGTb|G8 z5MT>JAyEgwjXIrV8M*+y6xI>5!6t^BK~Uxc?Z$STqtIursD+H8B*OyXE;^@KXO8T2 zXd-^(3ZDuD@nTirq~O@=h@4jJezIK1G|ko)7W^%4ny+~v@YgUC@_hV);nWPs(w&7&($OZI;;M3L?w({g zSKhT?lkmj2;p$!Sb7!q@R`bh>Zk3H|eqe7{gnS4r`q*)IPhLtnYkF1gsP5Y*xC&&> zh}xHo(Am3VXoO!^v!lKM9y%nPHAmoQsO=1$qBEkK+8x$~^vHqDsqG z2*%H!!l62qE7XKCQHGyQyaEkWGGpr_BEUD`0d6V?mA$*eoV&||3)lVzCE}TK2e)aj zx0KLq61r(%+)E?ch#qs z3XmP2>qMyy`h8Y6%uL6Gv3>1uzOZZve9IeRfsjZRLYnpsU{z_xWsG5Es;P z4#DX_m^B5rO}pqEyih^2C!eT0abIU=`BeHmsiz^6#cNYL@3h9_BHyfL?*qVvvc{(# zvGJkS`v^VU)|+MENNX$&vA_oGu>9|Uf4^n7p+h^k-S;XbL_2%@kNfyl2#|;h2EeP&H-n=Wz`xw9@t|_hd28+GHXiElDXQj0p$gtsS>jiK_ z6Bwo6tPmXS!Q;QL5F~3w=dV81A?Dv5g1@Uq%vn9WX`AEZ>OtrKN;*0n0!L_{;=Eiz z3m|jV2vf(GIc?gU)$VAYb=t64?q8pPAGr(NJ}LRx3Oo|JFBRf7z9rt(fOYWwahLyO z<2-&&%3YpmbQi?Fm6Cdq?)Ob1iDRv&qhD__mGxKe&Q|6PF#&Wwy9X*EBx9n2#jVw* z(>x&rtM9*JLx*{ShM?s~{u^T?%#n`ry^u(QvKfQY{vf5 z$Wx@UHdfj16p84xPAYvSv=qcf;=T78LtWOrPpE^#xTo4ChcC)s%+DBV#kWz}!*CkU zVYwo9_qbm()HPGy=T|F?XwG=)CiF|04eZ5#f3M$LPswU4FE9V|=zN!ZU#pc`Z_?sP z<$#%f#GZE9HjA_$tb1afv2p}|q#xf1 zuEG<1kr5E`$=dOt?gg?~Rf}BwDLpl=1z^GB==GZ6JXPlgGh`_#s`N5uKvHw=L5sEV z=`Rg*kU=aPMnw4+x3w`e)i_yCKc2AMGnY2y0Bv>i-{~gVF#fZ{ zKM&PUcyQDmo+*m3g>G+cq8c>zr+*>C|8!!RUpAbzx!0NnIWjtTB1f264`?1fzmF{c zE8%tQ@1JW{uGJ&Y*`vxX!C8)6vb}ko&|`Jlwu|s9EYP!_nfe2#`}|VJHxiOzM_^B_6Vo z0kW)yUKd#64=Mj^8sr#pK zdSvuW>)uHu>a$pGnbkI~@_T_Zx(1p&YGBm!Et?a`WEHWWB{ufGdftit3WOsXNknI| zO8upd9n8dMyU*Y`h&*uN*)s987cm+W^u83DpUIfvM1}gdyu5XdyZxTB74z4}jdU(? z$T2Onb=HYM2gQi(waTE5;sEg>>l0){KyYf7^ov!~(bJ!!nCr#dlWAGU%y2^1oIx=7ekJ>NR-!VFuQd%g)#s(XIP#l#fT^3$9ok{{? zrm)}0UYdi14}A;=+XN*HSJRLm>e>&3=HwS1UeDmH1eMJ>qj&4Ck(OWe-E~s&2anI{ z@E)^@wdz3=7NR)f3e}o+5`brcxJwU${cEZX2db0y$_p>A$OV}O42vBo*Xj-jvxK)4 zoSmMJ8v&7WD;Y=VWyRG6*)-=xYKrwg0uI$PNhw6a*~H$h52%%kV; z1_dL#Gq6{WhK8B>b^|3W@v-B=@fV8tF$2PvO$C+s!2qvK=dS=JUz1%4 zt0Xq?q~_}ji`-w%`W@~Qz5$V#H8H4A3hJ%BKJ!EodSgMYAh3L==o7{ytFG^CV?_jj z9>7S`tDTr}HlVz@0Unx<$yu*DXN)hs%zk&LcFd|fI5YB!tyxurHD|1kc5_qb z{%+c*WEv$@pH^#GF((L$O*z#^>!$vr3G3<0B+&nlRtx4L!k~lYcNtMrO z3?y#x=$zg;4T6cI8qECOaI-m4&a~+AZc**(BfR=t4Yn@(%$h6uWmCAEb<60G%)Gdi zj}ATjd4=;fmeBU4L3_5VyaA~Ytlaa$#-wB&5MaK-#+GFyEZc2S>GFg5(_h_sA>tj} z_*BjPPnP86q7S^bXg)R=zROyc&XPxZFuOD8OgZ0dSGSSRiz{G}DS8_(5w;3WUW zGAi1R_gl(- z=eCl>B6I=EbAv7ClD2h@|6{*aASntLNYZF1sHM8<2M})mZG$thqaufZlxKfUAX0$&O zM?LR7ig#;(O#4@>Ihhk25?r$OX8#Yc`e8me0lIv8UtP(NDDtUWUu!Qg8X#b8uYwZL zIw0d;>*?uEuoDi0>#n`mQ@>6I!n{fOsIo7GW+6xOdm?jkGPlt!hYK++kP>W*VwS(2s8w*d!75)To(&Qo$YGp>Iocyq zz;iZ4YoP6<>;;v*YMplh>2?lFF^}9jc!a?D1H(hB<=3qxGOAO)MZ~vR3_12pJ7nnr zXTmgv%km9F^Uf|W2h2TQ5AjuA?XhTxC`b3xbgozX(HFsvBP6?;piYr4+! z`;}hhSL5E+Pq=4rA1X(I7LsH3_(oR;e$wMht;X@O@&*)-g*SS)yM>(p`a<~&r@^Fz zVxLe&PbVa3xuT|4A!@d#CZ6qua{S#pLQU-)r0Aot+GgN&yE&{MTw%B37wfLV~@War2{ZfY*(@s(RLcBDJ+vO z_Lx*4kq$Grns+zZ^iGCLp@-1VTd`H>wjrxU z`6MvCuw*E0cbG8N9fyzF?6);5;#5F#31{Saq`sLj&GH< zR!3w46t!$v86#wFGlTY~_;;LH)smKr(pxdgUVBfpL*0M$`s=&WddC1$K%NjXuIa?B zH->66hr^#(`tDi{lcy}T6Uv~0t5cp9O_>X zWgtoehw?5`fq)Wt zgC@WwbT5gJe#`fyZ+66cjtv@WQTb8&^F%qEmT5wngL=-Qe3}$Y-6-k)B7NB>sD@6` zD0yOhF&ao0WHpB$xO)iLo~^y?>z7fg5Rr4N^QX%JapTev{5R%B{nSEentK2#I^~6QHI<3vTd+z zOzGCn=#OvFzch?sie214jq+bnTW_QQbp)^)ZX>^5-QY1t-D#pHK2*s5$lPtqptZ*ALr_M*Y_o6`MFwo!E|ctftJTDKXu zX^?HBe1FQ6sy>^sV^!bDS7PafMv=^xS2aZo-gl;1Jr Ino*zr4^ssNR{#J2 literal 0 HcmV?d00001 diff --git a/Intrinsics_Reference/figures/project_process_non-std_track_graphic.svg b/Intrinsics_Reference/figures/project_process_non-std_track_graphic.svg new file mode 100644 index 0000000..0ebe6cc --- /dev/null +++ b/Intrinsics_Reference/figures/project_process_non-std_track_graphic.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Public, Member Confidential,Work Group Confidential + + + + + Public, Member Confidential,Work Group Confidential + + + + + Work Group NoteDraft + + + + + Work Group NoteReview Draft + + + + + Work Group Note + + + + + + + \ No newline at end of file diff --git a/Intrinsics_Reference/figures/project_process_std_track_graphic.odg b/Intrinsics_Reference/figures/project_process_std_track_graphic.odg new file mode 100644 index 0000000000000000000000000000000000000000..21c8e578ff5ff0ea9f3503c4760b15a8b536ed80 GIT binary patch literal 30855 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%0A{&Uv$$yNW-1r-tBS zK6uLs8TQq6s#eS6r0Pc)2@g6&glMiPEU*%C!xn1U? zeHZJL+9@ds!BsLGp~Yy*$%|Nzb$)uKauc$$3t8k(y1$xC);}Xxoera|dUvTPsR$2R z*X6cdzRrT)5XvzAPi0>LT-TB#YG!6T#+WH)j+vP;j+vR68DeH;X2;CT7_%KSGc*0` z+5h&vnSC?0D_6O6>R#zwwfg9&TP;b60vcNoqG!}laK&76UVFQijzkmi)a3?kWcL}e zYiC633aSG_*R)bXcL73L_>3t(;1m>-R=ErrB8GQxB}t14db?r+brW@mbZiD*g!wF} z%?kC{2QK#WH$%4>;DXtMNW>!p4eYQXZI$Su$l}|ssBHSPc}ZT0@I}6mcfi)?ZuU8` zUW|v*w)X-ijs_C-S99oQUZh#`c(BM@N9VE|vI3OrXAp`Y;7gF&a6NWE8#wK8R1svb zHedmZ#ueKF9H_4WIy~-KgOUUNgWzrW9l>yL`V=^D5M9Hju~#m?+ww#T$PAiBIiT_w z^M;{9whqoOA+RLV13Qs}pdqkuMS&F`BG<9jd+>pJZ99HYjIu5Bb!q8+E$IT)1y*D9 z5cLuAi6K%l;G_R?F>?NXL?Yig$bG*SJeah*2nm6tSvh0&I}$id@YW6f5V7g&S-!!j zw%3(DTe*neS*Rp|Sp3pL5?Sl1JYsJ>_SOevu z=-S~K^G1&y9WNXyWqBIdYC{xa%ENZ#m@nhW?q;UIC3?NI-;uBbCkTgV`!- z7=p6i&O5V~pU&I~Jg2;tXJ;9+6(~!|Wy`s%7esUV(I3eX@a3tLLQ|UIWWL_qbTZv? zX}RBnVxwqYEjF5s#J*pRYO~(C8eB$H@`=ido)3=aXY8FjjE2uenBf zaSO6ucze5J-Vfflf*|rZRH+ncU8lXr7DSzQx?DY6wuIUnX@7MM+1s&;VBk`B&TXh{ zFIh^~xVr3y$6UcJ!*{ni{zf+%$`y(B^uWTCA z%=b{Z1pah0wS61t^MVySv+1SdQAz4>z%IS*IDT|JlC!7OOHp| z&#kR!8n7r9RlEzuQz;6uKPsHY6}7+L2J=?x_u|Wif_>C{7y?S=o_ZK1mwma;(vp^( z&0M>TA#DZ0XLmQaN9bFXSJMEQed{~<<xTapCGbvF1xI0f)Nl>K$8OGUfq! zH7JKiC$YUv-6rgA7Wa{~_*ra2-@rV+5}X_2okF@&e~9CQ9B|`~dQH{&X8F+7A!zG5 zH+ruAwEUiV@o=)M9Cub#!ddHi?ZXz$RVnppU*2R)aeo|qpoWDST$pIZ=lJdXMQ3tP zx@fZD>($MD+*m5O_A5r7lv01c_dBn*Sv?lnWU_rn&BT0{Ax0ui%Q60s8)dq-a4wtA zMf3|b_RlplH0%->br~hr#PkR~A^nut=~8(rWn^O-2F%!z1nhFmmReR$%a2S&%Ie`r zXfea+u7QELyT=F46)rm9hu0u!p9YacER^XgpguBYiT$gDLvnz#=r|frV#3VANGP)g zQ@?SRIJoI17Ob|c!()e1TP>axw0k54wu}KR9rXmdw^}o38J7f5^8?@s z(KFJcZNC1{!H0SP;XxcLI{h5CPg^j|r`?GsEMFCFeFMAmBj05|Z=C>0AdE0qFg8g& zska-N2|7p@xGLCR7cJDCII^nkU)V^(~p@=K5#UeGQ#N>Hm5Fm9~AR0SQW7^oB$gRU0bHIJY zH3k;KgYOr;E+yZXWfYJw9V$z=rS~BR@n%Lph}uhyDzg&0Y>1xVh`-h}H;Y4p81(e0 zd8pS}B8etEz)OX|oq$Dkx98u)nV3TNlo1wMjuk=WVrI7BFI~Cb1#DBY5J7#Vjz{mN z4~S67Mh-JF4f5@G>L%6-Ftml+#&pW#*>U6lNh8d}zS=d5lRjd~nq4a8KT$45R#5Lh<=t;!;uc3FIhPrAK@FUu9fB zD1nNdc{j8zI;c;wVot9P2Aq?MLn3o_?>Z&}tZoN4GyeeUgDlW3`siK85boRE*AY zdr?~bT|oV_+=z%%aH}f`Lf*KB`UcTu8r$m= z!F%!(?)2`7Swjb3>=(f&fCA@`a29P-q{y25@r=0=<~ zk{a6O5Tj<(?*z0jIPM=y8aVg>4D&oe!OyvyM58u>QL*z5`mliNLqR!L5ztsI-+Ph( zUV9#dZT|hE$MHf{RaqIA%|=%&sid8~egDJMbVq9q2;d9QgvVy}PyLwMFDE}I0crDL zFnmBIsryNQBdvK5HM}TTCj_oL$b3GvwY8=*h5R`*F3{Q^^>$zd{hqBQV9jlTE!Nsx zHyrOyI4Hs(0O?u5;hT;E3j#V=30J_C0AIzNNUzANa!RmVW)d^WDEZ;xA@F*CB8v;w zqGwu;C@xu>`X-9xH3{&<)DuP~p^ZD-U4tj;ulH+E99OBJ-19uKNC;8@oN^B7lW;=tF~5N?<`}4(a#N0EIfu_>40<$G z{5(zQyJ0jG61+=yfEtuh;D8_lZ|lZAnjO9{q{)xfY!3pQR9MyEM3_8Hh)|$ufsH^3piGtA$G!`D&=68knz_rK^6AB$&Z)BOxdFZ_3jsD$c4PeZkeq8CMt}ielED( z5<16p9Mx}hyTcWmbBoOuB2XZ~eA|zT8X-7-xSu6{fc8LWfxJ*v%8j`m$mlItXibWs zQ4HG92h{*$Bob9G()jOMnkM>nVT5@1<^&Kn3D9x9joHO}3nNGFl`UTxW2TN>+%94B zkPvH9AE0D)iDc*cGF3BES89fzX?PjisHfOa9T?4~cc21_ZAd^_E~;CvH>eJG1OHC9 z&UBzF^x@Eb*n7Cd*$cQ-a{(31FFN*L2fY+E2x{Vx1y8$YmpR)&640(8S#(uU_3Yg5 z(-6tjAEG^2za=}x@saBQPVTTMIquU)6aDM&~&oNE`4ZSgaU$GAKl5nS~7akUhne{`Sh z9GIbwUG*?=F^$X9wJ2``uEHL9>#2F-a60)SL#{~AkTe+R@NUmH`X3|8hXu^oV(tg3 z4Y!?#E0-XaojR$P#3YN0jraZU>uXE>BJ#qvFKb*}1g$HprzaD?YU`95V3b}Cax11V z%qXE^l7f=Oq{R9#QTb4ByD@ixQ3<3x=!q`TQQ>%?B&1kG=t+I+ zM^DbiPR0NQpD;_~CkE7rfE)YI|dy{D!e#s0V@LUW?(r&) z+hb|V{(*ouMlKsZy1z?zZw^j&(>HR{h5w#cc6%w=yd%CEBC@;yvP|{BBL^HG-2BAg z6N`hnU|}Rk_`AXCX2(aPiPW)^+sk49*7th{_~;JoYjYW{>H-m1c#7npFI5!&a@n2| z>w)idBHve#n-H7L=t%S0&NIW~BqsdHhpA1z(U!3iI&vA$z^3R2rN+!=Kp`tsQdbqX zP0ySGEbcb*6HWrFviB>0SNi;M|lz68xW zH3T6vW7<{tY>pnvG`m zPemC(m(!V+0?Zf^<@W;^jIQ+!bG?CSQu=rt4>6QAUAYO}fs;Qsr_#?p2aWTaVFqI6Rsu5A6LycLYjG>%I0b>&@*5j>Wn8{43}({?&9*xIRzTK4 zvcOlaEufHL&&fxEvGZ-}(ERLk5<_)j@2%%b4M=qp&3s+CT2~D`0nqAlDT|m@aVE>d zRvjL!v1-M-EMGq-4X6d{nYX(RHp9z)JEMnda8MTwO)5WDJ6hEn z46l|@p*je;g8j^m60(ZOn+NXS`)KPo3g z76{U;V}-1))V*S|HdGg+Mlpj4(XB3w+u^c2;_1quFU*+cvoa`FQN-4f!am%Qx0~@O z>Ed)_XS=|MQUaPtE>x}Cx)*{RThGEuZ@@c`r_(qYFY?m&g(#dpg zvD!|<^8PFUz5(>;7jVlAe))*Jv0LG~I8i`3K4i1}x?$FXi#OMz7m_wx~x(S@=Smp_+1;5W&GS=c6%g!!u_n2RtTJV&k9j8wmfXN*qZ# zAQOSgCxwF6k*1dcF2uMX;@Lv510p$sZs`qE4wzj)3XV9#tw1|iwk6a-{3%vJ)8O^AGUz~`F*^X%`E;TDvNmV-fVs{}OG!FrLLE`xg z(x6y`s;myO-n?(qoa^$nQThT#!k&_qDAX3qN2hjgs|mW(npfobqQ*mYsMnV%yWYSP zwnvCInW|bL=g_7O+MTqxoOwY>iPppnD*-P=TwtI1R-|{Ld2?%l%!8pY4=O{Z=plYU z0S|fj8uxJqx?(Bt*lo_G)Cda41_37~IXl!5`W$|D(KTPjx1lKEQo6ZnK$EG8w4g1( zsWu0g$IZ_+DCkz`IFaq1lap1i_OyJzqxr~`)WzKzd$2>?Q^|4lw;Ng-hj7DjLP@SF zLec%^9M;Qw!{ctlHr5yf9rUQ_$Zz}jKyS1!O`8erg?=Mq%3eXeL@q{jK+?WeDE<>w z7P~_bfsEY-$eV@%3*Tz9!4xfCRSwOB#Zn_3E766=4@l};n0v}9<~U3-=n`E*7ffR@ zO?q&>nYJyw#USd(sUziAsn1otR$^ttZzO}V21%?#%!!`Iai$F45V@@oPmsYVte^Vs zVLF~Va%p6?9MivkwVlp#=A9p1WrQ{As#Lrpr}wV~Ykb%goJ`}C5XtH!g$y56&0ZZd z?^WNp-(5?nwqJt%35|-9Tg#`47;fcBwo4!<2?=jw0Y0wlkDDh{Buhb0N{VOU^WQsMKbX(r(a@_3bi zsD;DoS#&Wsa~0!DoG`7|ILZrpwuXh&ZWA0pCPggyZOG~f94c%nRESv8AuqdL(2?NP zT4ZfK-gA&nws*r9sxlg}cS9sILSiq1pnRDyLWoRqs=*=Fx3DmRE3 z7DosWFc%sfXk)#B{}kHyhvxVQmr~Y89#s^{I;|)SwUNHYa76aD_Aipei;T)6=`Str zAx4s-_%Q&Fe7>%jCHQWk(4Zs8Oi_C1dR-+tNIu}=wvhi6;C^3Zjur4 z+-L;b(C%31Hyd}zZYYE$xR=TX8KS^u;4*Ym?r_;`oJ^&T!8m*q63Zt%sUBMs5Wf+) zXv*2cqg)%WRD2QE9lRljqu{FUVGYauhXgHo*eO)T0-%OZ9NjUWY+c!=EUE5L203h$ zQS!B#Tq0FSp=X+KfSx+~?84!0zw6*{8|+Q*_^v54v*hk9cRy>wspn0hM$e&2 zWT>KiMvxJ6CyH1x^c9R+NC>(>zzv%*mnegX0ylj&4wFnh-ZIP*Q~?J`=Uq>ViAH5n zqPV%8_w5-x_jdW^!@B^6-66A?l%6`RRuHDkC&8_f6G`P!TAM*cIa&GyVu|N!q{94* zYUAfnx|5L11H@Mv5=+^Dvd{zdqP^s)${G9bI*1GBNAW2`4MdMWA|B@25@$!Wh79%E zk)nm*X=E=6_)hOXOAvG+EmE&n$jderCvKu4D=&xrkR!gEzO+T0u0kcOjsXjA^DdnJ zx(?J6)?sQa&veOTAhc~a&V^qS;Cv&1SruJm#$+h5k42`4w?;+*YM$A5>YTQ1lEK9q zDpfZ;%MN4n{6Gjy&G;#nOEMQHpyoP`U7oc0~#VGgrt_)QPKR+fauDA|u zkrRxS)P;>9Ltljs$tJ3sXNlUff<>c`OBP8ia~4Z#&l@s8i-#B^ol`+X3fsn*d(t+R zQ`2AU$PI|N=J<|1p$G`0ws0){2-ZFY^_xz!w%@W4YN3}#sYw_&%eY!RQL9_;maWk^ zeK^IBg$Hhmw(p@&+l`=Sb(gApW*52~mS(J(9p;@6Woe%ro(ZfbTHKxx@G(bgysMAp zX0+;}ZiDSq&CPDbwL3D>zDpl-famkh|J=@OD2~2DfwQiSlmDp`wLEI;H9)(+yVT}p zM_%js_1AYM@9zh^7>Q2XrVt{l`?eh${+kaViEseVjJB^R!oyns7zhX69l8a7x zZ$)0e_Jr>_J+ri%?Io=KOs%t3>E2x;;ic~y>aVg7otvs*q2*1Hw_RMg&}oBv<^CAOOveL1#xTeCJFq7XttQdY?Nih z7RMNxFT~WVW8O0;`1tWTn>Y=(ZmK9rdmOxS5@|XF$&X+C887$2jbY^8?|X<((-=SrpQv_K{IZ%O7WRj^&^RGE|H>$ z`#oC+Al6|u{wWsbG^r8VDX`&rf?@OekWA`8%D6n_`jFOFYAL9E+{1FnrzSO_c{i6b zS{TBtb9J|F6_vCJQ-MYg9aWcWBAeMUqbkgM3cA^wSU>yi#^vBE5~Xc?2aW~}gcE)# zGxj<#GZ*vWRT-h}6N2p3cHy$cuot3h%Z5)+-_~LIaHxIethzsMuoaH0F=tr9Py&vqoivgEiyg$MT6ar>4z z4tg@oR=3tAP(QyvyZ93yD2E^@G&pZfv^6U-=w|{f9Wz5`;`CsD#rLPTRnO`^=w%qu z;J^fmaoBjPnBh1I{8R8~JSdHLkvu`)VW$QJ!*2SJrabv{WDRD7)F?WT>aZo9I+|D) z_Q0Ao4F~?-YE`t^8fG!$XsP%jsH)DGZ*!*JI!|1_!-}stM4Dpd;O>xEEdvIr4j?%# zw3-gnv-2G41-gg9D12?h^bu;9VUN|O<`C207&vrCO7UTt>cW%)wmI!t$Zll>Lt=N3 zhN^YNSt;sdT%v7J#=qW4v%F%c07SmukWV-bZbG{mzx3ttNNSPbz; z>kD-eUPMyzfT)QOwqC}MYk6446&}ZKI^x!aN%A3=2Z0~ z%1U_j=u*52m>xBi>B!!Cy>_5Bzd1u)!VegDAKL zt|1F>`yPx#Ow_{rT6-#*TwL%FSli;KP&oykW0aIfyC2AOH0UZ$2%LJvfphrBat8&|p`do)pG?PX`w0 zM6mZIEXXIw5!?jK{zPvdXR5k0mneG^Hwq%N<;v`dbd; zK5y$C9dv{j`N?l3Vx(=S+;4wKTg^Uep{Zb8!j|*@j5KRZTL4W!9z)hLkZ5+OZe;cM?w9T zcfLX?fZdQ^>5`~n1eGRGp8{T@KEl6yib1Xn2*?(dO3-WA{XWKH%Mud43Qud(Ki`Zh z#oicy+XpOVmhe9NusJ3}5nV z>kyeC{KQMWxT9=zn3wnCkxT1N9l^zV2x)N>2AkeiLt7kYFK|g_f1>pCFf%? z15)7#YW{^Z;ip+k6*=xJ2Q=sOHe|bGe2C1RY`hU|d_sB*HwoR(0@WBC?Z^-SH`gW} za02^zXO%=?q92J-`I!tkRTGZrnC#M)E_gCx&-7dmYKbki=oR*}Lz?UI6dgp&buCK$ z6nBt$n!jdin|Ir2eOY&zkZ#ftk~?Jw=CuAA?kPU!jptqBQHFH%`(swzL00SJv1f4U zQT?tunRdu!re19c=Uq5`b5;)kEpQw7K;r;t-qG3zYOq!}{MvR|D1Aom$7X5A`?J+F z4zhSzvaWfwy{?-&TzT+Ez~s1~BirS;`P&k2YmV9)2t|V7WRRwIu&b37%Y|g*+^t_* zSG=~R(vf+CeO=hnv-TH0TR8{v4OP6fV~C1Rs3*%^WT8d!F65%RwDVqJ(@f8qI4?wH zxov5RHTsgbj=?d;^D6893`(PE%xw5DVZYj5YL(wY7CI%?sai_YT1>ezH@_7csx>@H zVB-}meQ$;O8YbGH7j?`fN)!ngh+1uYA>~@zwugYb*4cVPK~Za<$gT(Nw~E) z>8I#;hvDjM{a?aGzB~4U%r(LRG;(J~g_ zYxznRvQ2AQkS}CTr-^J6a9{7f4905=pi9 zCQnfM%m(ipAj$3nLNv;~%hFmcM~~7XD>iTyv?DY&v}u8c1(@1SBCPembK2R?rouO1 z3HWf2icJSaY?4;m7? z3$cQ{k{~*Sd5UosuBtLS&To6Clc*<%#X7y7y?J!&AD>l{J zSrW~gzH=I-1#7Qd1YOh0T~Ly>XS!4F79m=9{+lb`!Gq zc@e!sQ^#SSPgfyFkb{cgv+yh~WA4Nt{zKjL}ds5_cu7 z{RBjO3_F&o^HFd@%UmDN$<2S&JE=9eG?orrN`G|Mlq*kf8nQ@E&~sSz29c zKQyH5$KD9tT+oaiSlqRpRfw||>2)(9DfK?bunC9ir6wA4W8B`CdrfOYksCe1B6B0> zhFn>*1A`sQankTjF2J?Z=V3R%HMrF3VF?!JW66#e)r*<|xV(jE82Q8%o%5PRi5@=K z@vU21W@Mly#PsQ@Wp+tKmu;`AQmlC;2?9k?lRCE0Hbr$Cwz5I7$Ix+Dyy}wQNcR+y z@Ljovm<9-Jakv+U1(CDNXeWM>fBUiR5~zLKXS?bw)4hf=skqHbM(N+p*z#rg&ud_a ze6zgxUTaSYV?k$uZM4OD!(rWKI9ARbNV&-93dYqcdcxbkQn>th^}#~CO~;r1*!Vx2S%3yli+1K z=q8EBF{)5)zfyvhBsx;Y<;S7-r9edU5W2jIiY)NDRLpEt6aPMA_mioZl%AHdI^$+1 zf&twz?ZMR4cb6M7w2v>y9YNKH1SRyODmD=NtSOt;sA5ym-w&HuKFMnwsFF%KT5{C$ zJktr1|L79HA6uzvD{~g=Y#nu|)PJe3e`efT?e3>9{gK$@>S}b$&hM$ z2H3n}61Fp6x@k^pQBL|Kcm)O_=MFLQvxYm%dTY)u;E+ufsZukR$|g>g$VU%cCPveb z44`>p&`ByHUqAJfv_g79ig81L zp=!@=*Er&&)XONP=O+;PEbRu`zC0=D5>d9Xbkwy0M5)KVSe3F8e#73cO^ua^Y~N$g z$!cg3D=l5e5Lo(d$rA4z4JmJ}5-%3C@9z6rd5UB+Yzx^eus9nnim4k~O$DEx>DK0% zE9k3PZS{KyHK{-rq*7c4MZ*vvQK_mUH)t+@AE^HXlboQRXfyU7F#wK6r&=@Ga`98V zKV)F1VukqO+Pr)4Ts%9qw#5<6x_6l9`$`dT$b&hv7h|G=S2YW^`>*Gn z@20pD>V20S+~oSrlfxhs5fxSZzS(rwi|M+a&%|mM+hpHD_JTa=sp}OdPL4$J41<}u zL4t>&*$+T_wWpNC%=lg0p`<5+>u8{~V7z>&_kzKkv z^LVV8WOi_T68H)5GOZ^=rdGygr4A8ARbS2g{3~qW4#rNve-%8BfuU1Og@r9w%ZplTHJ0Zqkwj7ay>~7 zPe%|~UXoCP5w@V>3eFc+rKT+19m!r<)5{XK48zOJEDW&1J82o+#dkbuQgKjhll&a{DD>>J+EL zaEDf{Y>sq5O@g)`N0X01huTMC*fdYPbqAf&J?nBFFBz~eq2`;`(PmsBmqw0aYU(z% zm#c;%O#>8|#Od6AB@c~Uhkh}JD1G6!UFlcP(RM_!4;rf4VwIbO92(RX=|w;8 zc>EunmT$k8j5D=3rM;W5jI%sGD_@1QE;gwlX{T`88Roh%WlifE-C_E|wMv-&x3phGIjS6rj-EWT zB5{?tNGENUs@{E=;}@SmYpkI$_DOGZD*Xi-3=6z@0<<6}fftTB$ee=4fzcfC`J9x_ zRY5VoM*u2OwwVe~4lL{eRR+exMI*;rc0Ty8J4FXH6LOT^xE}~AoEVNgQLFKMnF88I zICCX(qEA9u->W*UM`G;GyIeA(Kd4ui9uh05)3$1$Q}R<_512%2$XdOpj+k%y#^yzZ-3P2VDopzi8?2WI+eq zR9aYxpH^H(gw9ge%GAiv{vSKe6>;5Gy@YT<=bm99?mEY&0@7~9b>s*5KFH+4ApTuS z<12Kbvt%>zrgL_^i*N6UpuyYYOIt7u*iq>2yL9D1vmFeJ$|u_|S{*g|?Og1Eg@Hm> z9TY)4Qc=}<9Jx1CDJ1e7VzG5Mz}1(WTzs+X$GbZ>As9gJD(7KKRV)}IIlOoFj%gLN z{<)IV`t~P(x#q+-WGP`HEFA?(f}F%Jt^X1 zg$-5_CzAdfB_?G41N{)XvfrmrhSzu#klf9NnZ2H6;t14L++;V{mF>*04TYn&Zg{42 z@$)*mP@ZUBkPP+vb)Cc)%A^1nRf-C}-da=+9x8U+wOUIYEmBrpgX z(7$gU`l0PV;g43L|4Q|*9YX)4kO!duu3zXMT>en$U&Gq}m~Q{gW(&}H^p8Uh|4Q}O zP{c>b`%icQtik>o0RLCYzpm9jLKT04m*zhOF8-D9uh!~gDfcHN8UJ-*_Xpj-vt@tM zP1yX;$L6n=?VpwOC*6P9wm+{SZ2u>pf3|f0p3}$E_b2fE9jCuozJJf>!;1Y0E`P)4 zPfPf}i9-|649Qf5YWZOZi`1{+Ns(68vHAK5XTmfMfSR$N1k^&i^z4J}l** zVEZ>r|A*cD_j3NT?kfL=* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Public, Member Confidential,Work Group Confidential + + + + + Public, Member Confidential,Work Group Confidential + + + + + + + + + + + Public + + + + + + + + + + + + + + + + + Public + + + + + + + + + + + Public, Member Confidential,Work Group Confidential + + + + + Work GroupSpecificationDraft + + + + + Work GroupSpecification ReviewDraft + + + + + Work GroupSpecification + + + + + CandidateOpenPOWERStandard + + + + + OpenPOWERStandard + + + + + + + \ No newline at end of file diff --git a/Intrinsics_Reference/figures/project_structure_graphic.odg b/Intrinsics_Reference/figures/project_structure_graphic.odg new file mode 100644 index 0000000000000000000000000000000000000000..807414e2dad33fa9c6d4f80183f390cefa4e285e GIT binary patch literal 40281 zcmb??Q;;q^6XrYS8P6Hpwr$(CZQHhO+nzaN+qP}*_h0PA-tR>xU8$t2I!X0YEqN&r zP!s?F5&$srHWSYSp&g_`MF0TkKNbi83H;x*h``4H0Jzpk2n#5?XJ7F^c%!I% z>?U9PBw2gj_6R`syb?l2hNGZ@p*~-kam;ef_T`q9t$B%2lZ%K5gP!*Y3HqZfc1p?tFfXLI(nH@A{Xaua12I@a}t#fnfk{dzGO7 zujAk_G60S^pImZ}J-5&zv(P;kZ4*88@2n#?S+0q><`t=Hr!)K&5WKczyF0Lb0n0Ew ztOa64zfWpG#?3bOUH}!M?V(f0?7py+1^){F@Fng1}8e z(MaOo-#PYQ`EzT}6@Ev4uT(#H?E(AsV11-$xr8eIDK zZ?n#dr%9rGgv_s-xPxBAQ6N$71_@z7MjX)N8Na7VQqZnV3TBe#@QDK~$n;Qk=bF7E z4on$zPLf_E875~ml(PGP@NYo3lDEhGbbzQH0?R@$vAaFv8Q3r!cE~C2pAe{`(TcLI zajrX~C@Zjh41B+Z=(inX3?wwX*wMw|e9?R6QJ8~7Vp;G}D0Hnc&XCij8)Dd*bCkFt zxp8D^kw=lJqDUW%RIuo-GcNsk_&GJ9AO~#S6ZFhziG9Rvw(HPuU|g{;bo4vH@%XAO z2!Hu-MD08+?tBK)_)|o`EETf6 zKl)d7*1Q^P+8DQ4hKW@k`6kT6M$l;tj0+hB=`$`ke!j6yXx)5zm~P~Dg6i?cB;$4iz(-GHHnRbLe-ZfXf^_Ss>dK*E zp-oK;A({h_s0q%@tt?WjTF@!XQ%g9_plA^MDIf#<8x{?!^ga$pD3r*WP&PuL{xZV$ zLetr}8x)KUCD;WxVA^ctu$7RXm*#K*2yw-no+0vR6yAkr+HHYBPzcOkRm{(a20QDq z?|3j`oeH}SJ{zeoeSH^fzAsQy)2oLd{Tl91Z+j^!td~3?r1Kb6i(R_6a#mk^j6wNt z%GX`um-_Fm zhcYZaLf{bQu;#23^%`;0+COuTLU_NQA8EYVFZTn9dde4b0|OZ(&th(>*pjf=M{+FG zZ}0aJ5-_F1vChqE-`edIQ(Q#TT*h+eHwPyN`nONIspeC>&*<+%(|OjKJ>K^dE;|Da zMon0^e$K~6k0U*A_m%KFo(_YVEc+5Y3&?~{a95o1TI|kK#6?Y(13K`3G8r#Vut-%= zk8Rdn%5UcqcAyPrd%usDSu{YzfkWXWl1i;W$d?9A(u&z||d_mn+i(9>J2CPyANLd%P* z&6)c4Vm~4DxV%o5pd?i_TXSrtf4vV1jAA1Dc)1H&tB=HI62P;Zp3V|Fy4sRiIK^Vn z9nCjG!67!5Kj6^SJ)PxrH4ex2gB~7Zhf7MCaAd+_)6P1=uY6NK6 z?voie_MRVN*#>DaT4cy#SMhcoj=J~7`FW%$u$xxB&XxsD2j^j-o@PpNo)>$=8F%`R{0-n%}J)9p*TRlPdeK8!8()eI!8N5VV%E>$aA-S+zz zDU%x(Djp&fa!?8q>tSu)e%+ll4V}$3CANznG(}>@H17vl5Oz3ZJI?%hunMdw4KOr! z2fs(vO7b(=ELCcXM`dAR_Zh@gM-b-CjS;dRpH*AG^+tdtWp@EP9t z$^-6647`l8w0_BAx>3*ho!m&mQd+EgUIZu8Bm{6$YFd6m#KJAVTbUE|XLIv925XQ$ zQ3C;pbFeb&?#9#;vdlC-M*k&Vn$nq9k~g!e;hxV82SeP@9exEG*=BfLPvoh-VsLlX z<})8ODZpx7vRD`5dtm@TN6&)>gCjE8k z)7#ib;uaA{m^avD5d}jb`_<`bnB5SO?X_U<4T)*M6sL%2^zHi-8Yts$vIc>l=Qfdn zE=3%C_V3EfYHp3AtawjG>v3=A@h!N^*wzt+*kvqJv}A0_g@*<_BeT|``K_gX8}+#1{J%8DfnRNvk*UadClo{f}@jEW>>8!DAsJz1=` zujTE#bn8mjwGW^!oPi=X<+gsK;_NzEmeLqJPWqRnm`=Tu^ zdsVZ$>#Y=yA4iDL1t#NZQZc^1q)jvXM>RCl1oIJ&W>PcvTLVO5ZE1Kh^}#ACC&I%+ zRmn9RUaYm7ne5ei;D2@JWjD38Oj<$RtA>utHEN&#JPUEzXHD4c&LW;IMj?kdg}f?htgj9uz(oS(f%Mau4Y z?($))c<|ZrF;a3RxH+a@lT`-5tZmUTz!3YA7RSEP5TNr_z15#-;9)=2oxG^#D9*}1 z{p*Eqb?6o-01FR)#w#~&fllpV{pn=QWvY@s)8v;Vurqq#7D`NV)6HW{0`6_-5g}4C z0!omxv0|<29x}MadYes!>&ixIBqAO9cvTu}X0B-``=kT?q*GS2UoVJSh!z#3Ea~`u z*#wKdWU}4@q_(uS(ldey5rs&*OE*fI$y4r!NSE^-&o z0_oE`34*rXGudJ+SuUD4A3z$s@~-U+oIh(K9271d);>aLFlXM`rPq?q;p#hiqo*M!Hn5B zKQdt?+>4xr@A-IAD{o;e`RWjf8loDB#wL;Mf#>@mpJTiiA>DO{>EN#U9b;BVKY?&a zkHeQNyHRq{wU2NE+=p>+{R(lqc7e`=SSe$;7dsxJOID;22?%mmsiA`=h@rZtU}q$A znW&!2_UFfuw+0Cmj84cDgWS)%OIa#OnkrHNw1}f6ndY^emw9z6(SGrS$`tXaOpQ?% zvddXC89@%LJUu?!TOu)Qa?k$U2e7LF58(duRYZab9$B;)7J-NWW$X~F<^Pbm7wp;L z54P)26!~!3uN{`cXj+&0vbBu@#Z|y(yEe@ru#R|I1LcW-Q7v1HjB(_Esih+%446L} zc7h8_GD;8u<{|VD(Df#b9i`N9?g@t#CLtbF7htaOXX!wDilEElYG%eURyqYMR3n{e zsr~RRoWHeP&)5F)$F~T#kl=`!H98n*1^|ck{#hs_SZ2&*Oq-7>hw`1|b~gD(VSMEY z7C`t0zkMaI(*>1?J@Ip5x$A1D}+afV+ zdXiUflgkBh`Rjf@SvU(c=i*m1Jjs!n!cd!J8!SqxX1M1(pLhud#wc9&aWBYwVM63z z8%qC>rME+V6WTyv+E&xQJ@754(=ur*)r3#+79koZ&7OO5CXNl9H?QK3*WKW?7JgJOpk z7%iG$CCMmF(B9XK2vxsrTX2eV+G}R(a@L8-k7JBen=Q3`}YW@TAEbN z6N}m8I0cqU={)*xk>%~pw{HOhknYAp;=#zu%UQa5NVMZM{T4*s&*v!4JIqbz=DG9L zc3a*8;d5+Sn#1Ks%Q_KRCUfIg_h3G~a2Uj4Zd-fNKNfaNkHKg=KoOGnODS@`#IOqky8XNrc2xg+Q0rCV-ui<1Zzh)SqT$tJ2} zP~F7jhU(^!19c51ZmLf+Ya9~iL(O#QOScQlvgm{^hSMU#uet1AMy~0fb|gR(le~)3 zZrLp$X8d4srLW%h7psoCvX=bwXHxE=DzjSV*#I%Yi`CBB%tW`hfZ?Zfdb5>*QbpN1 zRAay1mA%qWo3GIB-$YB7kk8R3+-s-JhdJ5kxO!?EoAr8&U;kZ20zm-vpx^6s+IZ3F z%ixC7t$)9{-t>kY-%h5Mu8ykbrOs>Z&jF8)eYK3d`JoW0OcsSMZdN)dt=5}I?mv3ai$noaDd=Z+^XVzE-Jt*2{l&`nFb(P+-gPQAx4i(r(F_we zEekQFfcEOD_m8KcrJVzzN_D-%W`JMs*Fl@z_o@C&Lvge&4jjZZea-c?1xC-%bbf0$ zz8>z|Q<2;EBi`?t-_hDy#bQQf&oDRRI0029AX*X)Bggss>GF%Ed8~b8bT}jgUoI>& z5-9|?Vzuw%CG023G;;|$MRL2!?W8s6y>O~#K1)gI&)7Jed*K0>-}wzRApjAp=TBug zK&UH-%LfKoPojkX6J*|K=<`*#>2)%#4V4TO_6i64cVi`uT%OqdbGdc7$^>%>rh>vf ztB8hyzN^~c)au#het-zYhC{Yl#4#5=XBT8!dkgT-@G#A%{($cpOyayJ$UEk?_kmNS z;-C)lEUxs)E|W zWr9X?#lUX8;d%AeZ^v6k-m*PIv-@bW8@jikfq;~?wWWZxR?UxPRee>I!hLi6;X*e8 z5t}uj<9H9Z14JLiOoUo(Y|RP1DT1wLIJvt%t#oQ7@gz+WqU@@U9YsHqWjtL~3@a$R z99x{f&|KEu5;auRN+Y9&Wt*;|g(lRHxtU~0fI!pGGnQ@+6)f>gdXYLL`hp>25O?9D z)xL2lI6a^z(J>BB6ch+O+9a=Fx@JxQ(E_ ziW%(dc!vwUcsJ#;2N?JJb2r5@2Jmzj!4_R?4l%ps^ZWe?cPuhY=3!;hBD3-|b+tBz zaE~GUQ>H{-h_n0{SyQjDQk;&nh%aI1?rT84Vb0tX7}Oz07Cab@9)i`MZDNeieq zMrHL<#Qg$o{^>@bF9SKFmj zVXBSac+|Z*9~#08`(P0M+^soiWNXfZB$%C@!kIb_8#(6)y%zG%B#z;|YJwZ5A;g;` zkxRH^J3n)k-AEGo?}o}=4V3CZ!%P$IOqxiSRV?t3E$As0XNUu3M=1;AO7xE~R(ITd z;b!+E*10)IxjtY+sSEl3O`S|X>5pJ1BnkTW^Y@L5DUy) zOLDNcfx~TfAGj<4oeN3CP)kCAa%pAb-2QRekS~i_|MonA4MXb-eBuUX#}Q`!JSrn% z5*@NiW{kZp6(DREk(xnX`va*JJG@(1X;W1-fmSR{GIpKo2F`IWX^QbT0XcS!-$;I_ z`Rnq2X;K>TKH>`re7fv?tcpV`x7V44X%P z6d}yyGEMduPs8B2eSF->{*F z-O_4!-e6uy3HGAx#e0pA+-|nJr`+){b;2k^Am|fg5D%8_F zuWu(zAFOXw^x*)0N8erZMinCNcC+G$mGN|5vf za*a*hbI$gH=T(UgUTie>%fyS?PTpN!!2WmHh~88qdWu7a|G4Lt>CYztoK8Y1;zBU)|8 zV?Rl7t_&bY@WMkc5KU7d9%G7K>;WiND%}Z%&tE#=nn}_+HA3RSMU<;qNxWL!5N7TWUSx`3I zQ|BvrY=_Ryi-F5q&`!xbP^m&OU9npT8Vg#BOB2P>M<=VL+xFKHgN~yUp$8ix(boejSC8lF6C*9OIgeegX|g zJB?c^8A8yoG`sK(3)Ls)Q-MeD&Ln^j21tJI-$N7h06QpXm4JjW7`_WaJ}ApYv%hpi zO5@Non()h5L`!}*NEMw%^&o*70TYv?`jEa4>uo2LYVaewRN5ruz+RO+Fm|>+M1{5p zg?4;8PIXvHc4tK7d9;^WnWHMPcrr#sn24k9`<)qq|08JiKAEKqz7!iAFd~EQ1{Ht+ zLxN)T5m>5eO$7&HQ6JA*O&^o4eF}#7hM!yCJoRV?n41@K3&%dBCNLp=>A z%(3i@;Kf=nqc}r5RtamL?N0xfB%~@FKu!S@nA`_Dx=7DHrk(7sAsM*=VyJ!S&{!s9 zlI4_nF(MqpFoxPZIU3(?qz@Jsd`7quDTKOw9Js|LeM)5Wm!A-bq~>>i!iQ9-dF=9# zX8<)v2w5a`&#+|9UlBhm`2gPK^342=^z}1(ZoWY@YShr)VqZ=Wa2kXN>SLuPC8ddl zL@iN0r#r8yYh{NTx5;%8l_l9ixhvm8Ct!|<7^m{}u~s)57uy$6nBMx*3Bm#<;d|cS z0^J;WAYu`)pS{w!Qps#oKXpmu5h47?k|*-69gvJ5HJDWwYt@_trOw5S)w4 z5`Ogro_;7iPGMbJ-k`1Ilca6!azcx8Niq+?Tj>B;ep|6r*;7e7YMCPZkSpG;i%=ME zZo%{w7G}JCt=IK<{m~e^&9!j#^jnXN`9~Q zw^jSRx6(o!AD=H@n#n2~nka+xKks}#dhG;bjBf!`m#-;TvH2iZ1>Y7kout2?;r<4i zr{k-y-WG{e(3zEzRI7^@^%p0E_ocqjD-k)2m6%SeDR@fs*5NaL&ke`^ja(CXIFH(i zBscb5#E$Mm{!);BNWgOy#$nKwERv~2Qyk#Xqd-+C){4Pw`tNJ=x+<1d<99K$RdnZ& zcQFsQefSo8mtAUrs;ra-{l%SM+&Zd1(2+ydh&d;_Tn(MR`ud74*Rdb0!+H?AuUoTn zsa8`^ywD2aF6>;=opToVN_=adJFyFu5m0PsYCrP3nuN~kOy0;Z%P8S)(T_5?N%SJZ zZt-Hq@1hY%BD%*r0Hu}g^z>hAtx82KQZnt|@0~QNYZ+f?x`YVF2XDu_@YPn{D(G$p zPv@td$}#>LJryexCy3d6Yx3&L9_}^2@%&L_z`bu2G^6RrM@|zFVYI8*QmePQXH0z%aU%^4Hx)Y})ckI&6}! z(7qg;mqWXsA9w_`EZJOz?>&_xuZ=m4EDVNoH!a@)S9K?iT=!i6zk?pUtsI7~n(L#| zg`Sotx7Co*<>VSqo8N)A_#IT2u7u3+0}WB2*a@;W@25Hfzipj%LK@FjLG#c1BVL6& zduSX+(OkVIyTfssceugyyD30Sg_#LU&%c6EWPd4zwF(CALtqJ6i+q#UjIQ zsY*BXW`e^5v!P7ET)JI^>pWgc_L|1?v4=t=j_JATT0i?05DkJgvKe=|7oH9m5rqhM~fd2v7*n^u4=;>Ln7eMt6=`k`-JL;jLS@cmk^BE zUr>4NCGy9S`NMz}8lpK!)xAh5d>T~!&ACbopmc^L|84JDisae|PYkqUZ+rG9aGtxFmZ-U%7CDS ztNjbi&JztzR-8n+j&S5UN~KWC$#=t#p{yKw!HUvue60k+)#*TvB9yan#>*=uJZ3Rd zpq#d=BfwV8HO^GNlY3W2QF$8h7=SAW0IjKU6%+74cG6@-P1sziI^G$XY1hJ3 zODCFh**B|j8g2C4n}y=Z1wayqda!MB&TNO3&qi6g+0|5ZG2o^(&Fali8HIwAHn*tx zq;|QwUPyD?dpsfxsDS+MOk<=~_uDO7r-4Xh;_^qi&hb@>ZXk9@_gwOn+~FcmUNA&0 z^w~Y=-oaIf)7xTKu>R2NC&uAd^uqcRe?@kWwrwr~4>X>q>TeZ{CpS<#`)8B#2zM6( z^n^TG{$mW_gF;lN=6osx3u5Xnw)jS}MXt;6H7b4(jhhAk$0pj=5! zFr- zI^htMRm8yBX=y-yt%<5f(zO7++w2e+&m;DXDl9qRV^pJYPc;Oy)(eqc#m5}YgA68C zKavZouGxG@tE(aRvF;ZH=MKCj0bF@S!JdA)+FG@`l{=S~&jD%%kOLSaEs zYTluMlYW6Ev{SY1A_~FFT}AJp|#wwr7a~dEgbGv(_?www!7=S%U9Lr z+hu)Ndxo&cb=$L#my?*g)1~H!G=}nbkmKPX8>1E<7$KpzbzE0|$GH}ofpOe z#6W$_|C@`~75d*6Z;{sJ>#3&AeJZHrUM5cVnB&IPvtx(?5mV-RY)K1A!$?1lqf1~L z{Pa4xeZBzuj1A|b{_ia)^d%BC5P@kF-{gd^Mr-YE`#E@PPhqRe_lb_g{XGZSgp21R z&7?xN$w(d3T`Lvs4XFZ&RlNdP*iHZpwnPD`D^JoP$s!M_H1+^uZX|aLKfb za}Yv@zUyxv@0)aZn&EMPkYx=itrcPOa$4KiS5Hi~lF&XQ_7hknkQxF|c(qo&NE-Uh z^y5DcXyf=4(HU~bi4_`4DqI9MnOpYvs}C`u?!?gdbU9WvbM+YVIZA-;&i6&~6j^u9 zXU#*f-|KZ3@u?S|PxzdvkpO|2fyqo68K#`K)6r%J#p*;kla&IG{SSV7HYC*Rj=l{Z z>jk*WV}qXSaWV=jOUs7OH;7a$-bUkRzMp-0n*;>Pwzk_tQJv~E`Ysy@?VGsm&RN9b zl}Hy+5i($uhdw#kvJ*$yZOcn6IZu{bR_;&xZEhbd1_Nhz4{yaUxr@@x#~=%S375Uu z=}iU~pxx1@vvM@ob3%tiF&J(J5pVAG{t66xw!zu3`WKKQP3E?|OT6<25BJ3-(>(4;>^+* z7N5+C9XC1A#q-e6#4DaDAJ4#uOZAHyy%lp(h+?2vfJE9(ZE{+}bJrChj4Xk=Z^D?t z{>s>)c$2A;v`wCOr;_&N8?IQQQ!Ah^Fe2PPkX8G<6w^Sk+2bzxgAFO!APnfvj{Qwu7BKmvjf}T}3J2|v(K2yTK z=n=A$Q^j@>>{UQUe%l`u|mbP1%be05n!rpj-VM`NM*^iqx1Wkm1{BxMUbQjxT-5 ztK92fr2#j?G{3kx?0n;ADM~++m5q`Oh+rLVqFD(WfR?(IFfIy-k)2uY1an-$o;2uHvN5mBK!axxBxOkL>Lo(8JIZ#A%x5ktma zjTkq;479QTv3ajDPyi17FXu-8K!7UIHn29a08m3I$V1j3sR{UE5ZUvI3Rqe+U?wO3 zBH6Z?Du+f!iHmjMNBfKqHnB(|KQ%a{*{X%~NFddwA?VG_3Z(iAcOwUXwZB**Ur91q zsA*d|ki7$+S>@m1Z}4YsU@!vOh0>gDND>PIGU)>BoHU#4IdDz|_gvF{BBFnB4!2fd zCGGcC*jfO5Ds5Qxz}*j({VS2ZI}tW@U{utct+!cwD5-C^|jA$gF z5ogC6%uq>xh2?Ia3m+ui8+nW~zvC~fb?6aqzG6NM+zpt#fF_~wOW>W$92p|7JCI`* zKUx1hQNF7GB6v5*3U+9|^qpHj8}FH^Jl?w>i5^ZUDXhVN5@ zF>ienq*zFB&w&0{mRP(zKt1<|Z4j0)=z-pd_Wla|E?_h-xp)D~)D1ZhNQ4hi6^OA) z1gw~`pZacW93CS^)k99QSxJzO7JV7^gG~<&9-Vx&(cV5o_C86pkd9pUN-kQb+iopL z@2~}m&mL1BTM8DNghUdN&3=1vvl7FYSi`TlfS`>Q0g3wX&r>=w4Hkxow5Uq{omP|+ z5Z^2TI%GEVDhR>tR*BhMCR8@s{+|tsJaj{|GGeRyY#J32pAMuliP_Y33jI<1K#n|= zKOj|hD*k*k>z+R!nNz}rNx>Z8$OnMwIugsMwoPfULnL(FbDv&3YyyRUM>Wsaa)zI_ zM@~iT2^!w3eVraP2w{`hAPNIX!VTSvK&|zJi7x>!7|t58kXxb<-?xn}@~7G38Q$7M zfFL&S$wN~ji3}y}At|GGNOePtId*gqh26#esqK8R-6Am;8xz#583WWFv66q|w!5k2 zdOJ~&LcQ+mz~o}-=|JstDsKr8u!y?}O1;}OmzV{Xi!t>?Cb-| z0GME%+3!p$xvn8F5#$Me2klA-&EQh`!_f_3Dh7tdV-{0UiO)#Ca*QQKBoXJGQ(g3b z1GZN#?4g-S*uf<07CXHdb^hI(E9yb)^~cJLR$VF8VZ@}_gnIvdg`P(K^h-M>UEA6* zZE~|0?Wtwz1R=?`zgc&|XCP7%C}30-8I608G!m}IgL4(pdYz%ky2gP^@>7@84(8H- z@ZO8W2LS(%WRa z5%%#K^rD(;X*FG|M{MS$Z^!d~Lb|F7fw&1c(^v1pB>w}8^Hvs4jGuC2LF%>|+Qz3< z`V5Ud&v$=*>$c@L8SK}0e|%Zjo9<>V$1fZmC!nUKp((GJlAK!Lyu|nWuQ1vmNfd6( z+Ny%fvyh#ZLIiH6bR_g(p>eOA-L6OUh!f!iXZ!a8>$dfw(t>R!o7u2GpvUWL(5O3E zSwVwjaDtgLNE8lCgsg>BNt<-X%P(#LwMN}-m**<*ZVn-w&FTEbk1fbtl_S@JikG_dLf6)qrPoEtzXfadQzFW zLD#3f;Py}3Pv>|($>qEv;&}AM_kMX5E+E70mdG92a|4c_pV;N)OFMlYX{NA+n;Q6> zC(i?xoan0)k#Mk}98zRdSVX`Ai1;bwc~?Lm7Sz3{M=-e4k=+&h#rF>ZgZ^A#h{#&s zmC>3f_8WM)Z3u=DBG=H%(Vu}DT`ODU&_5U#Xt-2MxD?}?p9@tbso~W=S}V0*wki6s zK6fh-a=*Ki80$VRy#;^G?pJU=k-?)aDyp=fCN2*!dn^ZgIS!R>ybeMx?YhUw*pcW* zubnv$nZTch&%XvIp`r79-$^ip z!bC+Q;vAp$ZjP%~aOrA2j&oMsY&Ya*-ov}*J5i-r@o1}QX>y%zcRfeJIJ2{}OZh(b zzR!4(jlPrr>OD`=eYw4CztVX4%r}R`;cUH3)>=NVDFp5MUZZx*C+e-yxAz?IMXju5 zUOI(I_-v;LJMH1GDQZ)$M4G!8pN>-jg0f>H}n5-fXTlA z@btvR1tSuEVSHV^7CYJE>|*|PmoZW@z2(hb9EWCIL9pM|fx-1UGDr;O- zvW4Ts(A(TVG*ndy4s`|v<-CBFtf@TxaU3i>foHALnWmzlFaY9AX>WNeL-!Fk+{PsW z&4a^+{#+;%{`e9#q)z+7#(}%-gN5e-but^+u*sJSyR$b&kRKPQ2uK>;Z%OOlgb{?j zyBW17L~Ff<(DP&02IizA=Z3Plzk8oV*oRr2_MhzyT+kH9lMemW>%PK+q$PnJ{|DRM zl3)GvBZjxxaB-O<_F!e>9h{+3xdicYv!Dh1&}w7T>QFQN4B=|S;py1C&Nese-8erI z(`9<*hDRrP<@5(LKCv4)0j{*Bwj>DpUQHl|n~=J`pn-#g==-jBoBfn&w%%DqWM0dz z2Q_i7it=~tz)n>oF;oLFc@z| zH3HUupghgzW0(z5LPOy1_eE!9i5_*SbLzqYG9ImlfdsB@j{Z?i3*GmtNf@WFal9*D zUBY=#DC`ADV6jITv0NjJKUFwj26@Z2AjvM6;836>MBXo47AORBNfQ0cF@172;C?Y* zj=GU{wio1N-2Nk<`D_~!^Up<*e19PtB2|gPAdVa1$asDdQuMR6eT^?6>)23@ztU9K zH){fr^c54e)fLP6Afht9+((KiwY%aqruEqcCt# z@YKK9J=eKm@s#35@29)CRu*WDpKup@dkKBtLPsIw9VfM)H(d5d!phpf9;W|VxbN1I zKH+eo;-p?!&j0Q>WVPs||2@#tQDwZ{2^%iiM#28==V@bEd!L&_$cb#Y+BSRmvpi0r zNZWt?<13(7|DRvPM{d52Lwj^8yp{U~6>pCjTrW=w2`=x0Zt58}{= zYQbMb1h@PKINu;fTbj|5z+FAXkrPT}R!FpBdteHAY`=&Dk_a2C*EO}f?>81*!^TAw zf*M-KZv1>f7H9Mo&CO1gXy#{tsu0$)czHPIgj2v~sNNbK&9Y|f4cPY;P*U&FAeMFeIvCF)@2Z3|FI#Y@zNB)$ybqAoUT>@E_(=V z4tFwq`R5mS^a@{FGuSiIB?Aq4-gU@1|Jfk}VS9y!^?oy8vi+jX>H;V*jOU+5@TKK|8345E zL-!f0QJ^rJF+xICB{@(GhR&E90hE21_JjLnKFI_z^xFZjxr?BnwAtR~FYXpK5Y7GQ zkn-+3dCm$vGzP>Nfs9LPtcz9=_VtS@mLo26`V@80;LV*z;J3JkomEAp6%-U4e~MmDY^HaQnx+PYj=}vM-Q|Ms6V4uUOyguTX7nUlW~mCb zeJ#qE3c)^>hB+&H46?ryRWORpWs&{p;r(Kg{uk(O89;Iw-Rn1Izx zxDGMuKuC#&@(0PnasHU05w||K4^#xQxgJA5btaS$ssYxb;eG_~{^m8$xaks>191Sx z2>q}lo9=B`=1^JMVw;0Uw+bzBg3))EGA!mfX6MLJfkRt{*V07C_l83w--)XdDT z3y5@GO9gSn1dkTM`IkmeIaf$o&9gcnJLJ2es;8;CTDV~T@qF3$@lD2t9b}_y;=Xbu zW7VhCYpJt4zgQY`^ZXD+2iI*&;D3ET`h$pYcABj9!{|pU=W5`O3>IQ@TqE{k+vPK} zMEBQES7Vdi-~+pW)a^Re$FeRSiwu_D_+xQ!^9z zYPS1r_b15?q!~=3(CFaH$E7v1Fs@HqLqUbd@*xIOmCNs2w!4`<5}3g1v$BFBq#lpLMMnwPsGP4|Lb)k={@OC^Ku|42G9?ZXvQ> zqZAkwOpA3e#|fVX6EjO-8~g(yofrDQoajDVD#QuMsHJC-3s`B!{b9@}M3;L`q zIoy(2LbZ9!*7IdmbIXKDgN$=KbFx^u-d_oAy6!jAY&#gd*Q!k{X7_1%1^=xM5zc$TerLXM6wPKDooS*CYb9O>buSCm(-S~Ha$`Sk7fHGm}9muJ_{|+UjN?92l;WNL@Y z8b2_pp;~V~)IXZTdb#34NK4kt&O5|H0&;&wR7=fV_*&@foW5LHD8qxv)8FukmDSliS4^#+8+ryBE&F(h^-EO6Xn6f|^BJ;T@PF*+bYF^Fxm z(qiRTVP%dw+v;SkF0Zd2{+f??cqdD8jDkoTe|WVHx(A+GBJ};_Ih`RTj7T%*-;jI( zxMNJG2X^!(;D&v<4!YhPFdfugMp;B@2i#8b*4W-~VZ&BO}o37-2uw zL}5$L;4wUd98Ty)wrF4ycJ=$b`SuBmsaHh{8!;aK1apWn$TmyTDofX?7?F%+sg zEY)yg)*fuURei-}rQo8W?YENgO>z0@UN0GiH;c^0+ZByM`mAx!LeAGqU|(VLcd=8;$Qy6k^X_UV~Cz|2?4ueaBxF7oyLJ%hyuD0JQn z!(Z5v-m|&8ehGy{7!0)`CMF@Oz+!{`*Fs@mIB6o;eAHzG9~yT)#hJI#!yG+J+(DnhS?+s~F~ZO{Pf7|#2Mt}3 z5;8PaI+TOV5@`yWvP8P3#ia%QiH`{!zJ!EwiWh_fQzj7~>9YTpQ=<4W6tEA$bV&;c zrhPUV8XsVpAR#7YU`7Ffb*c0~uXznbAwR^Gvv!79!AB-ueC!FOh29Dm4>EczwSm)x zjEpY0e*WXiNkpT-k3O5oBQPYXVYV)4KaY6G+Awb{0yLn5qxl&YLW!bdI9gjM zd5;E#vK(V@y&(G{)=aFHTl|8JQli@Kij+MS(>>Z3(pr^;$(F_f}K37QUgMfsfqn*uCrPKS`_H5D{f-QP@cH_He z!*avDa67Gz*!BA)DSPNJy{bto162+`1O3^-C?`$4QcbZTqf)z-Z`_ZK>78`9~@w7X=P$| ziNx_wzf5uL5C>%WqQt6K;DdR8aU>rL?uHxML5-5cEev|sVHDmOA>3%$= z(eZkOEkLB*e7ZVW5V`8*vCi^W;P zO5ijYdgB#ntv7I-+|IB=wHPhdE zb+1$BoUYZUYSpg2m*#H9A+9nSUTV^Ez27QUQ!X|r!26z_D86}G{YR&9K7Af{e0o>K zrbs@zxwzIj#lzP)2FGjwiSDGA?*21!;lBUeNJanQI z*xZF|Hf}o#LNx$&CU9raY1G>(i_X52n<<){PS>y`%`EA*V6FV0cY|G7FywPJ`R5|J zSJ-`X4;AN{nf7`Wz%Yp9Tw-=M=NgA7V^`RnR4C8pJ}aF32WQdoE+GZYzNMYGUpX3b zIe4Ggzol@{xak-D0Sf`CZ&qr910H$WeSXGR5K;j{ZZ)nlLvUSv=)Vs60os_v+B*ZD z@vDsFi-0M{-Z51N(0isRgsjTCLMmNut#12OA^t0kK|A zxgc1RWmjk9jQ6H2?8m-c=q(o9uARLC>TE$7tJhyhbpL8(v;;T+^S%=~!x_~aR^@(B z(<{FFr6|em>B-@N??O^P!ZdVT1B-nfy%@_*9HmLf3eMDB@5Ih)lmyss8gDgBs&eGlfq;obi{Nz#QQ9GE!wX?%<$KRm>0r>2NI|% z`eIrN7VxjSib+JUM*+f%d#DUZ#gLL50||^wktRBsmK;a<7ML7~bF5SO!>_}e$5LgY z2RhLfv@>V@SR;b;>JJxq0hoH8f&g7ADg$x;w!nJpW}^0GrvN)a?VNeK=H{p9K3WN= zZFu|OXZ8N7y1+q_uP^k38+xR*$-DUKjm~&e%f8+5i)uY9upaM|xYd+xt`gLjpnd#X zs~+RaJD;krQR^@y0{n@1;4;CoO&kgJ+{!7rD?3umJa>bQ*{r7!F$!5+UQ+kjR5giC)fA5ZB-gRJtacqpLBlj%683%-EIL9G|8^US6BWMD?zz*1$F4? zK5%UanN0XMHx)I$Rt!>zes^ny-qQewl&*pKz|H3>XhUoGVF+PIP>T(NDZ_-O1UA&S zxDYh!f|0PlQo-ThoD`6NcXH5rr;(_S$<)P|McpjFC%CwW(8}LCb$xn8uZ~AfeW%l! zD{&te!3b7b7s6xu%4&KwcYl4_j6`jp@K7dOuzv(Uh=Ii1ZewYr=> zpFT*8+fUfy?e}f_Cb=OYlsV%JU9m-Jv#bMBr z|5hU#3oKKyr9x%zAN*%{TSf>lSoYC)C!<}9Y{cfm?zak#bA+59iJj-b#a8Pl$s1US z-dj-5UxKEE;0!OYhpsJ}KX6w6j0YlnILu+O?}>&Gqj2wjm7B<7;2Sxe{`{NV_xaQn z`b_I{`~7vTA$3}p)yn@d9nB_e9XhrI=4rQ6qOF|Ef8z)-5W_{YHGJA zr4Ik!sHy(~7% ze*e5|MTTIPnoSO~cOk%FzM(sRZZ)b9BxkLwq(Tm^#&bmVOtQ1Te*Ab6`I=BAMH1CV z6Pz064l~DHN5{xaYZE4(Z`IEB#qgbhyor;L=W$1w!vF43D!MJh%%dczUX_=VQg8FN z8@5t_;L=_tVxW%V?u~5BV1$9ul^m06cj%dj69)W6*pQR@!@@NmW1|V9yQrWQk~Z?@ zLnP&dksa+kYrb)CaxaS^5wZJNJl&OKQg^9HdG%|4PIQI#47m{^=HC*B_j@ggFGMUY zm*dCQtlGBM`$t?9iRN0*@E4uhMn05t;b$|%^Ytt)qsalo)YFk#OrCXxv=r>EXbCQO zT+YXycr*vw+n>J6WmlTC>UU3FuROoF%EA32(JUgft7;q|CYJH~h2vrhx!la03|f5o zJns9gc)m+sm%(YjbM$o@;z0@$vLV7kJ_;SgogK6vP*wm8a**aJ2k!B#$h_XZ2=8ri z$iQtyj`i!M`@S(lJ2@&;uOU+z{k^jNDbEw__ep?Vrx~hwO|JV%&c3;n>@4DUrsGsj z0GQe&1vj)mRWO;$W`qI7*cfTkKR*qtmbEdtOxz1&=xi6b4D(n{gS}4#<9RJi{zvlc z;LNYxSke0{PfDWU=%Es@VRXmx`j_cBK<=Sxe8lzV#l2<-JXOkaWFEi~mRK&^d+;*> zFiDt!(ER$EOF98+DaiC97a(-&4WIPE{JRPoB=<9 z`F*$Zl3467tE2!i6|3$!PEsy98F-1})fJI(t>iU_jy+=#jN^m^etWBZs;H%}FT>!PIgWVMQWb(+~Bx|4fdv7D;E>EBgaRrh;Jb=u7>1^)N z3E?RZL4h8OC732D`PH~{x{kX&TJY=?O0r(82uc0I_@+>fYfhKms1tLXGP|o{p)?HH zqT_8Z#9=E}yz}vzk?r}XsfsLOzR5|yVD8oSSK4yl0z(gu%V*)YbNi3IAO+1+rE$m; zaM4%{g}E6}f5z;q5~t(eZ>-0k@%MOKc>iJS6wW_)^uRaOwij~V3%ZK>Ab4)F9KetQ zq$XO|xt#J$Cdse|Kz?C1jQk!RQ@0Plim*&s9)40VG8ah zo`Os~%-Y<|4in*1_0IOmpbugOq81VaAPUXJ@ziAsl$!XSa=0zZeQE9-r; zOqrslb{3dcttt&(TwGG2klYaovVgTT%Lw&w6YhzHmCgLQ0@<4`j=y6$-KSRx?zSJ8 zN>tj5hdNZ5^TR(kNpBdQM|nh(e71l#^g?DL7DzrFsOKFhIf#1Z@eNRWA82s8m|lEh zm77@%LV7s6Zg@36s8Ff8Ytlb>b z{JEh7n+er%P=8vN3Who*I9%rL0#^5pnNK<8ZV4btg(TrPI|knOHu5r^d=-Qp{_i!4 z@6y&^@!5FTK2 ztL_7`DBtgcEMI5FMuj9c-9DS`P~?5PQ<_w{w3q)k5Z%q(OsSK14ua|usiaj?unM#Z zANv8xjYq8UCsV6xwYl65QiS-{Dy(oeSw$ zE;yb;&>5>*6G6EybjW-6R4$znhgn!qK|qC7ha1h1zrz18kRNw$h2rr@lwNmK>3Qo_ z!6~ozx9QjfXH-E!PjB<`*TXmO*WiLYMlN7}c!I$H1sKhR=dHgAf&ck$qk7(^H>3aG zguQ~Pl}gi(`)G8{zhc;2lYOrjpdIeREVJ8+I%-gOHBdcbo8K=a*kK&c1XAfV1t+Re zCyrLmnZR9W#7co1K+zn7e_tcGOaR*PLcqU8>s7(G^~&4y39VQ?f}7C%KEW2nQWnJX z6SY&9VbKW^tPKW5#<$?#-Gt8kPFcVgsmD2gft4U)JE&r?zv%-XK^LAVd}6M>q2)Ex ze4-5c@c&?QLqYMP?83vM8pXWdQy=-MJ`2~gtc8q~RE?~={>%>$thQ41jdE7lN6jfM z&scRoQU@-*W~mndlncVvVF)&Z?jYEQCYpYcPsvP{U}6+WD6T z)~*NG4L8X9O4J`cEpQ9I8TzUN)D2I_bIyDlWU3c<6bPMnoY}ww3HMKM1fl%u)He{9 z^0YC(T(JM*4u0PLb;&(cjDYBb;x;%S*MHEa(d8ye+id65hBg;7C8Smb6Jy(TYE(De zuH#j!}t7stCq7@!-YH z>Szm3kj{b>Piu4hgm+SYI0l$HDfJ6sP($WcQ?iVdEu~(rrsCmImu9;j-5NA)VB_V< ztd?$-OHqcAIKyv~>)f}J_>Qhl5Ypr!$z!nL)deAV#4|wmwnItf(T=VuD#Uxd3eYLy z-jTBaxRh{&md~O;5yu-`GFLPvLoE|5yc1FA0A)5RSXtwMA#ho}KrMe4`Q#nqglOP~ z%j5T@?+=&Z%F<^>&Sls7QYFSBA~j(`!f6i%jEpPnDyEUm!PV-Q&K+6Y!3SOv;7_DB zA8y-ltU**P6+63uOar4Tp#Ulr6lsD0awU!B#>dH@tPEW=fmOh=l(SzX&vb9jT29aN zZ|@!6F_Ph{Qytu9C7BT`314K*T zbcPOG9E0F_clsqk^FKCnb{?c0M1-o^ib3KZ8D9*W2Qk^9Q9Y{AC9 zE!m1NIOTKUua5VFIXmMOX^bvPS{4csCqXj0m4-oBDcp}{&p(nTu0ZSw-Nlc3^hfYW z)(=pbr4V~Ftt6=YxI!1&rY_Kc6*9yuXuoUEk>e5U`H{t13#$b~+sk(R;Dr~dVFxm;~yVc~c5Cw~3@8wUFs=5o7hy_P>k|JyxR z7zNS_{ok_DqRFbvwizknaAc!lGZ}yDqFOKkV-N@$!HZo2U0rXb&G#NkcMCiwm)1#j zt(B0AM?^OxnO(jb_ob>eyDzWz6>SS)7-@)|$F%`~%257~X35`4EYsgFRV}9nm#!_? z!HN9k9U9GV3v?flEPKZtk&1#Uv@OAT-6)&_BK49{dCaz&MBUt><+12FVtRagoKVo@ zyr2CtxU-?0AWVCR`_q(E{k_63HZWqcqK5db*JHz$5m3WpRWBtRjb%yQm~_zed~xQv zL-kl5yKYPnWxHI0UZzB^Eq9;(m;8?G)J(>MFSk>t2nZ92WEoW-m;Q_rG_Jju{8a9KjbaylLcNY^Z!gG7{m zq-Ej0?M4=XUvE7=zD7;;yur&s-)*{oACQ>S>v(NUXXof+pkZhZ8F~IYfj|knl{W*3 zrLW$j6quD|SvIBb5i|&vA&q~9e!}lu4Y&4?%Ale|SHeKT4f(6>#*IlRBS-=pzy2$} zUa3%YM7Q@3fHJs`5Sk=F&a`_+;E<0rr}zh0A%KFtCgc{(#FmyWV`qMF~+aN0&b^s|2487!&0(z zM%7Rze`vea{#qMu%wDUVw^}ya%Fw5f5tG^vSx8mKoRWslv7~yn+G;&HJU~#Z@j0x! zhHd?FY6zM`uf7~1`57+141q{w$mll(J0^d2j)NC^Vy$yo;d@JQKvFH(2pJ$2oq~$F zsF20j&HvT?9(hPai4yB3-i_E07Mx2+8EKF{s+{$5Y3$inNM2+Yjzj6r23rW^L=fFGKGd z?}q1ob&|_TN^0F--L0>Oz2kR(H^qN_Zr=OnGJdif3-3)L=zW`s?{{mWxR!f=2mdx~ zXyD3ON5?JR*J-T}nIrr+fg(O8lezB0*JrNbnu2e* zj0}Ms{MGAPGO{%XR%aQV26N}O9dpL(h~CF+u7z7W9XiVomtY3TBY2ZsmEZnE*(NUk z?R;AmRh`teaBGxTk|plhQC}G&?OqFM6GMgZ$NU`-2RQMbJa@E#CrZ{eNAb+e2&wlK zo@B1zj!bP`{ZI-LyO4E=WC5ZnxpB}G7=mys{;m0-vBLt|Ir)Ye6y=bbxRRyQ8HnNV z$?z#%XPUC3NWZS|Z`%F{p|ylz8j$HhcE)(|q9crU*b<*6jp{+>^`a#l%!;Pux)mwq z+=3DUTytjaUg5MI=$vU_E|5Ga>^IVMy$M=8I0+98W&o#HE^~I+`RIkdrM+&PdzY$i`Ai zcyTFF&o#GKAOTlEHbDZunsV~JgW*WPB4q25oWN@U_UG9F<1Z2}*lZXG=XnY|FE}mE z7@d5QB4~jBaJ4F1)OpV>3vO90@5Sr9 zm(F)x@xXqkK+Kp80&;aL7o2`XoTKQN`4q4|e6vEEUZj|mZPqvkjRxl?A{#gJQaq_4 zQOpk!NVbb>G0tS9?xW|3c##XQ4poVNVSZyc6aqO`e8`}Zm6W%Tu%TIr;S%7+wtHaB zBT>?Yszrx+IaQqg5&_@4Tyb15u^@|AnxopAg(n2?wRl7;ikru}6kKeCd=zAu_8#!( z#KTWP@lN4upAdq5l}=aI^lZL)Em~c1DP*_1shMxRn+8*Mtf8|+@NJhUZ~ z3O6Hmu?vwPyxNJkW-K8gg$2w-^RWSJa>GIpEooi|ZDcDO8wPW{75W!hAp9^lA~NVt zSW?q!XQ;~NeKM&Zyz@8cVgDr&)4~FUWCs?^;>zxs`9xR;K5s$^33r5_)Gr@Kf1*Jd z2Ug=R+laWqwI;@l&_9)gal<>OuR8)YUA@q@VBfATNDzpafm)D%qRPlhJe+J;Stfc$ zR^==xGx~?g2+8H37t8xAyP3Fq$-q#KVh`s)a{_TmAwlkAkQBX`xuYU26Dc8~Z(mVk z_Ca&dbw_~HtH9R*n$+8%8A>@;Q#ZO@8UXUM>E@_^@666jN_6majRgfta#0zR+_gs> zf7@J0gG+bCh14Ab;Db=UuZ`>MZUdlankDQ7U0^-2mDM4X0{{y3bedtcb~{mz?rJV* z5WBxDc>~=>R+hWT#$9$o?ENpYs8hWyURTw1^*jP!`nl`+u>!v}iHH3=CyV}VpK|pP zw>YUzQ6*R`3q`^v-=n!*hOS4vUk|O|)YD*a%!+veN4nlE^SD7XC+#^T_$+4>0o1}g zaH41w6oWFw_JQ2D!?WxMy*GL=)XCYu;_3H+QL-m@8Wd?dI7Ba#>Lj!sh#eq@lSPWVl^t$Fwc48K@8v!PZ)grdq!K zzVU|07fVMrX2EK*(F(R0IvH&fw>Y< zM!S$3ti&PwMUQYHJZXT6C%6unh921t9>S;r!SJ zHu1AfOsF#5uNWa-MIPVmgdAcSPcqntmC0P2A$}3NEF|W!0Ew#oULa_H-^e7XS%^6r+(B))bZ=R zXZSgyaUwZl1HYxz6_qr5S6MK>xT`&&-U(eYhN^xD-BDmJvpFZ|X?4YIj=d6q7>6*1 zBT$+M@f=^bGT}t8FWM1zW165KM(7SVQ0#rV=2EUP#$uyV5Rh0xIzk)P0Z9!hU~x5o z9K%Max%rq`gLfJ{39L&;n)C!ql)H#~@ER{bED*dnM876+Om-Oi&W+@R2VYNS#^(-r z5ZvHgK_zc&>iVEVU#F}!Gl(9f&mAbr8WBXfbrBdPfea3@ZHK~kGk&B=enE`?#$06% zYhDyLzvXd?Mr&uJ*8Y6bou$cR^UstTpu%EsNV2kL#bl!ZjuJSva_Ev%68y#6NvowZ zzmICf-~8pccrJ*1+`C@_jJ~%Zw-pga=P(JVbpu?I>|Ywq`L9CxHf{9wFxCwln#C*c z+~kx^qP!%jwlhg$Op>!P2jniSmE1qAJrzEwNrq6kjnsMEZsV5P0|n4rplxaKt5@F@%_)f+@&+raCeCifiYMTS!UgBEC68qQ#okfof{l6s9z&Ql}B{ z$e5{f2~Z46>iTXC>-|6|ia<|TTq1iU1a<3CGN@bkq-=t z;m;*0BvM#|pI~OJ-diJ4R$nG2@%UUV{u9NmAY@}Dq8c@NNM^4O4N)KA@DQG$m#vy= zi;3z@g$OscI&R%>%vYYcifTHwMDJV`K|Doa6T4fx3SQXueGuBL=nO%cE4<=B0d}AD zefOhx*j+{6rxzEBmb0H;YdHw~co59cUASyZvBy9#_8i{sHkRxmvA8K; zx8e5K$l^0OJSm2%-Hsc0_*rZLA0qfGN152sYzeARN9Dux69{e3RgVx1^$2ts+M2GM zb7lv;6$J%x#;j&V+n0`2n7_lz`6{#J$_T5A)v7Yir_vtDqxGuXy0YP($fL>n^>lk* zt9Xk>Ii^Z~C?>%^CQwJ#qbLfliftkb#snKqG5m3{m@&vRiG%khv ztC>qXyl=gn!uj+NtPPD66lDdHu#e^PIL!gK5cRYAshG`RR3Q*>c~w*%Uu?T>IL$i! zk%jT|dLF3b_ci(I3{@mfIH`&fqCHS4qkmt9d zRQu2$p5f~k^9+p>yKrnMOJU0pZpL1o_?gSA73v-g;~#Ja-8LW-Ee5*#S~O@c6atxG*&Wm_5Re8D`@z?;$>esWVQZDqR)&WI&`k6IAjmHrEYcokZ6U;rhTli9iDApCTuqEX&(Zl2`fU8u+ds= zMly&uooLpE`%GD2*+sM+2_a74No*-?Lg?d8=dU%w`?{me{ew%znAy%pb#h_niO3Kh zYdE$gulT1YRd6?(7K~bE;OFftswE?$0NSbzZkJ&(NGLq6CFV1^G;}r0%ejnUBSU@_ znzoQjEcng_GCn3x#RGlbS4|`QSQ5l6Dt(F14DP}`TaFgb%fX?hDB-5rlvOV#Tcz6> z!ZU|>051o5zM)LTjm^cE*ORQrEWo1v}e-Hl)os8V%k^qnYsrv?wGLXdhhwg>i8U6GjF?}`>LfUAZB zjT}DFaK4G{T#YiwM@*J8yII@}K93RUzw)gv26bzw*7QFp6x)mZMb{_))JO;|XF?RI z0d^gpMgtQchM!(DS!e|u8KpZZIjFYpFAH!3NKDvh+`coL;{v?>6EvFjsbtc}1T+Bu zcRY9438{^CH#87p`yAHJ7m>fqTM%J!Ih!<_8XMiZ<`&Qz$ zH*BsWFc|{}J;I_)WCUSiuR=iy&Y~tlkWt}HVC~a?uiZ=78`gzu(SQd92|>aXc0ctr zUb`AH_VSjGGCB=IrfrNgj1rNE%@b;?nSpcmD44zKuC%a*2B9iO$<3%+z=+h0&X;QVquoZ3ne<%z>nY?Uf2u0a}l}~sCW>egAA9(y0q7?SX@SQjai^e z)g>{S97BZ3f}Eu%fWp6`B-5un)Q8vK3GqcnK{669g7Iz}G8V7`nWP>^<)D|!-h7r67Nd@GOB(%+ zW|Eeu7k!BT@=x2t4NLA?+#W|K)*yt8?Uv>m;*)_F32X)GClSTsqRYy~v|>72M}Sl? zs=i_Lc_P4!(YR9{bYdfcy6z2zxDwqmO{a6{M8cF1p=ZTSe5RfWpNAbYJ+v7bI51E% zRFMCr9YM8WbC@}$KawL)+zG`Q>hZ4X^FS{o6#2kYM)BINdR@57s#Y^_>5LkhJ`?kk z<_uoR2jX?={+39sw&+-c$;i5J03|26(vaC_$@pxz#$m2`Zbw3oEs^el`60W{XG09d z?82+-6Ga`42@*lx$v5YB>eK(ire-Th>GG%ATac9vR-=F?|5&oJO60|WH>A9=s-r%2 zIi-g0-?gGn{A=f~xG4&+V%!T!VA##S zevR$7LnUIquqIrCx02@&As@aL#InC2?oY7hzR9-rI46oLu!`n>#0JFgu3nY#-5q&= z#t5WrZnT0ihnd)f5Qm*jjefXgZZw1XH%WhHzbet=Jd zXh*5N`)|uTM`r}+jhO#~Oz23lv%VgUfLUo&8o&C0%PF6>V@Sk#@ShMOkt0~3d`bW41&A-)|y}-8qn_lC5)8*Z(1Q=6{ zMj1^EP=LlM<@p}eqt0YXsrG-F=F=@)?9AXjn+=W-L|b?hW(!eZ7&-}1w`%GBF*{}H zj_gl9ERcv!pk(c?^Xh5{r=S+o2>x&_EQdQ4$^?6xXi+^<-~)?yq5l8}ZHM}krk|ol zTpzrC>oy>%Ms#Qdkzj~I05Zb!S@(hdxURYf00cNFhRu(8$*%m$iFR_EY_YjibM&DbAKhr1XSpDrrrele8;g%Simy#*AiCQBQSPNeF1r|%r z5>rhaoLZc%w}wf?dC#j+HQW}34U+N`73anwnnS@sdZxx#i;3^r!|zIqiw?aKZ~g8! zJ3@-60(e0ANK8bFPdgyZ10m=P;^V8q{YHIKBu%OXlk>XB7O5YT5R<2fvuo3C^?Q-f zoqOmOr{zaJVjf4sQjCdAjNAfnu0RS3g(Y4?4J5uqI}Dn+{~iuKP>n_^KOUa-%Go~t zv8la2D6uZytN_z2gG2}IAezY$zo>@{!|jWCT|HXFFCHOCwbDs0@@|6Z?mU#yME0?Y zg_dkEU-jB6f{BRPvflQOOwH@|BO|&+XJ;|D+x})*lA}ucv)$kWaSfgb)n>dea8len zGP#|GL0#24)+|}@#EI)1I}4N+7_qkBJ4maB%kxmcQ(Fqt-jED-vnlFe7H+j@x!>nEPkeNgbMHhCEa>C$Q?%~g1MbTV_LoH-A_+G=f zMEJRHcAba>g6X5Ttb|R$MJXGBU&o0?{3^aytlRd!HwkFw_s2ee8qbZv*&e7Mua{^z zn3}p;4!1gL&Z7PGO5RF((gAUG^?;IVZ++_;3L2j2-!rSKswioxgX9HRouR~oP)jUL zYVjK7AC%4vIS0Vp*l{9sHKdrZDzdL)<3O?Lg1hePc6h{W^gyrKWMbu?`X#>_qxoKv zZ=P>DpXYqVC5;id3_Wk-fynL1Eeqt-0^5VoM!qv=KijVzQ-D>&$BqUg1kJW+JYhY1 z_J(i-=AGLRJS*D}cHn@eP?$8BIdASOrW*Luk+N3MzD*&}2Wf7!jdXEzHx*7ig_ zkAl1;rRLpetx4XA)NO2|jO2Rwbm1A!ChP5Xa`kJ!kQ!mK6cN`CZ&zXn15LClB|I)yMF&uQFJXcK_e7-i&~Xcy^Z-x@ z1%((<7DZTGdO;l?9xD~~!6lh(P2K1@LX*;iiSLmb1VpLoLlcdMax^_x?`|WdpDG(# zj08x2Mz$|Y#!maWdf&I&%)BxFGME44_~&cM_jOwQ*N4BqqKXD)4%bbhH~M{;hspKK zW$0Cp_Dc8Hn7(}Pk=}daV;sKZNZEaue9uv8R+)|7tGsZ0byw-r+a(PF;32GFftY_s z*D#iu^qHXN^tfQQ=Yg+-X6*K$t?AgvQ}gw1MGud|PVBx^9^3?;NBhGycx zeB8pduX!6ut*8FD)V1<*474sp?hweX&0Ijr!^`MY^%wInL+Ns1H=_R=jF*{#1@X2g zSeU?cPUx2Y04`8G3Xvh86(uik(Aa(dQ`O@V4|f|%nUKiu00Z_7$Yw31+oxTP$c~Cu z%=A|~7a&r7RG9ioV(@eNY~OLMsqe#Rb}mua*-6juu>|8C4ljOm@}^zS=e;s1xqzw& zAFty5W}#-j!O@db+u8lnZ$C7&OWj^(HhYw#J~Tx4#cGF!45G}${Cd6FY$}YcZ0eGP zI5Qrf_s&anK0Q(yxPS+Ta-2Vv)#9Q_p1(h@!@=aF>-$66qTY5jzxQodPx^Y|W2;d; zsM>4hvbZtvVd3o`BoIOEtabk$(04w8H#S!o=7X}lUS^IUM=O=f+DD`--6Ge{$;g5p6VS@1f>&AY#)2q-}M@F3uSU}2=N|=d)`y@ z9FMaS*5wsa)1MvO7ai_D{SZFEf(PbW#K`$@ zGG}O6=op?)LQ8|8FsXfaX-LMUap!r+csRmRuOWo4HtPxDN#TfQ>Kq*3x#CLj$4?R$ zw)0*()HNFwo#tmsbQ#ZxYOWa@pPjv0Cr$xzeqPRy_$E_%w_e2jf7e1WF&7yPk&wKC1}ExQdJ!9WiH#;ilucL#Bc?8##tdl15zq<6 zkZ%hY9$dE3;!b&okyEO~rIJ4%mt7p{w$7FJ&q-|8iN$7MXZ>ZED|dxK#$-LUV%3Hl zEDmdPL@2{zw5TUc1LoZVMl7_&66yKT^@M0=|B)}Kj08chnGBspR-?B~6nw2LSAnv< zrn5C1<`sf=R1M$DLNpLj6+_i@N42FBb%_HBIR!uL zUs}dUqDG%M`~hU!jYDAqI|&(Xhy;~Lq~|&H4rjuNJv<@Bpano5dAxmHyEuI9?=V(k ztL#Ub(I;MzJ3Z+P$9Ug5d4UCPZV?nMvFR|BGR01R7>5eOX|Et+xyu4(oIU%BI{lP- zXV`6r;fi8J!IKPCtyb;{h+1)6_hyynrX%*=dc{f5%^>!@iNE~)f!|4RlDKCaQMKdy_Z!SDI3b_ zjxf;%YFfWo2B|ex`D$r{&^~rwnC^iV>(`#p2X<
>wRg%XetqEfayD&PtTwuS8j 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 ?kT&6nZS4e( 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 BJ>mcW literal 0 HcmV?d00001 diff --git a/Intrinsics_Reference/figures/project_structure_graphic.svg b/Intrinsics_Reference/figures/project_structure_graphic.svg new file mode 100644 index 0000000..9818b05 --- /dev/null +++ b/Intrinsics_Reference/figures/project_structure_graphic.svg @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + Docs-Master + + + + + Docs-Template + + + + + common + + + + + pom.xml + + + + + ch_preface.xml + + + + + ... + + + + + app_foundation.xml + + + + + ... + + + + + template + + + + + pom.xml + + + + + bk_main.xml + + + + + ... + + + + + pom.xml + + + + + ... + + + + + my_project + + + + + my_doc_1 + + + + + pom.xml + + + + + bk_main.xml + + + + + ... + + + + + pom.xml + + + + + ... + + + + + my_doc_2 + + + + + bk_main.xml + + + + + pom.xml + + + + + ... + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Master document framework” + + + + + Common files” + + + + + Master POM” + + + + + Master Template Guide” + + + + + Main book file” + + + + + Document POM” + + + + + Workgroup POM” + + + + + A project” + + + + + A document” + + + + + Another document” + + + + + Workgroup POM” + + + + + + + \ No newline at end of file diff --git a/Intrinsics_Reference/pom.xml b/Intrinsics_Reference/pom.xml new file mode 100644 index 0000000..e499713 --- /dev/null +++ b/Intrinsics_Reference/pom.xml @@ -0,0 +1,137 @@ + + + + org.openpowerfoundation.docs + workgroup-pom + 1.0.0-SNAPSHOT + ../pom.xml + + 4.0.0 + + Intrinsics-Reference + jar + Intrinsics-Reference + + + + + 0 + + + + + + + + org.openpowerfoundation.docs + openpowerdocs-maven-plugin + + + + generate-webhelp + + generate-webhelp + + generate-sources + + + ${comments.enabled} + + TBD + 0 + TBD + + appendix toc,title + article/appendix nop + article toc,title + book toc,title,figure,table,example,equation + book/appendix nop + book/chapter nop + chapter toc,title + chapter/section nop + section toc + part toc,title + qandadiv toc + qandaset toc + reference toc,title + set toc,title + + + 1 + 3 + 1 + + Intrinsics-Reference + Intrinsics-Reference + + + + workgroupSpecification + + + + + workgroupConfidential + + + + + draft + + + + + + + + true + . + + + bk_main.xml + + + + + ${basedir}/../glossary/glossary-terms.xml + 1 + www.openpowerfoundation.org + + + + + + diff --git a/Intrinsics_Reference/sec_template_debugging.xml b/Intrinsics_Reference/sec_template_debugging.xml new file mode 100644 index 0000000..82f6f3a --- /dev/null +++ b/Intrinsics_Reference/sec_template_debugging.xml @@ -0,0 +1,228 @@ + +
+ + Debugging build failures + Maven/docbkx failures generally fall into these categories: + + + + + + + Correcting the document errors starts with understanding which type of failure has occurred and + understanding where to look in your document source. + +
+ Project structure errors + + Because the OpenPOWER Foundation documentation projects are not self-contained in the + GitHub repositories, forgetting to clone the Docs-Master project in addition + to the document project or cloning it in the wrong location is a common problem. Failures of this kind + produce the following error: +... +[INFO] Scanning for projects... +[ERROR] The build could not read 1 project -> [Help 1] +[ERROR] +[ERROR] The project org.openpowerfoundation.docs:workgroup-pom:1.0.0-SNAPSHOT (/home/scheel/Docs-Template/pom.xml) has 1 error +[ERROR] Non-resolvable parent POM: Could not find artifact org.openpowerfoundation.docs:master-pom:pom:1.0.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 11 -> [Help 2] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException +[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException +... + The identifying characteristic of this error type is the message, "Non-resolvable parent POM". This occurs because the + pom.xml file in the documentation project, called the "workgroup-pom" because of a project + <artifactId>workgroup-pom</artifactId> declaration, expects its parent pom file to be in the + location defined by the <relativePath>../Docs-Master/pom.xml</relativePath>, up one directory and + then in the Docs-Master director. + + + So, if you see the message "Non-resolvable parent POM", ensure that the Docs-Master project + and your project have been cloned + into the same parent directory. See for detailed directions on how to do this. + +
+ +
+ Docbook validation errors + + Validation errors are generally indicated in the build output with text like the following: +... +@@@@@@@@@@@@@@@@@@@@@@ +!!!VALIDATION ERRORS!! +!!!!!!!!!!!!!!!!!!!!!! + +Note: Open the temporary file: + +file:/home/user1/Docs-Template/template/target//bk_main.xml-invalid.xml + +to see all the errors in context. +You must correct the errors in the original +source DocBook or wadl files however. + +You can control whether build fails or not by +setting failOnValidationError to no in your pom. + +lineNumber: 272; columnNumber: 70; text not allowed here; expected element "address", ... + This error message contains three key pieces of information: + + + The full path and filename that contains the context for the failure. In the message above, this is +/home/user1/Docs-Template/template/target//bk_main.xml-invalid.xml. + + + The location within the file of the syntax error. For the above example, the key information is "lineNumber: 272; columnNumber: 70. + + + An explanation of the failure. This information in the above error reads, "text not allowed here; expected element "address", ...". + + + +
+ +
+ Build failures + + Build errors are easily identified as well. Below is an example: +... +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD FAILURE +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 4.827s +[INFO] Finished at: Wed Jul 29 14:55:33 CDT 2015 +[INFO] Final Memory: 17M/171M +[INFO] ------------------------------------------------------------------------ +[ERROR] Failed to execute goal org.openpowerfoundation.docs:openpowerdocs-maven-plugin:1.0.0:generate-webhelp (generate-webhelp) on project openpower-template-guide: Execution generate-webhelp of goal org.openpowerfoundation.docs:openpowerdocs-maven-plugin:1.0.0:generate-webhelp failed: XInclude resource error (sec_template_new_document.xml) and no fallback provided. XProc error err:XD0011: org.xml.sax.SAXParseException; systemId: file:/home/user1/openpower-foundation-docbkx-framework/doc/template/sec_template_new_document.xml; lineNumber: 55; columnNumber: 17; The element type "para" must be terminated by the matching end-tag "</para>". -> [Help 1] +... + + Like validation errors, three key pieces of information are again provided: + + + The full path and filename of our failure is +/home/user1/Docs-Template/template/sec_template_new_document.xml. + + + The location within the file of the error is "lineNumber: 55; columnNumber: 17. + + + An explanation of the failure begins with the text, "The element type "para" must be terminated by the + matching end-tag "</para>." + + + + With these details in hand for either error, one simply locates the offending syntax and makes the appropriate + correction. Online resources such as those listed in may be helpful. +
+ +
+ FO validation failures + + FO (formatting objects) validation failures are a slight bit more difficult to identify and require more effort to correct. A sample appears as follows: +... +Error + SXCH0003: org.apache.fop.fo.ValidationException: + "{http://www.w3.org/1999/XSL/Format}block" is not a valid child of "fo:list-block"! + (See position 70:-1): null:70:-1: "{http://www.w3.org/1999/XSL/Format}block" is not + a valid child of "fo:list-block"! (See position 70:-1) +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD FAILURE +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 35.900s +[INFO] Finished at: Sat Mar 19 15:54:34 CDT 2016 +[INFO] Final Memory: 107M/256M +[INFO] ------------------------------------------------------------------------ +[ERROR] Failed to execute goal org.openpowerfoundation.docs:openpowerdocs-maven-plugin:1.0.3:generate-webhelp (generate-webhelp) on project hwarch-caia-spec: Failed to transform to PDF: org.apache.fop.fo.ValidationException: "{http://www.w3.org/1999/XSL/Format}block" is not a valid child of "fo:list-block"! (See position 70:-1): null:70:-1: "{http://www.w3.org/1999/XSL/Format}block" is not a valid child of "fo:list-block"! (See position 70:-1) -> [Help 1] +... + + The "org.apache.fop.fo.ValidationException" text indicates that this error was during FO validation. The key pieces of information are as follows: + + + The error type is indicated in the text following the exception indictor. In our case, the error statement is: + "{http://www.w3.org/1999/XSL/Format}block" is not a valid child of "fo:list-block"!. This error clearly + has something to do with the nesting of a "fo:block" statement in a "fo:list-block" statement. + + + The location of the validation error is given in the statement + "See position 70:-1". These two values are the line number and character number of the error. So, our sample + error occurs on line 70, but the character number + of -1 is an indication that the line is too long to effectively point. + + + + What this information fails to detail is which file has the problem. To find the particular offending file, one must understand + the Docbook build process. This process begins by collecting all XML into a working copy of the main book file. The build failure error + in includes a reference to this file which will be found in the + .../target/ directory. It generally has the same name as the main book file of the document, which if copied + from the Master Template Guide project, will be bk_main.xml. When in doubt about + this file name, you will find it in the <includes> tag in the pom.xml file. + + Once all information has been pulled into the working XML file, the XML statements are transformed into FO statements + in preparation for building the PDF. This step generates a .fo + file which can be found in the .../target/docbkx/autopdf/ directory and typically has the same base file name as + the target PDF file. Again, the pom.xml file will clarify this name with the <pdfFilenameBase> + variable. + + If one locates and opens the .fo file, it becomes obvious that it was intended as a working file and is not readily readable. Therefore, the first + step to understanding this error is to make the FO file more readable. + The xmllint tool can be used to create a more readable FO file. Assuming you have been + working in the document directory, the follow steps can be used to produce a more readable XML file: + $ cd target/docbkx/autopdf +$ xmllint --nonet --noent --nowarning --version --timing --format -o outfile infile +xmllint: using libxml version 20901 + compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib Lzma +Parsing took 63 ms +Saving took 39 ms +Freeing took 9 ms +$ + + For your invocation of xmllint, substitute infile with the name of the Maven-generated + .fo file for your new project and pick a new outfile for the new .fo file. + + The xmllint utility may need to be loaded on your system. On an Ubuntu Linux system, + this utility is provided in the libxml2-utils package. To locate the proper package for your system, + you may need to reference Google. + + Now, with a nicely formatted FO file, we can re-invoke the FO Processor (FOP) directly and achieve a more readable error. To do this, invoke + fop as follows:$ fop -fo fofile and -pdf pdffile +Rendered page #1. +Rendered page #2. +Rendered page #3. +Rendered page #4. +Rendered page #5. +Rendered page #6. +Rendered page #7. +Exception +javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:block" is not a valid child of "fo:list-block"! (See position 7830:112) +$ + + As expected, the FOP again reports an exception. However, this time the position information appears more complete. With this new information + and a nicely formatted .fo file, one can find the format statements in error, find the context for the error, and then locate the correct source + DocBook (XML) file. With this information, one can inspect the document source to decide if the error is bad DocBook syntax or a tooling bug. If the latter, + please save the newly formatted .fo file and include it in the bug writeup. + + Fully understanding the error, may require knowing more about XSL FO syntax. Many such web sites exist for this, but + the XSL Formatting Objects Summary from W3C (World Wide Web Consortium) provides a good starting reference online at + https://www.w3.org/2002/08/XSLFOsummary.html. + +
+
+ diff --git a/Intrinsics_Reference/sec_template_existing_document.xml b/Intrinsics_Reference/sec_template_existing_document.xml new file mode 100644 index 0000000..b21896d --- /dev/null +++ b/Intrinsics_Reference/sec_template_existing_document.xml @@ -0,0 +1,95 @@ + +
+ + Modifying an existing document + + To begin editing an existing document, you must first clone two projects -- the master document framework project and + the specific document project. Begin by cloning the master document as described in . + + Once complete, obtain a copy of the desired document by cloning its project. For example, to clone this document, + Master Template Guide, from the + public OpenPOWER Foundation git repository, use this + command:$ git clone https://github.com/OpenPOWERFoundation/Docs-Template.git +Cloning into 'Docs-Template'... +Username for 'https://github.com': my_userid +Password for 'https://my_userid@github.com': my_password +remote: Counting objects: 62, done. +remote: Compressing objects: 100% (10/10), done. +remote: Total 62 (delta 2), reused 0 (delta 0), pack-reused 52 +Unpacking objects: 100% (62/62), done. +Checking connectivity... done. +$ + + To build a specific document such as the template guide, follow these steps from the directory where + you just cloned:$ cd Docs-Template/template +$ mvn clean +[INFO] Scanning for projects... +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] Building OpenPOWER Template Guide 1.0.0-SNAPSHOT +[INFO] ------------------------------------------------------------------------ +[INFO] +[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ openpower-template-guide --- +[INFO] Deleting ~/Docs-Template/template/target +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 0.353s +[INFO] Finished at: Wed Feb 25 12:54:47 CST 2015 +[INFO] Final Memory: 3M/7M +[INFO] ------------------------------------------------------------------------ +$ mvn generate-sources +[INFO] Scanning for projects... +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] Building OpenPOWER Template Guide 1.0.0-SNAPSHOT +[INFO] ------------------------------------------------------------------------ +[INFO] +[INFO] --- openpowerdocs-maven-plugin:1.0.0:generate-webhelp (generate-webhelp) @ openpower-template-guide --- +[INFO] Processing input file: bk_main.xml +... +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 20.361s +[INFO] Finished at: Wed Feb 25 12:55:15 CDT 2015 +[INFO] Final Memory: 30M/390M +[INFO] ------------------------------------------------------------------------ +$ + + The permutations of Maven invocations may be combined into one operation where the parameters are specified in the order + in which one wishes to execute them. Thus, the command mvn clean generate-sources would accomplish the + same thing as the above sequence of commands. + + If all goes well, the generated pdf should be available in ~/Docs-Template/template/target/docbkx/webhelp/template-guide/. + + For assistance correcting commmon build failures, see . + + Projects may contain multiple documents. While specific documents can be built by executing a + mvn clean generate-sources in the specific document directory, executing this command in + the base project directory will build all projects identified in the <module> list in the + top-level pom.xml file, known as the "workgroup-pom". + + You are now ready to begin making updates. Before diving deeply into new text, + you may want to review + to ensure that proper Work Product, + Work Process, and security values are selected for your document. + +
+ diff --git a/Intrinsics_Reference/sec_template_faq.xml b/Intrinsics_Reference/sec_template_faq.xml new file mode 100644 index 0000000..019963c --- /dev/null +++ b/Intrinsics_Reference/sec_template_faq.xml @@ -0,0 +1,34 @@ + +
+ + Frequently asked questions + The list of questions and answers may be helpful to first time document writers: + + + Do I have to follow the guidelines in of this guide? + No. HOWEVER, doing so makes it simpler for all community members to participate in maintaining your document. + + + Question 2... + Answer 2... + + + +
+ diff --git a/Intrinsics_Reference/sec_template_getting_started.xml b/Intrinsics_Reference/sec_template_getting_started.xml new file mode 100644 index 0000000..7d38fe0 --- /dev/null +++ b/Intrinsics_Reference/sec_template_getting_started.xml @@ -0,0 +1,105 @@ + +
+ + Getting started + To begin contributing to the OpenPOWER Foundation documentation, the following steps must be completed: + + + Installing tools + + + Creating accounts + + + Cloning master document information + + + + + Once complete, you can proceed to either or + as needed. + +
+ Installing tools + Only two tools are required to update documentation, git and maven. Git manages the documentation + source and maven provides the build framework to create the published content in PDF and html form. + Installation steps for these tools varies by operating system. + On Debian-based Linux operating systems (Ubuntu and Debian), install maven and git as follows: + # apt-get install git +# apt-get install maven + On RPM-based Linux operating systems (Fedora, RHEL, openSUSE, SLES), install maven and git as follows: + # yum install git +# yum install maven + On Mac OS X, use Macports to install maven and git as follows: + # port install git +# port install maven3 + or use Homebrew to install maven and git as follows: + $ brew install git +$ brew install maven + For information on how to setup the environment on Windows, see the following websites: + + + git for Windows - http://msysgit.github.io/ + + + Maven on Windows - + http://maven.apache.org/guides/getting-started/windows-prerequisites.html + + + + Modification of documentation source files requires a text editor. While standard editors like vim, emacs, or gedit can be used, + it is highly recommended that an editor be used which highlights XML or Docbook syntax. If your favorite editor does not include an + extension or plugin to accomplish this, you might consider using Bluefish to edit your docbook files. Details on this editor + can be found at http://bluefish.openoffice.nl/index.html. +
+ +
+ Creating accounts + All OpenPOWER project documentation is maintained in GitHub trees, public and private. The first + step to creating documentation will be joining the GitHub community. + To join the GitHub community, + apply at https://github.com/join. + The OpenPOWER Foundation documentation trees are grouped in the OpenPOWER Foundation project at + https://github.com/OpenPOWERFoundation. + Everyone should be able to see and access public trees like Docs-Master. However, + if you will be participating in private OpenPOWER Foundation trees, you will need to request access from the + Technical Steering Committee Chair, tsc-chair@openpowerfoundation.org. + To learn more about using git, see the online article in GitHub Help, "Good Resources for Learning Git and GitHub." at + + https://help.github.com/articles/good-resources-for-learning-git-and-github/. +
+ +
+ Cloning master document information + To successfully build OpenPOWER Foundation documents, common document files must be in place in addition to the specific + document files. These common files are obtained by cloning the OpenPOWER Foundation public project Docs-Master. + To clone the master template document framework use the clone git command:$ git clone https://github.com/OpenPOWERFoundation/Docs-Master.git +Cloning into 'Docs-Master'... +remote: Counting objects: 24, done. +remote: Compressing objects: 100% (18/18), done. +remote: Total 24 (delta 6), reused 20 (delta 5), pack-reused 0 +Unpacking objects: 100% (24/24), done. +Checking connectivity... done. +$ + More information can be found about the Docs-Master project online at + https://github.com/OpenPOWERFoundation/Docs-Master. Additional details about the OpenPOWER Foundation documentation structure + are explained in of this document. +
+
+ diff --git a/Intrinsics_Reference/sec_template_git_commands.xml b/Intrinsics_Reference/sec_template_git_commands.xml new file mode 100644 index 0000000..c66c351 --- /dev/null +++ b/Intrinsics_Reference/sec_template_git_commands.xml @@ -0,0 +1,182 @@ + +
+ + Common git commands + This section provides a list of commonly used git command invocations. All commands shown, except + the first one (git clone must be issued from within the project directory. + + + + + To clone a git tree for first time or temporary use via http, + use:$ git clone <URL> + The <URL> value for OpenPOWER Foundation GitHub projects can be found on the project web pages. + They generally take the form of https://github.com/OpenPOWERFoundation/project_name where the + project_name can be found on the OpenPOWER Foundation Git Hub community page at + https://github.com/OpenPOWERFoundation. The result of this + command will be a new directory with the same name as the project and in which will be the project files. + Trees can only be cloned once. To update a tree, use a git pull or git merge + command. + When cloning from a private tree, you will be prompted for your GitHub userid and password. + + + + To update a git tree with new files from the remote repository, + use:$ git pull + This command assumes that the local tree has not been updated since the clone or last pull. If updates have been made to + the local tree, the command will fail. Use the git status command to see what has changed in a local tree. + When pulling from a private tree, you will be prompted for your GitHub userid and password. + + + + To see the status of the local repository, + use:$ git status + This command identifies files which have changed in the local repository and provides suggestions on how to handle. + + Adding the -s parameter to the end of the command will provide a simplified view in which changed files + are listed with flags such as M for modified files, A for newly added files, + and ?? for new or unknown files. This parameter also suppresses suggested action information for the files. + + + + To add a new file or directory to a git tree, + use:$ git add <new_file> + The <new_file> value can be either a file or a whole directory and may include the path to + the target file or directory. This command will convert the status of file in the git status -s + command from ?? to A or move it from the "Untracked files" section to the + "Changes to be committed" section of the git status command. + + + + To remove a file from a git tree, + use:$ git rm <file> + The <file> value must be a file and may include wildcard characters or the path to + the target file. This command will both remove the file(s) from the directory and the git tree. Removed files will show in + a status modifier of D in the git status -s + command and be reflected in the "Changes not staged for commit" section of thegit status command + with a "deleted:" status. + + + + To remove a directory from a git tree, + use:$ git rm -rf <directory> + The <directory> value must be a directory name and may include wildcard characters or the path to + the target directory. This command will remove all files in the directory from the git tree, but will not remove the directory locally. + Standard operating system commands such as the Linux rmdir <directory> command must be issued separately to + remove the local directory. All removed files will show in + a status modifier of D in the git status -s + command and be reflected in the "Changes not staged for commit" section of thegit status command with a + "deleted:" status. Because git does not + track directories, they will not be reflected in status. + + + + To move or rename a file or directory in a git tree, + use:$ git mv <source> <destination> + The <source> value must be a file or directory and may include the path to + the target file. The <destination> value may be a file (if renaming a file) or a directory + if moving a file or directory. + This command will move or rename the file(s) in both the local and remote the git trees. + + + + To commit all local changes to the staging area for a git tree, + use:$ git commit -a + This command will invoke an editor for a commit message. A well-formatted commit message includes a + title on the first line, a blank line, one or more lines of details describing the changes, and a Developer's + Certificate of Orig (DCO) Sign-off statement at the end. Signed-off-by: Your name <your_email@domain.com> + For information on the DCO, see Developer Certificate Of Origin at + http://elinux.org/Developer_Certificate_Of_Origin. + + + + To push all locally staged changes to the remote git tree, + use:$ git push + When pushing to a private tree, you will be prompted for your GitHub userid and password. + + + + To see what tags exist in a git tree, + use:$ git tag + + + + To create a new tag locally, + use:$ git tag -a <tag_name> -m"text" + The tag_name represents the simple value of the tag. The text string + provides more description of the tag for readibility. + This command simply tags locally. See the next command for how to push the tag to the remote repository. + + + + To push a new tag from the local tree to the remote tree, + use:$ git push origin <tag_name> + This commands assumes the git tag command has been run on the local tree. + + + + To discard changes from a locally changed file and return to the last copy, + use:$ git checkout -- <file> + The <file> value must be a file and may include wildcard characters or the path to + the target file. + + + + To identify what changes have been made locally to a file + use:$ git diff <file> + The <file> value must be a file and may include wildcard characters or the path to + the target file. The output will be in format similar to the standalone diff command. + + + + + Additional resources about git can be found online at the following locations: + + + + + The GitHub Glossary at + https://help.github.com/articles/github-glossary/. + This site provides a list of common terms associated with git and GitHub. + + + + The GitHub Git Cheat Sheet at + + https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf. + This two page pdf provides a quick summary of many common commands. + + + + + The Git Reference at + http://gitref.org/. This is a deeper and more comprehensive reference of important commands. + + + + The git-scm.com Documentation library at + http://git-scm.com/doc. This site provides education in the form of books, videos, + and other tutorials for common git activities. + + + + + +
+ diff --git a/Intrinsics_Reference/sec_template_new_document.xml b/Intrinsics_Reference/sec_template_new_document.xml new file mode 100644 index 0000000..b76a836 --- /dev/null +++ b/Intrinsics_Reference/sec_template_new_document.xml @@ -0,0 +1,274 @@ + +
+ + Creating a new document + Creating a new document from scratch follows four simple steps: + + + Cloning the project source. + + + Finding a document framework. + + + Modifying core project files. + + + Adding new document content. + + + +
+ Clone the project source. + All documentation projects reside in a project directory maintained in GitHub, just like the + Docs-Master framework described in . In the same directory + where the Docs-Master project has been cloned, you will need to + clone the documentation source for your project. A list of the OpenPOWER Foundation projects can be found at + https://github.com/OpenPOWERFoundation/. Select + the project from this list. + + If you do not see the project for which you are looking, you may not be authorized to it. See + for details about joining the OpenPOWER Foundation private projects. If you + feel that you need a new GitHub project, work with the + Technical Steering Committee Chair, tsc-chair@openpowerfoundation.org, to request and get this setup. + + To clone an OpenPOWER Foundation project like Docs-Template issue the following + command:$ git clone https://github.com/OpenPOWERFoundation/Docs-Template.git +Cloning into 'Docs-Template'... +Username for 'https://github.com': my_userid +Password for 'https://my_userid@github.com': my_password +remote: Counting objects: 62, done. +remote: Compressing objects: 100% (10/10), done. +remote: Total 62 (delta 2), reused 0 (delta 0), pack-reused 52 +Unpacking objects: 100% (62/62), done. +Checking connectivity... done. +$ The results should look roughly something like above with actual numbers of objects, files, etc. varying + for different projects. + + Private projects prompt for a GitHub userid and and password. When cloning public projects, these prompts + are skipped. + + The base project has now been cloned. +
+ +
+ Finding a document framework + If this is your first document, in a brand new project (git tree), you have the fewest number of steps + to perform because your project should have been primed with a single project based on Docs-Template. + You can verify this by inspecting + the files in your project directory. A new project will contain a template directory, a pom.xml + file, a LICENSE file, and a README.md file. If this is the case, you simply + need to perform the following three steps: + + + + Navigate down to your project directory, called my_project for this example. This can be achieved + using the cd command: +$ cd ~/my_project +$ + This directory should contain the template folder used to prime the project. + + + Rename the template document directory to something new like my_doc. + To accomplish this, use the mv command:: +$ mv template/ my_doc + + + Change the project name in the workgroup POM.xml file. Using your editor, change this line + between the <modules> and the </modules> tags near the top of the + file:template +]]> to read like this:my_doc +]]> + + + + If this is not the first document in the project, then you can either begin by copying an existing document or by cloning the + Docs-Template project. To copy an existing project, follow these steps: + + + + Navigate down to your project directory, called my_project for this example. + This can be achieved using the cd command: +$ cd ~/my_project +$ + This directory should contain the folder name of the document wishing to be copied, called source_doc + for clarity in these directions. + + + To create a new document directory, simply create a new directory and copy the contents of the source_doc + directory. If creating a new directory named my_doc via a command line, the command + sequence would look like this: +$ mkdir my_doc +$ cp -r source_doc/* my_doc +$ + + + Add the new project to the workgroup POM.xml file. Using your editor, add the following lines + between the <modules> and the </modules> tags near the top of the file:my_doc +]]> + + + + Instead of copying an existing document, you may want to start with the template document source. The steps to do this + are similar to those above, but with a few more commands. The following commands will create a new document based on the + the master template: + + + + Navigate down to your project directory, called my_project for this example. + This can be achieved using the cd command: +$ cd ~/my_project +$ + This directory should contain any existing document folders along with at least a pom.xml file, a + LICENSE file, and a README.md file. + + + Clone the the template project into your working directory with this + command:$ git clone https://github.com/OpenPOWERFoundation/Docs-Template.git +Cloning into 'Docs-Template'... +Username for 'https://github.com': my_userid +Password for 'https://my_userid@github.com': my_password +remote: Counting objects: 62, done. +remote: Compressing objects: 100% (10/10), done. +remote: Total 62 (delta 2), reused 0 (delta 0), pack-reused 52 +Unpacking objects: 100% (62/62), done. +Checking connectivity... done. +$ + + + To create a new project directory, simply create a new directory and copy the contents of the Docs-Template/template + directory. If creating a new project named my_doc via a command line, the command + sequence would look like this: +$ mkdir my_doc +$ cp -r Docs-Template/template/* my_doc +$ + + + Once copied, the Docs-Template directory and all its contents should be removed from your project so that it does not + accidentally get included in your project. The command rm -rf Docs-Template + + + Finally, add the new project to the workgroup POM.xml file. Using your editor, add the following lines + between the <modules> and the </modules> tags near the top of the file:my_doc +]]> + + + + Before committing the project back to git, you will need to add the new directory to the git repository. This can + be performed using the git add my_doc/ command on the whole directory. + + + + You are now ready to begin making updates to your new document. The next section will provided detailed steps of where to + get started. +
+ +
+ Modifying core project files + The first step to customizing a new project is to modify two core project files--pom.xml + and bk_main.xml. Within these two files are XML comment tags that begin "<!-- TODO:" + to identify places which need customization. The surrounding comments will provide guidance on what needs to change and how + it may be changed. Simply work through each item, making updates as requested. + Pick your setting for document work product type (<workProduct>, + work flow status (<documentStatus>), and + security (<security>) + carefully. provides an overview of the process + and details the various settings needed in the document core project files. If you still have + questions after reading this section, consult with your Technical Steering Committee + representative. + Be sure to remember two key values you used in the pom.xml file, <webhelpDirname> + and <pdfFilenameBase>, as these will be used to locate your generated document. + When ready, build your new document using standard maven commands like + this:$ cd my_proj/my_doc +$ mvn clean +[INFO] Scanning for projects... +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] Building OpenPOWER Template Guide 1.0.0-SNAPSHOT +[INFO] ------------------------------------------------------------------------ +[INFO] +[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ openpower-template-guide --- +[INFO] Deleting ~/my_doc/my_proj/target +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 0.353s +[INFO] Finished at: Wed Feb 25 12:54:47 CST 2015 +[INFO] Final Memory: 3M/7M +[INFO] ------------------------------------------------------------------------ +$ mvn generate-sources +[INFO] Scanning for projects... +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] Building OpenPOWER Template Guide 1.0.0-SNAPSHOT +[INFO] ------------------------------------------------------------------------ +[INFO] +[INFO] --- openpowerdocs-maven-plugin:1.0.0:generate-webhelp (generate-webhelp) @ openpower-template-guide --- +[INFO] Processing input file: bk_main.xml +... +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 20.361s +[INFO] Finished at: Wed Feb 25 12:55:15 CDT 2015 +[INFO] Final Memory: 30M/390M +[INFO] ------------------------------------------------------------------------ +$ + If all goes well, the new generated pdf should be available in + target/docbkx/webhelp/<webhelpDirname>/<pdfFilenameBase>.pdf. + For assistance correcting commmon build failures, see . + + The permutations of Maven invocations may be combined into one operation where the parameters are specified in the order + in which one wishes to execute them. Thus, the command mvn clean generate-sources would accomplish the + same thing as the above sequence of commands. +
+ +
+ Adding new content + + The starting point for book content is the bk_main.xml file (or whatever to which it was renamed + in the previous step). Removal and additions of the main chapter files will be controlled by entries near the + end of that file which appear as follows: + + + + + + + + + + + + +]]> + + Copying and modifying existing files from the template or other documents is a great way to get started. When creating + whole new chapter or appendix files from scratch, the ch_example.xml and app_template.xml files + may serve as excellent starting points. For XML examples of various document structures, please see + and its supporting source files in this document. Online resources such as those listed in + may also be helpful. + + When creating new files for the project, remember to use the git add <file name> command to + add new files to the git tree. + +
+ +
+ diff --git a/Intrinsics_Reference/sec_template_policies.xml b/Intrinsics_Reference/sec_template_policies.xml new file mode 100644 index 0000000..ff8f382 --- /dev/null +++ b/Intrinsics_Reference/sec_template_policies.xml @@ -0,0 +1,59 @@ + +
+ + Policies and conventions + Most document style policies are established simply by using the template documentation framework. However, + by applying some conventions to the document source structure, community members will be able to work across more d + ocumentation projects. + The recommended documentation structure guidelines are as follows: + + + The head book file should be named with the prefix "bk_". + + + The document versioning as defined by the releaseinfo tag in the main book + file bk_xxx should be named "Revision N.N", not "Version N.N" or simply "N.N" + + + Chapters files should be named with the prefix "ch_". + + + Section and sub-section files should be named with the prefix "sec_". + + + Appendix files should be named with the prefix "app_". + + + Figures source and images should be placed in the figures sub-directory for the document. + + + + In addition to documentation structure, general community/project guidelines are as follows: + + + Contributions to the documentation projects should conform to the Developer Certificate + Of Origin as defined at + http://elinux.org/Developer_Certificate_Of_Origin. Commits to the GitHub project need + to contain the following line to indicate the submitter accepts the + DCO:Signed-off-by: Your name <your_email@domain.com> + + + + +
diff --git a/Intrinsics_Reference/sec_template_process.xml b/Intrinsics_Reference/sec_template_process.xml new file mode 100644 index 0000000..88f8391 --- /dev/null +++ b/Intrinsics_Reference/sec_template_process.xml @@ -0,0 +1,169 @@ + +
+ + Publishing OpenPOWER Documents + The OpenPOWER Foundation Work Group (WG) Process document + found in the OpenPOWER Foundation Members Community documents is the definitive guide for understanding + OpenPOWER Foundation documents and their work flow. The section strives to + provide an overview to help writers understand enough of the basics to know how to prepare their + document and what to expect as they proceed through various stages of document development from first + draft to specification publish. + + The first key concept to understand about OpenPOWER Foundation documents and the first + decision to make when creating a new document is available document types or "Work Products". + These fall into one of two categories -- Standards Track or Non-standards Track -- with the simple + distinguishing factor being use. If the purpose of a document is to define a specification or standard + for hardware or software, then the document is "Standards Track". Everything else is "Non-standards + Track." For example, this document is a non-stardard work product. + + Standards Track Work Products begin their life as Work Group Specification and may ultimately + become an OpenPOWER Standard. Their document lifecycle is defined in the following illustration: + +
+ Document work flow for Standard Track Work Products + + + + + +
+ + Standard Track Work Products begin their lives as Work Group Specifications and have security classifications + of Public (non-confidental), + Members-only (OpenPOWER Foundation Confidental), or Work Group-only (OpenPOWER Work Group Confidential). + The security classification impacts the review type -- either public or internal to the Foundation -- as appropriate. + Only Work Group Specifications classified as Public may proceed into OpenPOWER Standard Documents. Confidential + documents will remain Work Group Specifications. + + Non-standard Track Work Products exist simply as Work Group Notes. Their document + lifecycle follows this simplified workflow: + +
+ Document work flow for Non-standard Track Work Products + + + + + +
+ + Non-standard Track, Work Group Notes begin as Drafts and drop the "Draft" annotation once reviewed. Like + Standard Track Work Products, they may have security classifications as Public (non-confidential), Members-only + (OpenPOWER Foundation Confidential), or Work-Group only (OpenPOWER Work Group Confidential) which will + in turn dictate the review context (public or private). + + Once these decisions have been made, then they can be reflected into the document in the following ways: + + + + + The document Work Product type is defined in the document pom.xml file with the + <workProduct> variable. Valid settings are workgroupNotes, + workgroupSpecification, candidateStandard, and openpowerStandard. + Select the appropriate setting in the following section: + +workgroupNotes + + +]]> + + + + The document security is set in the document pom.xml file with the + <security> variable. Valid settings are public, + foundationConfidential, and workgroupConfidential. + Select the appropriate setting in the following section: + +workgroupConfidential + +]]> + + + + The document work flow status is set in the document pom.xml file with the + <documentStatus> variable. Valid settings are draft, + review, and published. + Select the appropriate setting in the following section: + +draft + +]]> + + + + The final place to make updates to a new document is in the <abstract> section of + the bk_main.xml file for the document. This section needs to be updated with the appropriate + work group information and document information. Typical text appears as follows: + + + The purpose of the Master Template Guide document is to provide a guide + for OpenPOWER documentation writers. As such, it provides directions, policies, + references, and examples of the XML Docbook environment. It is intended to be + used both in final product form (PDF and html) as a document and in source form + as a template for new documents. + This document is a Non-standard Track, Work Group Note work product + owned by the System Software Workgroup and handled in compliance with the + requirements outlined in the OpenPOWER Foundation Work Group (WG) + Process document. +]]> + As stated in the comment text of the book file, the first paragraph provides a typical abstract + statement about your particular document. The second paragraph provides more structured + text which should be updated with the appropriate Work Group name, Work Product type, + and Work Product process. The rest of the information in this paragraph should remain as-is. + + + + +
+ diff --git a/Intrinsics_Reference/sec_template_references.xml b/Intrinsics_Reference/sec_template_references.xml new file mode 100644 index 0000000..96a7344 --- /dev/null +++ b/Intrinsics_Reference/sec_template_references.xml @@ -0,0 +1,38 @@ + +
+ + Finding more information + The following lists of references may be helpful in learning about XML, Docbook, and/or Maven: + + + XML In a Nutshell by Elliotte Rusy Harold and W. Scott Means. Online at http://docstore.mik.ua/orelly/xml/xmlnut/index.htm. + + + DocBook 5: The Definitive Guide by Normal Walsh. Online at https://www.safaribooksonline.com/library/view/docbook-5-the/9781449380243/. + + + DocBook XSL: The Complete Guide by Bob Stayton. Online at http://www.sagehill.net/docbookxsl/. + + + Maven: The Complete Reference by Tim O'Brien, Manfred Moser, John Casey, Brian Fox, Jason Van Zyl, Eric Redmond, and Larry Shatzer. Online at http://books.sonatype.com/mvnref-book/reference/index.html. + + + +
+ diff --git a/Intrinsics_Reference/sec_template_structure.xml b/Intrinsics_Reference/sec_template_structure.xml new file mode 100644 index 0000000..67c8570 --- /dev/null +++ b/Intrinsics_Reference/sec_template_structure.xml @@ -0,0 +1,88 @@ + +
+ + Understanding the project structure + The OpenPOWER Foundation documentation build process involves dependency on a common + framework and shared files. As such a deeper explanation about the relationships of key projects and their + components may be helpful to prevent and diagnose documentation build problems. This section + provides a pictorial layout of key files and explains their roles and relationships. + + As mentioned multiple times throughout this guide, successful build of any OpenPOWER Foundation + document requires two things: + + The cloning of the Docs-Master project. + The cloning of the specific documentation project into the same parent directory as the + Docs-Master project. + + To begin to understand why, let us use a picture. The following graphic illustrates + the directory structure of three projects -- two + Docs-Master and Docs-Template, both existing OpenPOWER Foundation GitHub projects and a + hypothetical new project named my_project. + +
+ Directory structure and key files in the OpenPOWER Foundation Docbook projects + + + + + +
+ + To create this structure, one would clone the Docs-Master project to + get the Docs-Master directory and all its contents (shown above in green), + clone the Docs-Template project to get the Docs-Template directory + and all its contents (shown in blue), and clone my_project project to get the + my_project directory and all its contents (shown in red). + + Among these projects, the most important directory and project is Docs-Master. Without this project + and associated directory, no document will build. As depicted in the above figure, the Docs-Master directory + must sit at a level equal to all other project directories. Details on how to install this project can be found in the + section. + + Inside the Docs-Masterproject directory, the two most important pieces are a + commmon directory + and a pom.xml file. The directory contains common files used by all projects such as the common preface + (ch_preface.xml) and the common appendix (app_foundation.xml. The pom.xml file + in this directory serves as the "Master POM" for all builds. This file references the OpenPOWER Maven Plugin JAR + (found in the OpenPOWER Foundation Repository at + http://openpowerfoundation.org/repo.openpowerfoundation.org/) + used to control the OpenPOWER + Foundation document builds where all other dependencies, supporting tools, and document build rules are defined. + + The Docs-Template project and directory are depicted in blue in the above figure. The top level of the + project Docs-Template must be cloned into the same parent directory as the Docs-Master + for Maven builds to complete successfully. + At the top level of the Docs-Template project + are a pom.xml referred to as the "Workgroup POM" and a single document directory (template). + The "Workgroup POM" is a minimal POM file that locates the parent, "Master POM" in the Docs-Masterproject directory + with a <relativePath> definition of ../Docs-Master/pom.xml. + The document directory contains the unique files used to create the document. The two most important files in the + Docs-Template/template directory(and in any project) are the pom.xml or "Document POM" which describes + how to build the document and which points to the main document file, the bk_main.xml file. This book file + contains all the Docbook source, directly or through include statements (<xi:include href="..."), + to build the document. + + For completeness of understanding, a hypothetical project my_project is also depected in red. Like all + OpenPOWER Foundation projects, it is cloned at the correct level, equal to Docs-Master. Like the + Docs-Template project, it has a "Workgroup POM" which will differ only in the <modules> + section where it will describe two document projects, my_doc_1 and my_doc_2. But, each + document directory has similar contents to Docs-Template/template -- a "Document POM" (pom.xml) + and a "Main book file" (bk_main.xml). +
+ diff --git a/pom.xml b/pom.xml index 7e57d81..95a2307 100644 --- a/pom.xml +++ b/pom.xml @@ -18,5 +18,6 @@ Porting_Vector_Intrinsics + Intrinsics_Reference