1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
//------------------------------------------------------------------------------
// GB_bitmap_subref_template: C = A(I,J) where A is bitmap/full
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2025, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
// C=A(I,J), where C and A are bitmap/full, numeric and non-iso
{
//--------------------------------------------------------------------------
// C = A(I,J)
//--------------------------------------------------------------------------
int64_t cnvals = 0 ;
if (GB_C_IS_BITMAP)
{
//----------------------------------------------------------------------
// C=A(I,J) non-iso numeric with A and C bitmap; both non-iso
//----------------------------------------------------------------------
#undef GB_IXJ_WORK
#define GB_IXJ_WORK(pA,pC) \
{ \
int8_t ab = Ab [pA] ; \
Cb [pC] = ab ; \
if (ab) \
{ \
/* Cx [pC] = Ax [pA] */ \
GB_COPY_ENTRY (pC, pA) \
task_cnvals++ ; \
} \
}
#include "template/GB_bitmap_assign_IxJ_template.c"
C->nvals = cnvals ;
}
else
{
//----------------------------------------------------------------------
// C=A(I,J) non-iso numeric with A and C full, both are non-iso
//----------------------------------------------------------------------
#undef GB_IXJ_WORK
#define GB_IXJ_WORK(pA,pC) \
{ \
/* Cx [pC] = Ax [pA] */ \
GB_COPY_ENTRY (pC, pA) \
}
#define GB_NO_CNVALS
#include "template/GB_bitmap_assign_IxJ_template.c"
#undef GB_NO_CNVALS
}
}
|