Added i8 packed math intrinsics

1. Added add, sub, mul packed math i8 intrinsics
2. Removed c++ packed data structures included from HCC

Change-Id: I1d109c5ce10c48b7cd3ea059478b88fc1de78499
TODO: Add better packed data structures support


[ROCm/hip commit: 12dd9df88f]
This commit is contained in:
Aditya Atluri
2016-11-17 01:09:12 -06:00
parent c7f6ddd612
commit da0a8cd032
3 changed files with 59 additions and 3 deletions
+36
View File
@@ -217,6 +217,42 @@ __device__ float __hip_ds_swizzlef(float src, int pattern) {
__device__ int __hip_move_dpp(int src, int dpp_ctrl, int row_mask, int bank_mask, bool bound_ctrl) {
return hc::__amdgcn_move_dpp(src, dpp_ctrl, row_mask, bank_mask, bound_ctrl);
}
#define MASK1 0x00ff00ff
#define MASK2 0xff00ff00
__device__ char4 __hip_hc_add8pk(char4 in1, char4 in2) {
char4 out;
unsigned one1 = in1.val & MASK1;
unsigned one2 = in2.val & MASK1;
out.val = (one1 + one2) & MASK1;
one1 = in1.val & MASK2;
one2 = in2.val & MASK2;
out.val = out.val | ((one1 + one2) & MASK2);
return out;
}
__device__ char4 __hip_hc_sub8pk(char4 in1, char4 in2) {
char4 out;
unsigned one1 = in1.val & MASK1;
unsigned one2 = in2.val & MASK1;
out.val = (one1 - one2) & MASK1;
one1 = in1.val & MASK2;
one2 = in2.val & MASK2;
out.val = out.val | ((one1 - one2) & MASK2);
return out;
}
__device__ char4 __hip_hc_mul8pk(char4 in1, char4 in2) {
char4 out;
unsigned one1 = in1.val & MASK1;
unsigned one2 = in2.val & MASK1;
out.val = (one1 * one2) & MASK1;
one1 = in1.val & MASK2;
one2 = in2.val & MASK2;
out.val = out.val | ((one1 * one2) & MASK2);
return out;
}
//=================================================================================================
// Thread-local storage:
//=================================================================================================