From 68700f11666b841ca59dc3fad727f8e301598937 Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Thu, 7 Jun 2018 15:50:27 -0500 Subject: [PATCH] Incremental changes up through vec_nmsub. Signed-off-by: Bill Schmidt --- Intrinsics_Reference/ch_vec_reference.xml | 427 ++++++++++++++++------ 1 file changed, 318 insertions(+), 109 deletions(-) diff --git a/Intrinsics_Reference/ch_vec_reference.xml b/Intrinsics_Reference/ch_vec_reference.xml index 9b49bd2..07a58d1 100644 --- a/Intrinsics_Reference/ch_vec_reference.xml +++ b/Intrinsics_Reference/ch_vec_reference.xml @@ -11933,45 +11933,55 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_mule - Vector ... Spelled Out Name TBD + Vector Multiply Even - r = vec_mule (ARG1, ARG2) + r = vec_mule (a, b) Purpose: - Returns a vector containing the results of multiplying every second set of the corresponding elements of the given vectors, beginning with the first element. + Multiplies the even-numbered elements of the source vectors to + produce the target vector. - Result value: Assume that the elements of each vector are numbered beginning with 0. For each element n of the result vector, the value is the product of the value of element 2n of ARG1 and the value of element 2n of ARG2. + Result value: Each element + n of r is the + product of element 2n of a and element 2n of + b. Endian considerations: - None. + 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_mule - + + - + r - + - ARG1 + a - + - ARG2 + b - Example Implementation + Example LE Implementation + + + Example BE Implementation @@ -11987,7 +11997,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed short - sample implementation TBD + + vmulosh r,a,b + + + + + vmulesh r,a,b + @@ -12001,7 +12018,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned short - sample implementation TBD + + vmulouh r,a,b + + + + + vmuleuh r,a,b + @@ -12015,7 +12039,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed int - sample implementation TBD + + vmulosw r,a,b + + + + + vmulesw r,a,b + @@ -12029,7 +12060,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned int - sample implementation TBD + + vmulouw r,a,b + + + + + vmuleuw r,a,b + @@ -12043,7 +12081,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed char - sample implementation TBD + + vmulosb r,a,b + + + + + vmulesb r,a,b + @@ -12057,7 +12102,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned char - sample implementation TBD + + vmuloub r,a,b + + + + + vmuleub r,a,b + @@ -12069,45 +12121,55 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_mulo - Vector ... Spelled Out Name TBD + Vector Multiply Odd - r = vec_mulo (ARG1, ARG2) + r = vec_mulo (a, b) Purpose: - Returns a vector containing the results of multiplying every second set of corresponding elements of the given vectors, beginning with the second element. + Multiplies the odd-numbered elements of the source vectors to + produce the target vector. - Result value: Assume that the elements of each vector are numbered beginning with 0. For each element n of the result vector, the value is the product of the value of element 2n+1 of ARG1 and the value of element 2n+1 of ARG2. + Result value: Each element + n of r is the + product of element 2n+1 of a and element 2n+1 of + b. Endian considerations: - None. + 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_mulo - + + - + r - + - ARG1 + a - + - ARG2 + b - Example Implementation + Example LE Implementation + + + Example BE Implementation @@ -12123,7 +12185,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed short - sample implementation TBD + + vmulesh r,a,b + + + + + vmulosh r,a,b + @@ -12137,7 +12206,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned short - sample implementation TBD + + vmuleuh r,a,b + + + + + vmulouh r,a,b + @@ -12151,7 +12227,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed int - sample implementation TBD + + vmulesw r,a,b + + + + + vmulosw r,a,b + @@ -12165,7 +12248,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned int - sample implementation TBD + + vmuleuw r,a,b + + + + + vmulouw r,a,b + @@ -12179,7 +12269,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed char - sample implementation TBD + + vmulesb r,a,b + + + + + vmulosb r,a,b + @@ -12193,7 +12290,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned char - sample implementation TBD + + vmuleub r,a,b + + + + + vmuloub r,a,b + @@ -12205,15 +12309,20 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_nabs - Vector ... Spelled Out Name TBD + Vector Negated Absolute Value - r = vec_nabs (ARG1) + r = vec_nabs (a) Purpose: - Returns a vector containing the negated absolute values of the contents of the given vector. + Returns a vector containing the negated absolute values of the contents + of the source vector. - Result value: The value of each element of the result is the negated absolute value of the corresponding element of ARG1. For integer vectors, the arithmetic is modular. + Result value: The value of each + element of r is the negated absolute + value of the fcorresponding element of a. For integer vectors, the arithmetic is + modular. Endian considerations: None. @@ -12233,7 +12342,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> - ARG1 + a @@ -12250,7 +12359,11 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed char - sample implementation TBD + + vspltisw t,0 + vsububm u,t,a + vminsb r,u,a + @@ -12261,7 +12374,11 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed int - sample implementation TBD + + vspltisw t,0 + vsubuwm u,t,a + vminsw r,u,a + @@ -12272,7 +12389,11 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed long long - sample implementation TBD + + vspltisw t,0 + vsubudm u,t,a + vminsd r,u,a + @@ -12283,7 +12404,11 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed short - sample implementation TBD + + vspltisw t,0 + vsubuhm u,t,a + vminsh r,u,a + @@ -12294,7 +12419,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector double - sample implementation TBD + + xvnabsdp r,a + @@ -12305,7 +12432,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector float - sample implementation TBD + + xvnabssp r,a + @@ -12317,15 +12446,17 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_nand - Vector ... Spelled Out Name TBD + Vector NAND - r = vec_nand (ARG1, ARG2) + r = vec_nand (a, b) Purpose: Performs a bitwise NAND of the given vectors. - Result value: The result is the bitwise NAND of ARG1 and ARG2. + Result value: r is the bitwise + NAND of a and b. Endian considerations: None. @@ -12346,12 +12477,12 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> - ARG1 + a - ARG2 + b @@ -12371,7 +12502,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector bool char - sample implementation TBD + + xxlnand r,a,b + @@ -12385,7 +12518,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed char - sample implementation TBD + + xxlnand r,a,b + @@ -12399,7 +12534,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned char - sample implementation TBD + + xxlnand r,a,b + @@ -12413,7 +12550,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector bool int - sample implementation TBD + + xxlnand r,a,b + @@ -12427,7 +12566,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed int - sample implementation TBD + + xxlnand r,a,b + @@ -12441,7 +12582,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned int - sample implementation TBD + + xxlnand r,a,b + @@ -12455,7 +12598,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector bool long long - sample implementation TBD + + xxlnand r,a,b + @@ -12469,7 +12614,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed long long - sample implementation TBD + + xxlnand r,a,b + @@ -12483,7 +12630,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned long long - sample implementation TBD + + xxlnand r,a,b + @@ -12497,7 +12646,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector bool short - sample implementation TBD + + xxlnand r,a,b + @@ -12511,7 +12662,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed short - sample implementation TBD + + xxlnand r,a,b + @@ -12525,7 +12678,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector unsigned short - sample implementation TBD + + xxlnand r,a,b + @@ -12539,7 +12694,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector double - sample implementation TBD + + xxlnand r,a,b + @@ -12553,7 +12710,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector float - sample implementation TBD + + xxlnand r,a,b + @@ -12565,15 +12724,21 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_nearbyint - Vector ... Spelled Out Name TBD + Vector Nearby Integer r = vec_nearbyint (ARG1) Purpose: - Returns a vector containing the floating-point integral values nearest to the values of the corresponding elements of the given vector. + Returns a vector containing the floating-point integral values nearest to + the values of the corresponding elements of the source vector. - Result value: Each element of the result contains the nearest representable floating-point integral value to the value of the corresponding element of ARG1. When an input element value is exactly between two integer values, the result value with the largest absolute value is selected. + Result value: Each element of + r contains the nearest representable + floating-point integral value to the value of the corresponding element + of a. When an input element value is + exactly between two integer values, the input value with the larger + absolute value is selected. Endian considerations: None. @@ -12593,7 +12758,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> - ARG1 + a @@ -12610,7 +12775,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector double - sample implementation TBD + + xvrdpi r,a + @@ -12621,7 +12788,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector float - sample implementation TBD + + xvrspi r,a + @@ -12633,15 +12802,19 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_neg - Vector ... Spelled Out Name TBD + Vector Negate - r = vec_neg (ARG1) + r = vec_neg (a) Purpose: - Returns a vector containing the negated values of the contents of the given vector. + Returns a vector containing the negated values of the contents of the + source vector. - Result value: The value of each element of the result is the negated value of the corresponding element of ARG1. For integer vectors, the arithmetic is modular. + Result value: The value of each + element of r is the negated value of + the corresponding element of a. For + integer vectors, the arithmetic is modular. Endian considerations: None. @@ -12661,7 +12834,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> - ARG1 + a @@ -12678,7 +12851,10 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed char - sample implementation TBD + + vspltisw t,0 + vsububm r,t,a + @@ -12689,7 +12865,10 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed int - sample implementation TBD + + vspltisw t,0 + vsubuwm r,t,a + @@ -12700,7 +12879,10 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed long long - sample implementation TBD + + vspltisw t,0 + vsubudm r,t,a + @@ -12711,7 +12893,10 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector signed short - sample implementation TBD + + vspltisw t,0 + vsubuhm r,t,a + @@ -12722,7 +12907,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector double - sample implementation TBD + + xvnegdp r,a + @@ -12733,7 +12920,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector float - sample implementation TBD + + xvnegsp r,a + @@ -12745,15 +12934,21 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_nmadd - Vector ... Spelled Out Name TBD + Vector Negated Multiply-Add - r = vec_nmadd (ARG1, ARG2, ARG3) + r = vec_nmadd (a, b, c) Purpose: - Returns a vector containing the results of performing a negative multiply-add operation on the given vectors. + Returns a vector containing the results of performing a negated + multiply-add operation on the source vectors. - Result value: The value of each element of the result is the product of the corresponding elements of ARG1 and ARG2, added to the corresponding elements of ARG3, then multiplied by –1.0. + Result value: The value of each + element of r is the product of the + corresponding elements of a and + b, added to the corresponding elements + of c, then multiplied by + –1.0. Endian considerations: None. @@ -12768,24 +12963,24 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> - + r - + - ARG1 + a - + - ARG2 + b - + - ARG3 + c @@ -12808,7 +13003,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector double - sample implementation TBD + + xvnmaddadp r/c,a,b + @@ -12825,7 +13022,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector float - sample implementation TBD + + xvnmaddasp r/c,a,b + @@ -12837,15 +13036,21 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vec_nmsub - Vector ... Spelled Out Name TBD + Vector Negated Multiply-Subtract - r = vec_nmsub (ARG1, ARG2, ARG3) + r = vec_nmsub (a, b, c) Purpose: - Returns a vector containing the results of performing a negative multiply-subtract operation on the given vectors. + Returns a vector containing the results of performing a negated + multiply-subtract operation on the source vectors. - Result value: The value of each element of the result is the product of the corresponding elements of ARG1 and ARG2, subtracted from the corresponding element of ARG3, and then multiplied by –1.0. + Result value: The value of each + element of r is the value of the + corresponding element of c subtracted + from the product of the corresponding elements of a and b, and + then multiplied by –1.0. Endian considerations: None. @@ -12860,24 +13065,24 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> - + r - + - ARG1 + a - + - ARG2 + b - + - ARG3 + c @@ -12900,7 +13105,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector double - sample implementation TBD + + xvnmsubmdp r/a,b,c + @@ -12917,7 +13124,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="section_vec_intrinsics"> vector float - sample implementation TBD + + xvnmsubmsp r/a,b,c +