diff --git a/frame/3/gemm/3m1/bli_gemm3m1.c b/frame/3/gemm/3m1/bli_gemm3m1.c deleted file mode 100644 index 1c6f85ff3..000000000 --- a/frame/3/gemm/3m1/bli_gemm3m1.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_gemm3m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_gemm3m1_entry( alpha, a, b, beta, c ); - else - bli_gemm_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, k, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( gemm3m1, gemm3m1 ) - diff --git a/frame/3/gemm/3m1/bli_gemm3m1.h b/frame/3/gemm/3m1/bli_gemm3m1.h deleted file mode 100644 index 1c0664b28..000000000 --- a/frame/3/gemm/3m1/bli_gemm3m1.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_gemm3m1_cntl.h" -#include "bli_gemm3m1_entry.h" - -#include "bli_gemm3m1_ukr_ref.h" - - -// -// Prototype object-based interface. -// -void bli_gemm3m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( gemm3m1 ) - diff --git a/frame/3/gemm/3m1/bli_gemm3m1_cntl.h b/frame/3/gemm/3m1/bli_gemm3m1_cntl.h deleted file mode 100644 index a938ad694..000000000 --- a/frame/3/gemm/3m1/bli_gemm3m1_cntl.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm3m1_cntl_init( void ); -void bli_gemm3m1_cntl_finalize( void ); - diff --git a/frame/3/gemm/3m1/bli_gemm3m1_entry.c b/frame/3/gemm/3m1/bli_gemm3m1_entry.c deleted file mode 100644 index 9f36513c8..000000000 --- a/frame/3/gemm/3m1/bli_gemm3m1_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_gemm3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_gemm_front( alpha, a, b, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/gemm/3m1/bli_gemm3m1_entry.h b/frame/3/gemm/3m1/bli_gemm3m1_entry.h deleted file mode 100644 index 7df1749f0..000000000 --- a/frame/3/gemm/3m1/bli_gemm3m1_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/gemm/3m1/ukernels/bli_gemm3m1_ukr_ref.h b/frame/3/gemm/3m1/ukernels/bli_gemm3m1_ukr_ref.h deleted file mode 100644 index 7b7ddbc49..000000000 --- a/frame/3/gemm/3m1/ukernels/bli_gemm3m1_ukr_ref.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - dim_t k, \ - ctype* restrict alpha, \ - ctype* restrict a, \ - ctype* restrict b, \ - ctype* restrict beta, \ - ctype* restrict c, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( gemm3m1_ukr_ref ) - diff --git a/frame/3/gemm/3mh/bli_gemm3mh.c b/frame/3/gemm/3mh/bli_gemm3mh.c deleted file mode 100644 index 41e68d519..000000000 --- a/frame/3/gemm/3mh/bli_gemm3mh.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_gemm3mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_gemm3mh_entry( alpha, a, b, beta, c ); - else - bli_gemm_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, k, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( gemm3mh, gemm3mh ) - diff --git a/frame/3/gemm/3mh/bli_gemm3mh.h b/frame/3/gemm/3mh/bli_gemm3mh.h deleted file mode 100644 index b1b40b885..000000000 --- a/frame/3/gemm/3mh/bli_gemm3mh.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_gemm3mh_cntl.h" -#include "bli_gemm3mh_entry.h" - -#include "bli_gemm3mh_ukr_ref.h" - - -// -// Prototype object-based interface. -// -void bli_gemm3mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( gemm3mh ) - diff --git a/frame/3/gemm/3mh/bli_gemm3mh_entry.c b/frame/3/gemm/3mh/bli_gemm3mh_entry.c deleted file mode 100644 index 2f65aeb8c..000000000 --- a/frame/3/gemm/3mh/bli_gemm3mh_entry.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; - -void bli_gemm3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_gemm_front( alpha, a, b, beta, c, gemm3mh_cntl_ro ); - bli_gemm_front( alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_gemm_front( alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} - diff --git a/frame/3/gemm/3mh/bli_gemm3mh_entry.h b/frame/3/gemm/3mh/bli_gemm3mh_entry.h deleted file mode 100644 index 1bfac10df..000000000 --- a/frame/3/gemm/3mh/bli_gemm3mh_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/gemm/3mh/ukernels/bli_gemm3mh_ukr_ref.h b/frame/3/gemm/3mh/ukernels/bli_gemm3mh_ukr_ref.h deleted file mode 100644 index 5b34fff0d..000000000 --- a/frame/3/gemm/3mh/ukernels/bli_gemm3mh_ukr_ref.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - dim_t k, \ - ctype* restrict alpha, \ - ctype* restrict a, \ - ctype* restrict b, \ - ctype* restrict beta, \ - ctype* restrict c, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( gemm3mh_ukr_ref ) - diff --git a/frame/3/gemm/4m1/bli_gemm4m1.c b/frame/3/gemm/4m1/bli_gemm4m1.c deleted file mode 100644 index 4c9655719..000000000 --- a/frame/3/gemm/4m1/bli_gemm4m1.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_gemm4m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_gemm4m1_entry( alpha, a, b, beta, c ); - else - bli_gemm_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, k, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( gemm4m1, gemm4m1 ) - diff --git a/frame/3/gemm/4m1/bli_gemm4m1.h b/frame/3/gemm/4m1/bli_gemm4m1.h deleted file mode 100644 index c8c42a7c2..000000000 --- a/frame/3/gemm/4m1/bli_gemm4m1.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_gemm4m1_cntl.h" -#include "bli_gemm4m1_entry.h" - -#include "bli_gemm4m1_ukr_ref.h" - - -// -// Prototype object-based interface. -// -void bli_gemm4m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( gemm4m1 ) - diff --git a/frame/3/gemm/4m1/bli_gemm4m1_entry.h b/frame/3/gemm/4m1/bli_gemm4m1_entry.h deleted file mode 100644 index b74045ab1..000000000 --- a/frame/3/gemm/4m1/bli_gemm4m1_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/gemm/4mb/bli_gemm4mb.c b/frame/3/gemm/4mb/bli_gemm4mb.c deleted file mode 100644 index 7a8f11560..000000000 --- a/frame/3/gemm/4mb/bli_gemm4mb.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_gemm4mb( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_gemm4mb_entry( alpha, a, b, beta, c ); - else - bli_gemm_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, k, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( gemm4mb, gemm4mb ) - diff --git a/frame/3/gemm/4mb/bli_gemm4mb.h b/frame/3/gemm/4mb/bli_gemm4mb.h deleted file mode 100644 index 154bb99d4..000000000 --- a/frame/3/gemm/4mb/bli_gemm4mb.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_gemm4mb_cntl.h" -#include "bli_gemm4mb_entry.h" - -#include "bli_gemm4mb_ukr_ref.h" - - -// -// Prototype object-based interface. -// -void bli_gemm4mb( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( gemm4mb ) - diff --git a/frame/3/gemm/4mb/bli_gemm4mb_cntl.h b/frame/3/gemm/4mb/bli_gemm4mb_cntl.h deleted file mode 100644 index 676db4486..000000000 --- a/frame/3/gemm/4mb/bli_gemm4mb_cntl.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm4mb_cntl_init( void ); -void bli_gemm4mb_cntl_finalize( void ); - diff --git a/frame/3/gemm/4mb/bli_gemm4mb_entry.h b/frame/3/gemm/4mb/bli_gemm4mb_entry.h deleted file mode 100644 index c4c8fa38e..000000000 --- a/frame/3/gemm/4mb/bli_gemm4mb_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm4mb_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/gemm/4mb/ukernels/bli_gemm4mb_ukr_ref.h b/frame/3/gemm/4mb/ukernels/bli_gemm4mb_ukr_ref.h deleted file mode 100644 index dc9b336aa..000000000 --- a/frame/3/gemm/4mb/ukernels/bli_gemm4mb_ukr_ref.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - dim_t k, \ - ctype* restrict alpha, \ - ctype* restrict a, \ - ctype* restrict b, \ - ctype* restrict beta, \ - ctype* restrict c, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( gemm4mb_ukr_ref ) - diff --git a/frame/3/gemm/4mh/bli_gemm4mh.c b/frame/3/gemm/4mh/bli_gemm4mh.c deleted file mode 100644 index c71dc3d79..000000000 --- a/frame/3/gemm/4mh/bli_gemm4mh.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_gemm4mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_gemm4mh_entry( alpha, a, b, beta, c ); - else - bli_gemm_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, k, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( gemm4mh, gemm4mh ) - diff --git a/frame/3/gemm/4mh/bli_gemm4mh.h b/frame/3/gemm/4mh/bli_gemm4mh.h deleted file mode 100644 index cabf31fc0..000000000 --- a/frame/3/gemm/4mh/bli_gemm4mh.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_gemm4mh_cntl.h" -#include "bli_gemm4mh_entry.h" - -#include "bli_gemm4mh_ukr_ref.h" - - -// -// Prototype object-based interface. -// -void bli_gemm4mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( gemm4mh ) - diff --git a/frame/3/gemm/4mh/bli_gemm4mh_cntl.h b/frame/3/gemm/4mh/bli_gemm4mh_cntl.h deleted file mode 100644 index 2ced05dd9..000000000 --- a/frame/3/gemm/4mh/bli_gemm4mh_cntl.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm4mh_cntl_init( void ); -void bli_gemm4mh_cntl_finalize( void ); - diff --git a/frame/3/gemm/4mh/bli_gemm4mh_entry.c b/frame/3/gemm/4mh/bli_gemm4mh_entry.c deleted file mode 100644 index c57395400..000000000 --- a/frame/3/gemm/4mh/bli_gemm4mh_entry.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ii; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; - -void bli_gemm4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_gemm_front( alpha, a, b, beta, c, gemm4mh_cntl_rr ); - bli_gemm_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_gemm_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_gemm_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/gemm/4mh/bli_gemm4mh_entry.h b/frame/3/gemm/4mh/bli_gemm4mh_entry.h deleted file mode 100644 index 7fd94fa37..000000000 --- a/frame/3/gemm/4mh/bli_gemm4mh_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/gemm/4mh/ukernels/bli_gemm4mh_ukr_ref.h b/frame/3/gemm/4mh/ukernels/bli_gemm4mh_ukr_ref.h deleted file mode 100644 index 71000ef23..000000000 --- a/frame/3/gemm/4mh/ukernels/bli_gemm4mh_ukr_ref.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - dim_t k, \ - ctype* restrict alpha, \ - ctype* restrict a, \ - ctype* restrict b, \ - ctype* restrict beta, \ - ctype* restrict c, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( gemm4mh_ukr_ref ) - diff --git a/frame/3/gemm/bli_gemm.c b/frame/3/gemm/bli_gemm.c index 71e0e716f..15454a391 100644 --- a/frame/3/gemm/bli_gemm.c +++ b/frame/3/gemm/bli_gemm.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_gemm( obj_t* alpha, obj_t* a, obj_t* b, @@ -45,20 +44,22 @@ void bli_gemm( obj_t* alpha, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_gemm3mh_entry( alpha, a, b, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_gemm3m1_entry( alpha, a, b, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_gemm4mh_entry( alpha, a, b, beta, c ); - else if ( bli_4mb_is_enabled_dt( dt ) ) bli_gemm4mb_entry( alpha, a, b, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_gemm4m1_entry( alpha, a, b, beta, c ); - else bli_gemm_entry( alpha, a, b, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_gemmind_has_avail( dt ) ) + { + gemm_fp_t func = bli_gemmind_get_avail( dt ); + + return func( alpha, a, b, beta, c ); + } + + bli_gemm_front( alpha, a, b, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ trans_t transa, \ @@ -100,38 +101,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNC_BASIC( gemm, gemm ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC3U12 -#define GENTFUNC3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname, varname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC3U12_BASIC( gemm, gemm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC3U12_MIX_D( gemm, gemm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC3U12_MIX_P( gemm, gemm ) -#endif +INSERT_GENTFUNC_BASIC0( gemm ) diff --git a/frame/3/gemm/bli_gemm.h b/frame/3/gemm/bli_gemm.h index 88c6e1619..f18782e34 100644 --- a/frame/3/gemm/bli_gemm.h +++ b/frame/3/gemm/bli_gemm.h @@ -34,9 +34,7 @@ #include "bli_gemm_cntl.h" #include "bli_gemm_blocksize.h" -#include "bli_gemm_query.h" #include "bli_gemm_check.h" -#include "bli_gemm_entry.h" #include "bli_gemm_front.h" #include "bli_gemm_int.h" @@ -51,11 +49,6 @@ #include "bli_gemm_ukr_ref.h" -#include "bli_gemm4mh.h" -#include "bli_gemm4mb.h" -#include "bli_gemm4m1.h" -#include "bli_gemm3mh.h" -#include "bli_gemm3m1.h" // // Prototype object-based interface. @@ -67,9 +60,6 @@ void bli_gemm( obj_t* alpha, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -88,33 +78,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROT_BASIC( gemm ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT3U12 -#define GENTPROT3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - dim_t k, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT3U12_BASIC( gemm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT3U12_MIX_D( gemm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT3U12_MIX_P( gemm ) -#endif - diff --git a/frame/3/gemm/bli_gemm_blk_var1f.c b/frame/3/gemm/bli_gemm_blk_var1f.c index 21fa3c879..6209b57d5 100644 --- a/frame/3/gemm/bli_gemm_blk_var1f.c +++ b/frame/3/gemm/bli_gemm_blk_var1f.c @@ -84,7 +84,7 @@ void bli_gemm_blk_var1f( obj_t* a, m_trans = bli_obj_length_after_trans( *a ); dim_t start, end; bli_get_range( thread, 0, m_trans, - bli_determine_reg_blocksize( a, cntl_blocksize( cntl ) ), + bli_blksz_mult_for_obj( a, cntl_blocksize( cntl ) ), &start, &end ); // Partition along the m dimension. diff --git a/frame/3/gemm/bli_gemm_blk_var2f.c b/frame/3/gemm/bli_gemm_blk_var2f.c index b43e40829..93bc862d0 100644 --- a/frame/3/gemm/bli_gemm_blk_var2f.c +++ b/frame/3/gemm/bli_gemm_blk_var2f.c @@ -83,7 +83,7 @@ void bli_gemm_blk_var2f( obj_t* a, n_trans = bli_obj_width_after_trans( *b ); dim_t start, end; bli_get_range( thread, 0, n_trans, - bli_determine_reg_blocksize( b, cntl_blocksize( cntl ) ), + bli_blksz_mult_for_obj( b, cntl_blocksize( cntl ) ), &start, &end ); // Partition along the n dimension. diff --git a/frame/3/gemm/bli_gemm_blocksize.c b/frame/3/gemm/bli_gemm_blocksize.c index 2298295ad..52aadf79a 100644 --- a/frame/3/gemm/bli_gemm_blocksize.c +++ b/frame/3/gemm/bli_gemm_blocksize.c @@ -61,13 +61,13 @@ dim_t bli_gemm_determine_kc_f( dim_t i, // the blocksizes unchanged. if ( bli_obj_root_is_herm_or_symm( *a ) ) { - mnr = bli_info_get_default_mr( dt ); + mnr = bli_blksz_mr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mnr ); b_max = bli_align_dim_to_mult( b_max, mnr ); } else if ( bli_obj_root_is_herm_or_symm( *b ) ) { - mnr = bli_info_get_default_nr( dt ); + mnr = bli_blksz_nr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mnr ); b_max = bli_align_dim_to_mult( b_max, mnr ); } @@ -105,13 +105,13 @@ dim_t bli_gemm_determine_kc_b( dim_t i, // the blocksizes unchanged. if ( bli_obj_root_is_herm_or_symm( *a ) ) { - mnr = bli_info_get_default_mr( dt ); + mnr = bli_blksz_mr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mnr ); b_max = bli_align_dim_to_mult( b_max, mnr ); } else if ( bli_obj_root_is_herm_or_symm( *b ) ) { - mnr = bli_info_get_default_nr( dt ); + mnr = bli_blksz_nr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mnr ); b_max = bli_align_dim_to_mult( b_max, mnr ); } diff --git a/frame/3/gemm/bli_gemm_cntl.c b/frame/3/gemm/bli_gemm_cntl.c index cec3047cb..12e28f451 100644 --- a/frame/3/gemm/bli_gemm_cntl.c +++ b/frame/3/gemm/bli_gemm_cntl.c @@ -47,6 +47,7 @@ blksz_t* gemm_upanel_a_align; blksz_t* gemm_upanel_b_align; func_t* gemm_ukrs; +func_t* gemm_ref_ukrs; packm_t* gemm_packa_cntl; packm_t* gemm_packb_cntl; @@ -114,11 +115,21 @@ void bli_gemm_cntl_init() BLIS_UPANEL_B_ALIGN_SIZE_Z, 0 ); - // Attach the register blksz_t objects as sub-blocksizes to the cache + // Attach the register blksz_t objects as blocksize multiples to the cache // blksz_t objects. - bli_blksz_obj_attach_to( gemm_mr, gemm_mc ); - bli_blksz_obj_attach_to( gemm_nr, gemm_nc ); - bli_blksz_obj_attach_to( gemm_kr, gemm_kc ); + bli_blksz_obj_attach_mult_to( gemm_mr, gemm_mc ); + bli_blksz_obj_attach_mult_to( gemm_nr, gemm_nc ); + bli_blksz_obj_attach_mult_to( gemm_kr, gemm_kc ); + + + // Attach the mr and nr blksz_t objects to each cache blksz_t object. + // The primary example of why this is needed relates to nudging kc. + // In hemm, symm, trmm, or trmm3, we need to know both mr and nr, + // since the multiple we target in nudging depends on whether the + // structured matrix is on the left or the right. + bli_blksz_obj_attach_mr_nr_to( gemm_mr, gemm_nr, gemm_mc ); + bli_blksz_obj_attach_mr_nr_to( gemm_mr, gemm_nr, gemm_nc ); + bli_blksz_obj_attach_mr_nr_to( gemm_mr, gemm_nr, gemm_kc ); // Create function pointer object for each datatype-specific gemm @@ -131,6 +142,15 @@ void bli_gemm_cntl_init() BLIS_ZGEMM_UKERNEL, BLIS_ZGEMM_UKERNEL_PREFERS_CONTIG_ROWS ); + // Create function pointer object for reference micro-kernels. + gemm_ref_ukrs + = + bli_func_obj_create( BLIS_SGEMM_UKERNEL_REF, FALSE, + BLIS_DGEMM_UKERNEL_REF, FALSE, + BLIS_CGEMM_UKERNEL_REF, FALSE, + BLIS_ZGEMM_UKERNEL_REF, FALSE ); + + // Create control tree objects for packm operations. gemm_packa_cntl = @@ -233,6 +253,7 @@ void bli_gemm_cntl_finalize() bli_blksz_obj_free( gemm_upanel_b_align ); bli_func_obj_free( gemm_ukrs ); + bli_func_obj_free( gemm_ref_ukrs ); bli_cntl_obj_free( gemm_packa_cntl ); bli_cntl_obj_free( gemm_packb_cntl ); diff --git a/frame/3/gemm/bli_gemm_entry.c b/frame/3/gemm/bli_gemm_entry.c deleted file mode 100644 index a2b0e8d38..000000000 --- a/frame/3/gemm/bli_gemm_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_gemm_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_gemm_front( alpha, a, b, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/gemm/bli_gemm_entry.h b/frame/3/gemm/bli_gemm_entry.h deleted file mode 100644 index bf23e4e0e..000000000 --- a/frame/3/gemm/bli_gemm_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_gemm_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/gemm/bli_gemm_query.c b/frame/3/gemm/bli_gemm_query.c deleted file mode 100644 index cb4311fe3..000000000 --- a/frame/3/gemm/bli_gemm_query.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern func_t* gemm3mh_ukrs; -extern func_t* gemm3m1_ukrs; -extern func_t* gemm4mh_ukrs; -extern func_t* gemm4mb_ukrs; -extern func_t* gemm4m1_ukrs; -extern func_t* gemm_ukrs; - -func_t* bli_gemm_query_ukrs( num_t dt ) -{ - if ( bli_3mh_is_enabled_dt( dt ) ) return gemm3mh_ukrs; - else if ( bli_3m1_is_enabled_dt( dt ) ) return gemm3m1_ukrs; - else if ( bli_4mh_is_enabled_dt( dt ) ) return gemm4mh_ukrs; - else if ( bli_4mb_is_enabled_dt( dt ) ) return gemm4mb_ukrs; - else if ( bli_4m1_is_enabled_dt( dt ) ) return gemm4m1_ukrs; - else return gemm_ukrs; -} - -char* bli_gemm_query_impl_string( num_t dt ) -{ - if ( bli_3mh_is_enabled_dt( dt ) ) return bli_3mh_get_string(); - else if ( bli_3m1_is_enabled_dt( dt ) ) return bli_3m1_get_string(); - else if ( bli_4mh_is_enabled_dt( dt ) ) return bli_4mh_get_string(); - else if ( bli_4mb_is_enabled_dt( dt ) ) return bli_4mb_get_string(); - else if ( bli_4m1_is_enabled_dt( dt ) ) return bli_4m1_get_string(); - else return bli_native_get_string(); -} - -kimpl_t bli_gemm_ukernel_impl_type( num_t dt ) -{ - func_t* ukrs = bli_gemm_query_ukrs( dt ); - void* p = bli_func_obj_query( dt, ukrs ); - - if ( p == BLIS_SGEMM_UKERNEL_REF || - p == BLIS_DGEMM_UKERNEL_REF || - p == BLIS_CGEMM_UKERNEL_REF || - p == BLIS_ZGEMM_UKERNEL_REF - ) return BLIS_REFERENCE_UKERNEL; - else if ( - p == BLIS_CGEMM3MH_UKERNEL_REF || - p == BLIS_ZGEMM3MH_UKERNEL_REF || - p == BLIS_CGEMM3M1_UKERNEL_REF || - p == BLIS_ZGEMM3M1_UKERNEL_REF - ) return BLIS_VIRTUAL3M_UKERNEL; - else if ( - p == BLIS_CGEMM4MH_UKERNEL_REF || - p == BLIS_ZGEMM4MH_UKERNEL_REF || - p == BLIS_CGEMM4MB_UKERNEL_REF || - p == BLIS_ZGEMM4MB_UKERNEL_REF || - p == BLIS_CGEMM4M1_UKERNEL_REF || - p == BLIS_ZGEMM4M1_UKERNEL_REF - ) return BLIS_VIRTUAL4M_UKERNEL; - else - return BLIS_OPTIMIZED_UKERNEL; -} - diff --git a/frame/3/gemm/bli_gemm_query.h b/frame/3/gemm/bli_gemm_query.h deleted file mode 100644 index 5466c5938..000000000 --- a/frame/3/gemm/bli_gemm_query.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -func_t* bli_gemm_query_ukrs( num_t dt ); -char* bli_gemm_query_impl_string( num_t dt ); - -kimpl_t bli_gemm_ukernel_impl_type( num_t dt ); diff --git a/frame/3/hemm/3m1/bli_hemm3m1.c b/frame/3/hemm/3m1/bli_hemm3m1.c deleted file mode 100644 index aad8039a5..000000000 --- a/frame/3/hemm/3m1/bli_hemm3m1.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_hemm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_hemm3m1_entry( side, alpha, a, b, beta, c ); - else - bli_hemm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( hemm3m1, hemm3m1 ) - diff --git a/frame/3/hemm/3m1/bli_hemm3m1.h b/frame/3/hemm/3m1/bli_hemm3m1.h deleted file mode 100644 index 414f9924b..000000000 --- a/frame/3/hemm/3m1/bli_hemm3m1.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_hemm3m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_hemm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( hemm3m1 ) - diff --git a/frame/3/hemm/3m1/bli_hemm3m1_entry.c b/frame/3/hemm/3m1/bli_hemm3m1_entry.c deleted file mode 100644 index b4f3c572b..000000000 --- a/frame/3/hemm/3m1/bli_hemm3m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_hemm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_hemm_front( side, alpha, a, b, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/hemm/3m1/bli_hemm3m1_entry.h b/frame/3/hemm/3m1/bli_hemm3m1_entry.h deleted file mode 100644 index 262363b89..000000000 --- a/frame/3/hemm/3m1/bli_hemm3m1_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_hemm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/hemm/3mh/bli_hemm3mh.c b/frame/3/hemm/3mh/bli_hemm3mh.c deleted file mode 100644 index fd9613e5d..000000000 --- a/frame/3/hemm/3mh/bli_hemm3mh.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_hemm3mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_hemm3mh_entry( side, alpha, a, b, beta, c ); - else - bli_hemm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( hemm3mh, hemm3mh ) - diff --git a/frame/3/hemm/3mh/bli_hemm3mh.h b/frame/3/hemm/3mh/bli_hemm3mh.h deleted file mode 100644 index 92ab3e9e5..000000000 --- a/frame/3/hemm/3mh/bli_hemm3mh.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_hemm3mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_hemm3mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( hemm3mh ) - diff --git a/frame/3/hemm/3mh/bli_hemm3mh_entry.c b/frame/3/hemm/3mh/bli_hemm3mh_entry.c deleted file mode 100644 index 480c8a7be..000000000 --- a/frame/3/hemm/3mh/bli_hemm3mh_entry.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; - -void bli_hemm3mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_hemm_front( side, alpha, a, b, beta, c, gemm3mh_cntl_ro ); - bli_hemm_front( side, alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_hemm_front( side, alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} - diff --git a/frame/3/hemm/3mh/bli_hemm3mh_entry.h b/frame/3/hemm/3mh/bli_hemm3mh_entry.h deleted file mode 100644 index c01f01a22..000000000 --- a/frame/3/hemm/3mh/bli_hemm3mh_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_hemm3mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/hemm/4m1/bli_hemm4m1.c b/frame/3/hemm/4m1/bli_hemm4m1.c deleted file mode 100644 index 8f2f1c6dc..000000000 --- a/frame/3/hemm/4m1/bli_hemm4m1.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_hemm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_hemm4m1_entry( side, alpha, a, b, beta, c ); - else - bli_hemm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( hemm4m1, hemm4m1 ) - diff --git a/frame/3/hemm/4m1/bli_hemm4m1.h b/frame/3/hemm/4m1/bli_hemm4m1.h deleted file mode 100644 index 0e38d1a4f..000000000 --- a/frame/3/hemm/4m1/bli_hemm4m1.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_hemm4m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_hemm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( hemm4m1 ) - diff --git a/frame/3/hemm/4m1/bli_hemm4m1_entry.c b/frame/3/hemm/4m1/bli_hemm4m1_entry.c deleted file mode 100644 index d955321c0..000000000 --- a/frame/3/hemm/4m1/bli_hemm4m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_hemm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_hemm_front( side, alpha, a, b, beta, c, - gemm4m1_cntl ); -} - diff --git a/frame/3/hemm/4m1/bli_hemm4m1_entry.h b/frame/3/hemm/4m1/bli_hemm4m1_entry.h deleted file mode 100644 index fc5e2d006..000000000 --- a/frame/3/hemm/4m1/bli_hemm4m1_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_hemm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/hemm/4mh/bli_hemm4mh.c b/frame/3/hemm/4mh/bli_hemm4mh.c deleted file mode 100644 index f5eb1a5e2..000000000 --- a/frame/3/hemm/4mh/bli_hemm4mh.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_hemm4mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_hemm4mh_entry( side, alpha, a, b, beta, c ); - else - bli_hemm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( hemm4mh, hemm4mh ) - diff --git a/frame/3/hemm/4mh/bli_hemm4mh.h b/frame/3/hemm/4mh/bli_hemm4mh.h deleted file mode 100644 index dc11aa698..000000000 --- a/frame/3/hemm/4mh/bli_hemm4mh.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_hemm4mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_hemm4mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( hemm4mh ) - diff --git a/frame/3/hemm/4mh/bli_hemm4mh_entry.c b/frame/3/hemm/4mh/bli_hemm4mh_entry.c deleted file mode 100644 index e734d2186..000000000 --- a/frame/3/hemm/4mh/bli_hemm4mh_entry.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; -extern gemm_t* gemm4mh_cntl_ii; - -void bli_hemm4mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_hemm_front( side, alpha, a, b, beta, c, gemm4mh_cntl_rr ); - bli_hemm_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_hemm_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_hemm_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/hemm/4mh/bli_hemm4mh_entry.h b/frame/3/hemm/4mh/bli_hemm4mh_entry.h deleted file mode 100644 index a5f031b02..000000000 --- a/frame/3/hemm/4mh/bli_hemm4mh_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_hemm4mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/hemm/bli_hemm.c b/frame/3/hemm/bli_hemm.c index 7dbc585d8..64cac73bd 100644 --- a/frame/3/hemm/bli_hemm.c +++ b/frame/3/hemm/bli_hemm.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_hemm( side_t side, obj_t* alpha, obj_t* a, @@ -46,19 +45,22 @@ void bli_hemm( side_t side, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_hemm3mh_entry( side, alpha, a, b, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_hemm3m1_entry( side, alpha, a, b, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_hemm4mh_entry( side, alpha, a, b, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_hemm4m1_entry( side, alpha, a, b, beta, c ); - else bli_hemm_entry( side, alpha, a, b, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_hemmind_has_avail( dt ) ) + { + hemm_fp_t func = bli_hemmind_get_avail( dt ); + + return func( side, alpha, a, b, beta, c ); + } + + bli_hemm_front( side, alpha, a, b, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ side_t side, \ @@ -105,39 +107,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNC_BASIC( hemm, hemm ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC3U12 -#define GENTFUNC3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname, varname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC3U12_BASIC( hemm, hemm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC3U12_MIX_D( hemm, hemm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC3U12_MIX_P( hemm, hemm ) -#endif +INSERT_GENTFUNC_BASIC0( hemm ) diff --git a/frame/3/hemm/bli_hemm.h b/frame/3/hemm/bli_hemm.h index fea541fea..0335c6a86 100644 --- a/frame/3/hemm/bli_hemm.h +++ b/frame/3/hemm/bli_hemm.h @@ -33,14 +33,8 @@ */ #include "bli_hemm_check.h" -#include "bli_hemm_entry.h" #include "bli_hemm_front.h" -#include "bli_hemm4mh.h" -#include "bli_hemm4m1.h" -#include "bli_hemm3mh.h" -#include "bli_hemm3m1.h" - // // Prototype object-based interface. @@ -53,9 +47,6 @@ void bli_hemm( side_t side, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -75,34 +66,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROT_BASIC( hemm ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT3U12 -#define GENTPROT3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT3U12_BASIC( hemm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT3U12_MIX_D( hemm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT3U12_MIX_P( hemm ) -#endif - diff --git a/frame/3/hemm/bli_hemm_entry.c b/frame/3/hemm/bli_hemm_entry.c deleted file mode 100644 index 3003af76c..000000000 --- a/frame/3/hemm/bli_hemm_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_hemm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_hemm_front( side, alpha, a, b, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/hemm/bli_hemm_entry.h b/frame/3/hemm/bli_hemm_entry.h deleted file mode 100644 index c05034f0e..000000000 --- a/frame/3/hemm/bli_hemm_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_hemm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/her2k/3m1/bli_her2k3m1.c b/frame/3/her2k/3m1/bli_her2k3m1.c deleted file mode 100644 index a2dc93cbf..000000000 --- a/frame/3/her2k/3m1/bli_her2k3m1.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_her2k3m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_her2k3m1_entry( alpha, a, b, beta, c ); - else - bli_her2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( her2k3m1, her2k3m1 ) - diff --git a/frame/3/her2k/3m1/bli_her2k3m1.h b/frame/3/her2k/3m1/bli_her2k3m1.h deleted file mode 100644 index 88fbdf2d7..000000000 --- a/frame/3/her2k/3m1/bli_her2k3m1.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_her2k3m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_her2k3m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( her2k3m1 ) - diff --git a/frame/3/her2k/3m1/bli_her2k3m1_entry.c b/frame/3/her2k/3m1/bli_her2k3m1_entry.c deleted file mode 100644 index 88eb932ea..000000000 --- a/frame/3/her2k/3m1/bli_her2k3m1_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_her2k3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_her2k_front( alpha, a, b, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/her2k/3m1/bli_her2k3m1_entry.h b/frame/3/her2k/3m1/bli_her2k3m1_entry.h deleted file mode 100644 index 7ab5b727b..000000000 --- a/frame/3/her2k/3m1/bli_her2k3m1_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/her2k/3mh/bli_her2k3mh.c b/frame/3/her2k/3mh/bli_her2k3mh.c deleted file mode 100644 index 7a52ee88d..000000000 --- a/frame/3/her2k/3mh/bli_her2k3mh.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_her2k3mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_her2k3mh_entry( alpha, a, b, beta, c ); - else - bli_her2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( her2k3mh, her2k3mh ) - diff --git a/frame/3/her2k/3mh/bli_her2k3mh.h b/frame/3/her2k/3mh/bli_her2k3mh.h deleted file mode 100644 index 0838fcb1a..000000000 --- a/frame/3/her2k/3mh/bli_her2k3mh.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_her2k3mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_her2k3mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( her2k3mh ) - diff --git a/frame/3/her2k/3mh/bli_her2k3mh_entry.h b/frame/3/her2k/3mh/bli_her2k3mh_entry.h deleted file mode 100644 index b6e33a40c..000000000 --- a/frame/3/her2k/3mh/bli_her2k3mh_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/her2k/4m1/bli_her2k4m1.c b/frame/3/her2k/4m1/bli_her2k4m1.c deleted file mode 100644 index 383597851..000000000 --- a/frame/3/her2k/4m1/bli_her2k4m1.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_her2k4m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_her2k4m1_entry( alpha, a, b, beta, c ); - else - bli_her2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( her2k4m1, her2k4m1 ) - diff --git a/frame/3/her2k/4m1/bli_her2k4m1.h b/frame/3/her2k/4m1/bli_her2k4m1.h deleted file mode 100644 index 0b453b902..000000000 --- a/frame/3/her2k/4m1/bli_her2k4m1.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_her2k4m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_her2k4m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( her2k4m1 ) - diff --git a/frame/3/her2k/4m1/bli_her2k4m1_entry.c b/frame/3/her2k/4m1/bli_her2k4m1_entry.c deleted file mode 100644 index 7d43fdf51..000000000 --- a/frame/3/her2k/4m1/bli_her2k4m1_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_her2k4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_her2k_front( alpha, a, b, beta, c, - gemm4m1_cntl ); -} - diff --git a/frame/3/her2k/4m1/bli_her2k4m1_entry.h b/frame/3/her2k/4m1/bli_her2k4m1_entry.h deleted file mode 100644 index f6d8c47e1..000000000 --- a/frame/3/her2k/4m1/bli_her2k4m1_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/her2k/4mh/bli_her2k4mh.c b/frame/3/her2k/4mh/bli_her2k4mh.c deleted file mode 100644 index 8a8917cc3..000000000 --- a/frame/3/her2k/4mh/bli_her2k4mh.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_her2k4mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_her2k4mh_entry( alpha, a, b, beta, c ); - else - bli_her2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( her2k4mh, her2k4mh ) - diff --git a/frame/3/her2k/4mh/bli_her2k4mh.h b/frame/3/her2k/4mh/bli_her2k4mh.h deleted file mode 100644 index 02cba6c33..000000000 --- a/frame/3/her2k/4mh/bli_her2k4mh.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_her2k4mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_her2k4mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( her2k4mh ) - diff --git a/frame/3/her2k/4mh/bli_her2k4mh_entry.c b/frame/3/her2k/4mh/bli_her2k4mh_entry.c deleted file mode 100644 index 6547b819f..000000000 --- a/frame/3/her2k/4mh/bli_her2k4mh_entry.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; -extern gemm_t* gemm4mh_cntl_ii; - -void bli_her2k4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_her2k_front( alpha, a, b, beta, c, gemm4mh_cntl_rr ); - bli_her2k_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_her2k_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_her2k_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/her2k/4mh/bli_her2k4mh_entry.h b/frame/3/her2k/4mh/bli_her2k4mh_entry.h deleted file mode 100644 index 943a428a6..000000000 --- a/frame/3/her2k/4mh/bli_her2k4mh_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/her2k/attic/bli_her2k_blk_var1f.c b/frame/3/her2k/attic/bli_her2k_blk_var1f.c deleted file mode 100644 index 4c7d1ff6d..000000000 --- a/frame/3/her2k/attic/bli_her2k_blk_var1f.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -void bli_her2k_blk_var1f( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ) -{ - obj_t a1, a1_pack; - obj_t bh_pack; - obj_t b1, b1_pack; - obj_t ah_pack; - obj_t c1, c1_pack; - - dim_t i; - dim_t b_alg; - dim_t m_trans; - - // Initialize all pack objects that are passed into packm_init(). - bli_obj_init_pack( &a1_pack ); - bli_obj_init_pack( &bh_pack ); - bli_obj_init_pack( &b1_pack ); - bli_obj_init_pack( &ah_pack ); - bli_obj_init_pack( &c1_pack ); - - // Query dimension in partitioning direction. - m_trans = bli_obj_length_after_trans( *c ); - - // Scale C by beta (if instructed). - bli_scalm_int( &BLIS_ONE, - c, - cntl_sub_scalm( cntl ) ); - - // - // Perform first rank-k update: C = C + alpha * A * B'. - // - - // Initialize object for packing B'. - bli_packm_init( bh, &bh_pack, - cntl_sub_packm_b( cntl ) ); - - // Pack B' (if instructed). - bli_packm_int( bh, &bh_pack, - cntl_sub_packm_b( cntl ) ); - - // Partition along the m dimension. - for ( i = 0; i < m_trans; i += b_alg ) - { - // Determine the current algorithmic blocksize. - b_alg = bli_determine_blocksize_f( i, m_trans, a, - cntl_blocksize( cntl ) ); - - // Acquire partitions for A1 and C1. - bli_acquire_mpart_t2b( BLIS_SUBPART1, - i, b_alg, a, &a1 ); - bli_acquire_mpart_t2b( BLIS_SUBPART1, - i, b_alg, c, &c1 ); - - // Initialize objects for packing A1 and C1. - bli_packm_init( &a1, &a1_pack, - cntl_sub_packm_a( cntl ) ); - bli_packm_init( &c1, &c1_pack, - cntl_sub_packm_c( cntl ) ); - - // Pack A1 (if instructed). - bli_packm_int( &a1, &a1_pack, - cntl_sub_packm_a( cntl ) ); - - // Pack C1 (if instructed). - bli_packm_int( &c1, &c1_pack, - cntl_sub_packm_c( cntl ) ); - - // Perform herk subproblem. - bli_herk_int( &BLIS_ONE, - &a1_pack, - &bh_pack, - &BLIS_ONE, - &c1_pack, - cntl_sub_herk( cntl ) ); - - // Unpack C1 (if C1 was packed). - bli_unpackm_int( &c1_pack, &c1, - cntl_sub_unpackm_c( cntl ) ); - } - - // If any packing buffers were acquired within packm, release them back - // to the memory manager. - bli_obj_release_pack( &a1_pack ); - bli_obj_release_pack( &bh_pack ); - - // This variant executes two rank-k updates. Therefore, if the - // internal beta scalar on matrix C is non-zero, we must use it only - // for the first rank-k update (and then BLIS_ONE for the other). - bli_obj_scalar_reset( c ); - - // - // Perform second rank-k update: C = C + conj(alpha) * B * A'. - // - - // Initialize object for packing A'. - bli_packm_init( ah, &ah_pack, - cntl_sub_packm_b( cntl ) ); - - // Pack A' (if instructed). - bli_packm_int( ah, &ah_pack, - cntl_sub_packm_b( cntl ) ); - - // Partition along the m dimension. - for ( i = 0; i < m_trans; i += b_alg ) - { - // Determine the current algorithmic blocksize. - b_alg = bli_determine_blocksize_f( i, m_trans, b, - cntl_blocksize( cntl ) ); - - // Acquire partitions for B1 and C1. - bli_acquire_mpart_t2b( BLIS_SUBPART1, - i, b_alg, b, &b1 ); - bli_acquire_mpart_t2b( BLIS_SUBPART1, - i, b_alg, c, &c1 ); - - // Initialize objects for packing B1 and C1. - bli_packm_init( &b1, &b1_pack, - cntl_sub_packm_a( cntl ) ); - bli_packm_init( &c1, &c1_pack, - cntl_sub_packm_c( cntl ) ); - - // Pack B1 (if instructed). - bli_packm_int( &b1, &b1_pack, - cntl_sub_packm_a( cntl ) ); - - // Pack C1 (if instructed). - bli_packm_int( &c1, &c1_pack, - cntl_sub_packm_c( cntl ) ); - - // Perform herk subproblem. - bli_herk_int( &BLIS_ONE, - &b1_pack, - &ah_pack, - &BLIS_ONE, - &c1_pack, - cntl_sub_herk( cntl ) ); - - // Unpack C1 (if C1 was packed). - bli_unpackm_int( &c1_pack, &c1, - cntl_sub_unpackm_c( cntl ) ); - } - - // If any packing buffers were acquired within packm, release them back - // to the memory manager. - bli_obj_release_pack( &b1_pack ); - bli_obj_release_pack( &ah_pack ); - bli_obj_release_pack( &c1_pack ); -} - diff --git a/frame/3/her2k/attic/bli_her2k_blk_var1f.h b/frame/3/her2k/attic/bli_her2k_blk_var1f.h deleted file mode 100644 index 39a98c12e..000000000 --- a/frame/3/her2k/attic/bli_her2k_blk_var1f.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k_blk_var1f( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ); - diff --git a/frame/3/her2k/attic/bli_her2k_blk_var2f.c b/frame/3/her2k/attic/bli_her2k_blk_var2f.c deleted file mode 100644 index 8809642a3..000000000 --- a/frame/3/her2k/attic/bli_her2k_blk_var2f.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -void bli_her2k_blk_var2f( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ) -{ - obj_t a_pack, aS_pack; - obj_t bh1, bh1_pack; - obj_t b_pack, bS_pack; - obj_t ah1, ah1_pack; - obj_t c1; - obj_t c1S, c1S_pack; - - dim_t i; - dim_t b_alg; - dim_t n_trans; - subpart_t stored_part; - - // Initialize all pack objects that are passed into packm_init(). - bli_obj_init_pack( &a_pack ); - bli_obj_init_pack( &bh1_pack ); - bli_obj_init_pack( &b_pack ); - bli_obj_init_pack( &ah1_pack ); - bli_obj_init_pack( &c1S_pack ); - - // The upper and lower variants are identical, except for which - // merged subpartition is acquired in the loop body. - if ( bli_obj_is_lower( *c ) ) stored_part = BLIS_SUBPART1B; - else stored_part = BLIS_SUBPART1T; - - // Query dimension in partitioning direction. - n_trans = bli_obj_width_after_trans( *c ); - - // Scale C by beta (if instructed). - bli_scalm_int( &BLIS_ONE, - c, - cntl_sub_scalm( cntl ) ); - - // Initialize objects for packing A and B. - bli_packm_init( a, &a_pack, - cntl_sub_packm_a( cntl ) ); - bli_packm_init( b, &b_pack, - cntl_sub_packm_a( cntl ) ); - - // Pack A (if instructed). - bli_packm_int( a, &a_pack, - cntl_sub_packm_a( cntl ) ); - - // Pack B (if instructed). - bli_packm_int( b, &b_pack, - cntl_sub_packm_a( cntl ) ); - - // Partition along the n dimension. - for ( i = 0; i < n_trans; i += b_alg ) - { - // Determine the current algorithmic blocksize. - b_alg = bli_determine_blocksize_f( i, n_trans, bh, - cntl_blocksize( cntl ) ); - - // Acquire partitions for B1', A1', and C1. - bli_acquire_mpart_l2r( BLIS_SUBPART1, - i, b_alg, bh, &bh1 ); - bli_acquire_mpart_l2r( BLIS_SUBPART1, - i, b_alg, ah, &ah1 ); - bli_acquire_mpart_l2r( BLIS_SUBPART1, - i, b_alg, c, &c1 ); - - // Partition off the stored region of C1 and the corresponding regions - // of A_pack and B_pack. - bli_acquire_mpart_t2b( stored_part, - i, b_alg, &c1, &c1S ); - bli_acquire_mpart_t2b( stored_part, - i, b_alg, &a_pack, &aS_pack ); - bli_acquire_mpart_t2b( stored_part, - i, b_alg, &b_pack, &bS_pack ); - - // Initialize objects for packing B1', A1', and C1. - bli_packm_init( &bh1, &bh1_pack, - cntl_sub_packm_b( cntl ) ); - bli_packm_init( &ah1, &ah1_pack, - cntl_sub_packm_b( cntl ) ); - bli_packm_init( &c1S, &c1S_pack, - cntl_sub_packm_c( cntl ) ); - - // Pack B1' (if instructed). - bli_packm_int( &bh1, &bh1_pack, - cntl_sub_packm_b( cntl ) ); - - // Pack A1' (if instructed). - bli_packm_int( &ah1, &ah1_pack, - cntl_sub_packm_b( cntl ) ); - - // Pack C1 (if instructed). - bli_packm_int( &c1S, &c1S_pack, - cntl_sub_packm_c( cntl ) ); - - // Perform her2k subproblem. - bli_her2k_int( &BLIS_ONE, - &aS_pack, - &bh1_pack, - &BLIS_ONE, - &bS_pack, - &ah1_pack, - &BLIS_ONE, - &c1S_pack, - cntl_sub_her2k( cntl ) ); - - // Unpack C1 (if C1 was packed). - bli_unpackm_int( &c1S_pack, &c1S, - cntl_sub_unpackm_c( cntl ) ); - } - - // If any packing buffers were acquired within packm, release them back - // to the memory manager. - bli_obj_release_pack( &a_pack ); - bli_obj_release_pack( &bh1_pack ); - bli_obj_release_pack( &b_pack ); - bli_obj_release_pack( &ah1_pack ); - bli_obj_release_pack( &c1S_pack ); -} - diff --git a/frame/3/her2k/attic/bli_her2k_blk_var2f.h b/frame/3/her2k/attic/bli_her2k_blk_var2f.h deleted file mode 100644 index 9cf42cb63..000000000 --- a/frame/3/her2k/attic/bli_her2k_blk_var2f.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k_blk_var2f( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ); - diff --git a/frame/3/her2k/attic/bli_her2k_blk_var3f.c b/frame/3/her2k/attic/bli_her2k_blk_var3f.c deleted file mode 100644 index d504ffcf8..000000000 --- a/frame/3/her2k/attic/bli_her2k_blk_var3f.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -void bli_her2k_blk_var3f( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ) -{ - obj_t a1, a1_pack; - obj_t bh1, bh1_pack; - obj_t b1, b1_pack; - obj_t ah1, ah1_pack; - obj_t c_pack; - - dim_t i; - dim_t b_alg; - dim_t k_trans; - - // Initialize all pack objects that are passed into packm_init(). - bli_obj_init_pack( &a1_pack ); - bli_obj_init_pack( &bh1_pack ); - bli_obj_init_pack( &b1_pack ); - bli_obj_init_pack( &ah1_pack ); - bli_obj_init_pack( &c_pack ); - - // Query dimension in partitioning direction. - k_trans = bli_obj_width_after_trans( *a ); - - // Scale C by beta (if instructed). - bli_scalm_int( &BLIS_ONE, - c, - cntl_sub_scalm( cntl ) ); - - // Initialize object for packing C. - bli_packm_init( c, &c_pack, - cntl_sub_packm_c( cntl ) ); - - // Pack C (if instructed). - bli_packm_int( c, &c_pack, - cntl_sub_packm_c( cntl ) ); - - // Partition along the k dimension. - for ( i = 0; i < k_trans; i += b_alg ) - { - // Determine the current algorithmic blocksize. - b_alg = bli_determine_blocksize_f( i, k_trans, bh, - cntl_blocksize( cntl ) ); - - // Acquire partitions for A1 and B1'. - bli_acquire_mpart_l2r( BLIS_SUBPART1, - i, b_alg, a, &a1 ); - bli_acquire_mpart_t2b( BLIS_SUBPART1, - i, b_alg, bh, &bh1 ); - - // Initialize objects for packing A1 and B1'. - bli_packm_init( &a1, &a1_pack, - cntl_sub_packm_a( cntl ) ); - bli_packm_init( &bh1, &bh1_pack, - cntl_sub_packm_b( cntl ) ); - - // Pack A1 (if instructed). - bli_packm_int( &a1, &a1_pack, - cntl_sub_packm_a( cntl ) ); - - // Pack B1' (if instructed). - bli_packm_int( &bh1, &bh1_pack, - cntl_sub_packm_b( cntl ) ); - - // Acquire partitions for B1 and A1'. - bli_acquire_mpart_l2r( BLIS_SUBPART1, - i, b_alg, b, &b1 ); - bli_acquire_mpart_t2b( BLIS_SUBPART1, - i, b_alg, ah, &ah1 ); - - // Initialize objects for packing B1 and A1'. - bli_packm_init( &b1, &b1_pack, - cntl_sub_packm_a( cntl ) ); - bli_packm_init( &ah1, &ah1_pack, - cntl_sub_packm_b( cntl ) ); - - // Pack B1 (if instructed). - bli_packm_int( &b1, &b1_pack, - cntl_sub_packm_a( cntl ) ); - - // Pack A1' (if instructed). - bli_packm_int( &ah1, &ah1_pack, - cntl_sub_packm_b( cntl ) ); - - // Perform herk subproblem. - bli_her2k_int( &BLIS_ONE, - &a1_pack, - &bh1_pack, - &BLIS_ONE, - &b1_pack, - &ah1_pack, - &BLIS_ONE, - &c_pack, - cntl_sub_her2k( cntl ) ); - - // This variant executes multiple rank-2k updates. Therefore, if the - // internal beta scalar on matrix C is non-zero, we must use it - // only for the first iteration (and then BLIS_ONE for all others). - // And since c_pack is a local obj_t, we can simply overwrite the - // internal beta scalar with BLIS_ONE once it has been used in the - // first iteration. - if ( i == 0 ) bli_obj_scalar_reset( &c_pack ); - } - - // Unpack C (if C was packed). - bli_unpackm_int( &c_pack, c, - cntl_sub_unpackm_c( cntl ) ); - - // If any packing buffers were acquired within packm, release them back - // to the memory manager. - bli_obj_release_pack( &a1_pack ); - bli_obj_release_pack( &bh1_pack ); - bli_obj_release_pack( &b1_pack ); - bli_obj_release_pack( &ah1_pack ); - bli_obj_release_pack( &c_pack ); -} - diff --git a/frame/3/her2k/attic/bli_her2k_blk_var3f.h b/frame/3/her2k/attic/bli_her2k_blk_var3f.h deleted file mode 100644 index 9b4c3eee7..000000000 --- a/frame/3/her2k/attic/bli_her2k_blk_var3f.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k_blk_var3f( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ); - diff --git a/frame/3/her2k/attic/bli_her2k_cntl.c b/frame/3/her2k/attic/bli_her2k_cntl.c deleted file mode 100644 index b718706e0..000000000 --- a/frame/3/her2k/attic/bli_her2k_cntl.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern scalm_t* scalm_cntl; - -extern blksz_t* gemm_mc; -extern blksz_t* gemm_nc; -extern blksz_t* gemm_kc; -extern blksz_t* gemm_mr; -extern blksz_t* gemm_nr; -extern blksz_t* gemm_kr; - -extern func_t* gemm_ukrs; - -extern herk_t* herk_cntl_bp_ke; - -packm_t* her2k_packa_cntl; -packm_t* her2k_packb_cntl; - -her2k_t* her2k_cntl_bp_ke; -her2k_t* her2k_cntl_op_bp; -her2k_t* her2k_cntl_mm_op; -her2k_t* her2k_cntl_vl_mm; - -her2k_t* her2k_cntl; - - -void bli_her2k_cntl_init() -{ - - // Create control tree objects for packm operations. - her2k_packa_cntl - = - bli_packm_cntl_obj_create( BLIS_BLOCKED, - BLIS_VARIANT2, - her2k_mr, - her2k_kr, - FALSE, // do NOT invert diagonal - FALSE, // reverse iteration if upper? - FALSE, // reverse iteration if lower? - BLIS_PACKED_ROW_PANELS, - BLIS_BUFFER_FOR_A_BLOCK ); - - her2k_packb_cntl - = - bli_packm_cntl_obj_create( BLIS_BLOCKED, - BLIS_VARIANT2, - her2k_kr, - her2k_nr, - FALSE, // do NOT invert diagonal - FALSE, // reverse iteration if upper? - FALSE, // reverse iteration if lower? - BLIS_PACKED_COL_PANELS, - BLIS_BUFFER_FOR_B_PANEL ); - - - // Create control tree object for lowest-level block-panel kernel. - her2k_cntl_bp_ke - = - bli_her2k_cntl_obj_create( BLIS_UNB_OPT, - BLIS_VARIANT2, - NULL, - gemm_ukrs, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL ); - - // Create control tree object for outer panel (to block-panel) - // problem. - her2k_cntl_op_bp - = - bli_her2k_cntl_obj_create( BLIS_BLOCKED, - BLIS_VARIANT1, - her2k_mc, - NULL, - NULL, - her2k_packa_cntl, - her2k_packb_cntl, - NULL, - her2k_cntl_bp_ke, - herk_cntl_bp_ke, - NULL ); - - // Create control tree object for general problem via multiple - // rank-k (outer panel) updates. - her2k_cntl_mm_op - = - bli_her2k_cntl_obj_create( BLIS_BLOCKED, - BLIS_VARIANT3, - her2k_kc, - NULL, - NULL, - NULL, - NULL, - NULL, - her2k_cntl_op_bp, - NULL, - NULL ); - - // Create control tree object for very large problem via multiple - // general problems. - her2k_cntl_vl_mm - = - bli_her2k_cntl_obj_create( BLIS_BLOCKED, - BLIS_VARIANT2, - her2k_nc, - NULL, - NULL, - NULL, - NULL, - NULL, - her2k_cntl_mm_op, - NULL, - NULL ); - - // Alias the "master" her2k control tree to a shorter name. - her2k_cntl = her2k_cntl_vl_mm; -} - -void bli_her2k_cntl_finalize() -{ - bli_cntl_obj_free( her2k_packa_cntl ); - bli_cntl_obj_free( her2k_packb_cntl ); - - bli_cntl_obj_free( her2k_cntl_bp_ke ); - bli_cntl_obj_free( her2k_cntl_op_bp ); - bli_cntl_obj_free( her2k_cntl_mm_op ); - bli_cntl_obj_free( her2k_cntl_vl_mm ); -} - -her2k_t* bli_her2k_cntl_obj_create( impl_t impl_type, - varnum_t var_num, - blksz_t* b, - func_t* gemm_ukrs_, - scalm_t* sub_scalm, - packm_t* sub_packm_a, - packm_t* sub_packm_b, - packm_t* sub_packm_c, - her2k_t* sub_her2k, - herk_t* sub_herk, - unpackm_t* sub_unpackm_c ) -{ - her2k_t* cntl; - - cntl = ( her2k_t* ) bli_malloc( sizeof(her2k_t) ); - - cntl->impl_type = impl_type; - cntl->var_num = var_num; - cntl->b = b; - cntl->gemm_ukrs = gemm_ukrs_; // avoid name conflict with global symbol - cntl->sub_scalm = sub_scalm; - cntl->sub_packm_a = sub_packm_a; - cntl->sub_packm_b = sub_packm_b; - cntl->sub_packm_c = sub_packm_c; - cntl->sub_her2k = sub_her2k; - cntl->sub_herk = sub_herk; - cntl->sub_unpackm_c = sub_unpackm_c; - - return cntl; -} - diff --git a/frame/3/her2k/attic/bli_her2k_cntl.h b/frame/3/her2k/attic/bli_her2k_cntl.h deleted file mode 100644 index 7eb03f75d..000000000 --- a/frame/3/her2k/attic/bli_her2k_cntl.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -struct her2k_s -{ - impl_t impl_type; - varnum_t var_num; - blksz_t* b; - func_t* gemm_ukrs; - struct scalm_s* sub_scalm; - struct packm_s* sub_packm_a; - struct packm_s* sub_packm_b; - struct packm_s* sub_packm_c; - struct her2k_s* sub_her2k; - struct herk_s* sub_herk; - struct unpackm_s* sub_unpackm_c; -}; -typedef struct her2k_s her2k_t; - -#define cntl_sub_her2k( cntl ) cntl->sub_her2k - -void bli_her2k_cntl_init( void ); -void bli_her2k_cntl_finalize( void ); -her2k_t* bli_her2k_cntl_obj_create( impl_t impl_type, - varnum_t var_num, - blksz_t* b, - func_t* gemm_ukrs, - scalm_t* sub_scalm, - packm_t* sub_pack_a, - packm_t* sub_pack_b, - packm_t* sub_pack_c, - her2k_t* sub_her2k, - herk_t* sub_herk, - unpackm_t* sub_unpack_c ); - diff --git a/frame/3/her2k/attic/bli_her2k_int.c b/frame/3/her2k/attic/bli_her2k_int.c deleted file mode 100644 index 714c229de..000000000 --- a/frame/3/her2k/attic/bli_her2k_int.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -#define FUNCPTR_T her2k_fp - -typedef void (*FUNCPTR_T)( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ); - -static FUNCPTR_T vars[2][4][3] = -{ - // lower - { - // unblocked optimized unblocked blocked - { NULL, NULL, bli_her2k_blk_var1f }, - { NULL, bli_her2k_l_ker_var2, bli_her2k_blk_var2f }, - { NULL, NULL, bli_her2k_blk_var3f }, - { NULL, NULL, NULL }, - }, - // upper - { - // unblocked optimized unblocked blocked - { NULL, NULL, bli_her2k_blk_var1f }, - { NULL, bli_her2k_u_ker_var2, bli_her2k_blk_var2f }, - { NULL, NULL, bli_her2k_blk_var3f }, - { NULL, NULL, NULL }, - } -}; - -void bli_her2k_int( obj_t* alpha_abh, - obj_t* a, - obj_t* bh, - obj_t* alpha_bah, - obj_t* b, - obj_t* ah, - obj_t* beta, - obj_t* c, - her2k_t* cntl ) -{ - obj_t a_local; - obj_t bh_local; - obj_t b_local; - obj_t ah_local; - obj_t c_local; - varnum_t n; - impl_t i; - bool_t uplo; - FUNCPTR_T f; - - // Check parameters. - if ( bli_error_checking_is_enabled() ) - bli_her2k_int_check( alpha_abh, a, bh, alpha_bah, b, ah, beta, c, cntl ); - - // If C has a zero dimension, return early. - if ( bli_obj_has_zero_dim( *c ) ) return; - - // If A or B has a zero dimension, scale C by beta and return early. - if ( bli_obj_has_zero_dim( *a ) || - bli_obj_has_zero_dim( *ah ) || - bli_obj_has_zero_dim( *b ) || - bli_obj_has_zero_dim( *bh ) ) - { - bli_scalm( beta, c ); - return; - } - - // Alias A, B', B, and A' in case we need to update attached scalars. - bli_obj_alias_to( *a, a_local ); - bli_obj_alias_to( *bh, bh_local ); - bli_obj_alias_to( *b, b_local ); - bli_obj_alias_to( *ah, ah_local ); - - // Alias C in case we need to induce a transposition. - bli_obj_alias_to( *c, c_local ); - - // If we are about to call a leaf-level implementation, and matrix C - // still needs a transposition, then we must induce one by swapping the - // strides and dimensions. Note that this transposition would normally - // be handled explicitly in the packing of C, but if C is not being - // packed, this is our last chance to handle the transposition. - if ( cntl_is_leaf( cntl ) && bli_obj_has_trans( *c ) ) - { - bli_obj_induce_trans( c_local ); - bli_obj_set_onlytrans( BLIS_NO_TRANSPOSE, c_local ); - } - - // If alpha_abh is non-unit, typecast and apply it to the scalar - // attached to B'. - if ( !bli_obj_equals( alpha_abh, &BLIS_ONE ) ) - { - bli_obj_scalar_apply_scalar( alpha_abh, &bh_local ); - } - - // If alpha_bah is non-unit, typecast and apply it to the scalar - // attached to A'. - if ( !bli_obj_equals( alpha_bah, &BLIS_ONE ) ) - { - bli_obj_scalar_apply_scalar( alpha_bah, &ah_local ); - } - - // If beta is non-unit, typecast and apply it to the scalar - // attached to C. - if ( !bli_obj_equals( beta, &BLIS_ONE ) ) - { - bli_obj_scalar_apply_scalar( beta, &c_local ); - } - - // Set a bool based on the uplo field of c. - if ( bli_obj_root_is_lower( c_local ) ) uplo = 0; - else uplo = 1; - - // Extract the variant number and implementation type. - n = cntl_var_num( cntl ); - i = cntl_impl_type( cntl ); - - // Index into the variant array to extract the correct function pointer. - f = vars[uplo][n][i]; - - // Invoke the variant. - f( &a_local, - &bh_local, - &b_local, - &ah_local, - &c_local, - cntl ); -} - diff --git a/frame/3/her2k/attic/bli_her2k_int.h b/frame/3/her2k/attic/bli_her2k_int.h deleted file mode 100644 index 801dbc969..000000000 --- a/frame/3/her2k/attic/bli_her2k_int.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k_int( obj_t* alpha, - obj_t* a, - obj_t* bh, - obj_t* alpha_conj, - obj_t* b, - obj_t* ah, - obj_t* beta, - obj_t* c, - her2k_t* cntl ); - diff --git a/frame/3/her2k/attic/bli_her2k_l_ker_var2.h b/frame/3/her2k/attic/bli_her2k_l_ker_var2.h deleted file mode 100644 index 4d73182ea..000000000 --- a/frame/3/her2k/attic/bli_her2k_l_ker_var2.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -// -// Prototype object-based interface. -// -void bli_her2k_l_ker_var2( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ); - diff --git a/frame/3/her2k/attic/bli_her2k_target.c b/frame/3/her2k/attic/bli_her2k_target.c deleted file mode 100644 index 45d6c13c2..000000000 --- a/frame/3/her2k/attic/bli_her2k_target.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -void bli_her2k_set_targ_exec_datatypes( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - bool_t* pack_c ) -{ - num_t dt_targ_a; - num_t dt_targ_bh; - num_t dt_targ_b; - num_t dt_targ_ah; - num_t dt_targ_c; - num_t dt_exec; - - // Determine the target datatype of each matrix object. -/* - bli_gemm_get_target_datatypes( a, - bh, - c, - &dt_targ_a, - &dt_targ_bh, - &dt_targ_c, - pack_c ); -*/ - dt_targ_a = bli_obj_datatype( *a ); - dt_targ_bh = bli_obj_datatype( *bh ); - dt_targ_b = bli_obj_datatype( *b ); - dt_targ_ah = bli_obj_datatype( *ah ); - dt_targ_c = bli_obj_datatype( *c ); - dt_exec = dt_targ_a; - - // Set the target datatypes for each matrix object. - bli_obj_set_target_datatype( dt_targ_a, *a ); - bli_obj_set_target_datatype( dt_targ_bh, *bh ); - bli_obj_set_target_datatype( dt_targ_b, *b ); - bli_obj_set_target_datatype( dt_targ_ah, *ah ); - bli_obj_set_target_datatype( dt_targ_c, *c ); - - // Embed the execution datatype in all matrix operands. - bli_obj_set_execution_datatype( dt_exec, *a ); - bli_obj_set_execution_datatype( dt_exec, *bh ); - bli_obj_set_execution_datatype( dt_exec, *b ); - bli_obj_set_execution_datatype( dt_exec, *ah ); - bli_obj_set_execution_datatype( dt_exec, *c ); - - // For now disable packing of C. - *pack_c = FALSE; -} - diff --git a/frame/3/her2k/attic/bli_her2k_target.h b/frame/3/her2k/attic/bli_her2k_target.h deleted file mode 100644 index 734a09a69..000000000 --- a/frame/3/her2k/attic/bli_her2k_target.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k_set_targ_exec_datatypes( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - bool_t* pack_c ); - diff --git a/frame/3/her2k/attic/bli_her2k_u_ker_var2.h b/frame/3/her2k/attic/bli_her2k_u_ker_var2.h deleted file mode 100644 index a72bd90eb..000000000 --- a/frame/3/her2k/attic/bli_her2k_u_ker_var2.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -// -// Prototype object-based interface. -// -void bli_her2k_u_ker_var2( obj_t* a, - obj_t* bh, - obj_t* b, - obj_t* ah, - obj_t* c, - her2k_t* cntl ); - diff --git a/frame/3/her2k/bli_her2k.c b/frame/3/her2k/bli_her2k.c index 135334dfb..a8eb53e96 100644 --- a/frame/3/her2k/bli_her2k.c +++ b/frame/3/her2k/bli_her2k.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_her2k( obj_t* alpha, obj_t* a, obj_t* b, @@ -45,19 +44,22 @@ void bli_her2k( obj_t* alpha, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_her2k3mh_entry( alpha, a, b, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_her2k3m1_entry( alpha, a, b, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_her2k4mh_entry( alpha, a, b, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_her2k4m1_entry( alpha, a, b, beta, c ); - else bli_her2k_entry( alpha, a, b, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_her2kind_has_avail( dt ) ) + { + her2k_fp_t func = bli_her2kind_get_avail( dt ); + + return func( alpha, a, b, beta, c ); + } + + bli_her2k_front( alpha, a, b, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ +#define GENTFUNCR( ctype, ctype_r, ch, chr, opname ) \ \ void PASTEMAC(ch,opname)( \ uplo_t uploc, \ @@ -103,38 +105,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNCR_BASIC( her2k, her2k ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC3U12 -#define GENTFUNC3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname, varname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC3U12_BASIC( her2k, her2k ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC3U12_MIX_D( her2k, her2k ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC3U12_MIX_P( her2k, her2k ) -#endif +INSERT_GENTFUNCR_BASIC0( her2k ) diff --git a/frame/3/her2k/bli_her2k.h b/frame/3/her2k/bli_her2k.h index 976c1644d..7b2b7174b 100644 --- a/frame/3/her2k/bli_her2k.h +++ b/frame/3/her2k/bli_her2k.h @@ -32,28 +32,8 @@ */ -//#include "bli_her2k_cntl.h" #include "bli_her2k_check.h" -#include "bli_her2k_entry.h" #include "bli_her2k_front.h" -/* -#include "bli_her2k_int.h" -#include "bli_her2k_target.h" - -#include "bli_her2k_blk_var1f.h" - -#include "bli_her2k_blk_var2f.h" - -#include "bli_her2k_blk_var3f.h" - -#include "bli_her2k_l_ker_var2.h" -#include "bli_her2k_u_ker_var2.h" -*/ - -#include "bli_her2k4mh.h" -#include "bli_her2k4m1.h" -#include "bli_her2k3mh.h" -#include "bli_her2k3m1.h" // @@ -66,9 +46,6 @@ void bli_her2k( obj_t* alpha, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROTR #define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ \ @@ -87,33 +64,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROTR_BASIC( her2k ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT3U12 -#define GENTPROT3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT3U12_BASIC( her2k ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT3U12_MIX_D( her2k ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT3U12_MIX_P( her2k ) -#endif - diff --git a/frame/3/her2k/bli_her2k_entry.c b/frame/3/her2k/bli_her2k_entry.c deleted file mode 100644 index 7dd2c97b7..000000000 --- a/frame/3/her2k/bli_her2k_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_her2k_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_her2k_front( alpha, a, b, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/her2k/bli_her2k_entry.h b/frame/3/her2k/bli_her2k_entry.h deleted file mode 100644 index ee0f86231..000000000 --- a/frame/3/her2k/bli_her2k_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_her2k_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/herk/3m1/bli_herk3m1.c b/frame/3/herk/3m1/bli_herk3m1.c deleted file mode 100644 index 6e2a4911f..000000000 --- a/frame/3/herk/3m1/bli_herk3m1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_herk3m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_herk3m1_entry( alpha, a, beta, c ); - else - bli_herk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt_r, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( herk3m1, herk3m1 ) - diff --git a/frame/3/herk/3m1/bli_herk3m1.h b/frame/3/herk/3m1/bli_herk3m1.h deleted file mode 100644 index f30fb4028..000000000 --- a/frame/3/herk/3m1/bli_herk3m1.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_herk3m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_herk3m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( herk3m1 ) - diff --git a/frame/3/herk/3m1/bli_herk3m1_entry.c b/frame/3/herk/3m1/bli_herk3m1_entry.c deleted file mode 100644 index fd5c93575..000000000 --- a/frame/3/herk/3m1/bli_herk3m1_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_herk3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_herk_front( alpha, a, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/herk/3m1/bli_herk3m1_entry.h b/frame/3/herk/3m1/bli_herk3m1_entry.h deleted file mode 100644 index 1d6c81ee8..000000000 --- a/frame/3/herk/3m1/bli_herk3m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_herk3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/herk/3mh/bli_herk3mh.c b/frame/3/herk/3mh/bli_herk3mh.c deleted file mode 100644 index fc3928a11..000000000 --- a/frame/3/herk/3mh/bli_herk3mh.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_herk3mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_herk3mh_entry( alpha, a, beta, c ); - else - bli_herk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt_r, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( herk3mh, herk3mh ) - diff --git a/frame/3/herk/3mh/bli_herk3mh.h b/frame/3/herk/3mh/bli_herk3mh.h deleted file mode 100644 index 76134c572..000000000 --- a/frame/3/herk/3mh/bli_herk3mh.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_herk3mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_herk3mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( herk3mh ) - diff --git a/frame/3/herk/3mh/bli_herk3mh_entry.c b/frame/3/herk/3mh/bli_herk3mh_entry.c deleted file mode 100644 index 6174d1e0d..000000000 --- a/frame/3/herk/3mh/bli_herk3mh_entry.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; - -void bli_herk3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_herk_front( alpha, a, beta, c, gemm3mh_cntl_ro ); - bli_herk_front( alpha, a, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_herk_front( alpha, a, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} - diff --git a/frame/3/herk/3mh/bli_herk3mh_entry.h b/frame/3/herk/3mh/bli_herk3mh_entry.h deleted file mode 100644 index 3d59740f5..000000000 --- a/frame/3/herk/3mh/bli_herk3mh_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_herk3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/herk/4m1/bli_herk4m1.c b/frame/3/herk/4m1/bli_herk4m1.c deleted file mode 100644 index d8ca25c5d..000000000 --- a/frame/3/herk/4m1/bli_herk4m1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_herk4m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_herk4m1_entry( alpha, a, beta, c ); - else - bli_herk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt_r, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( herk4m1, herk4m1 ) - diff --git a/frame/3/herk/4m1/bli_herk4m1.h b/frame/3/herk/4m1/bli_herk4m1.h deleted file mode 100644 index 94e6e42d3..000000000 --- a/frame/3/herk/4m1/bli_herk4m1.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_herk4m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_herk4m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( herk4m1 ) - diff --git a/frame/3/herk/4m1/bli_herk4m1_entry.c b/frame/3/herk/4m1/bli_herk4m1_entry.c deleted file mode 100644 index 0349a7a32..000000000 --- a/frame/3/herk/4m1/bli_herk4m1_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_herk4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_herk_front( alpha, a, beta, c, - gemm4m1_cntl ); -} - diff --git a/frame/3/herk/4m1/bli_herk4m1_entry.h b/frame/3/herk/4m1/bli_herk4m1_entry.h deleted file mode 100644 index f2a2333c8..000000000 --- a/frame/3/herk/4m1/bli_herk4m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_herk4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/herk/4mh/bli_herk4mh.c b/frame/3/herk/4mh/bli_herk4mh.c deleted file mode 100644 index c0c1804c3..000000000 --- a/frame/3/herk/4mh/bli_herk4mh.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_herk4mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_herk4mh_entry( alpha, a, beta, c ); - else - bli_herk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt_r = PASTEMAC(chr,type); \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt_r, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_HERMITIAN, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNCR_BASIC( herk4mh, herk4mh ) - diff --git a/frame/3/herk/4mh/bli_herk4mh.h b/frame/3/herk/4mh/bli_herk4mh.h deleted file mode 100644 index fb67184e9..000000000 --- a/frame/3/herk/4mh/bli_herk4mh.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_herk4mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_herk4mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROTR -#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_r* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype_r* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROTR_BASIC( herk4mh ) - diff --git a/frame/3/herk/4mh/bli_herk4mh_entry.c b/frame/3/herk/4mh/bli_herk4mh_entry.c deleted file mode 100644 index 30e7ff84f..000000000 --- a/frame/3/herk/4mh/bli_herk4mh_entry.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; -extern gemm_t* gemm4mh_cntl_ii; - -void bli_herk4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_herk_front( alpha, a, beta, c, gemm4mh_cntl_rr ); - bli_herk_front( alpha, a, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_herk_front( alpha, a, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_herk_front( alpha, a, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/herk/4mh/bli_herk4mh_entry.h b/frame/3/herk/4mh/bli_herk4mh_entry.h deleted file mode 100644 index 6f4483713..000000000 --- a/frame/3/herk/4mh/bli_herk4mh_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_herk4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/herk/bli_herk.c b/frame/3/herk/bli_herk.c index a619d0a17..8b2cee906 100644 --- a/frame/3/herk/bli_herk.c +++ b/frame/3/herk/bli_herk.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_herk( obj_t* alpha, obj_t* a, obj_t* beta, @@ -44,19 +43,22 @@ void bli_herk( obj_t* alpha, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_herk3mh_entry( alpha, a, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_herk3m1_entry( alpha, a, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_herk4mh_entry( alpha, a, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_herk4m1_entry( alpha, a, beta, c ); - else bli_herk_entry( alpha, a, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_herkind_has_avail( dt ) ) + { + herk_fp_t func = bli_herkind_get_avail( dt ); + + return func( alpha, a, beta, c ); + } + + bli_herk_front( alpha, a, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNCR -#define GENTFUNCR( ctype, ctype_r, ch, chr, opname, varname ) \ +#define GENTFUNCR( ctype, ctype_r, ch, chr, opname ) \ \ void PASTEMAC(ch,opname)( \ uplo_t uploc, \ @@ -95,36 +97,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNCR_BASIC( herk, herk ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC2R -#define GENTFUNC2R( ctype_a, ctype_c, ctype_ar, cha, chc, chAr, opname, varname ) \ -\ -void PASTEMAC2(cha,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_ar* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC2R_BASIC( herk, herk ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC2R_MIX_D( herk, herk ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC2R_MIX_P( herk, herk ) -#endif +INSERT_GENTFUNCR_BASIC0( herk ) diff --git a/frame/3/herk/bli_herk.h b/frame/3/herk/bli_herk.h index 750052761..2387a8824 100644 --- a/frame/3/herk/bli_herk.h +++ b/frame/3/herk/bli_herk.h @@ -33,7 +33,6 @@ */ #include "bli_herk_check.h" -#include "bli_herk_entry.h" #include "bli_herk_front.h" #include "bli_herk_int.h" @@ -46,11 +45,6 @@ #include "bli_herk_l_ker_var2.h" #include "bli_herk_u_ker_var2.h" -#include "bli_herk4mh.h" -#include "bli_herk4m1.h" -#include "bli_herk3mh.h" -#include "bli_herk3m1.h" - // // Prototype object-based interface. @@ -61,9 +55,6 @@ void bli_herk( obj_t* alpha, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROTR #define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ \ @@ -79,32 +70,3 @@ void PASTEMAC(ch,opname)( \ ); INSERT_GENTPROTR_BASIC( herk ) - - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT2R -#define GENTPROT2R( ctype_a, ctype_c, ctype_ar, cha, chc, chAr, opname ) \ -\ -void PASTEMAC2(cha,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_ar* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT2R_BASIC( herk ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT2R_MIX_D( herk ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT2R_MIX_P( herk ) -#endif - diff --git a/frame/3/herk/bli_herk_blk_var1f.c b/frame/3/herk/bli_herk_blk_var1f.c index 9291ba6d0..d6205412c 100644 --- a/frame/3/herk/bli_herk_blk_var1f.c +++ b/frame/3/herk/bli_herk_blk_var1f.c @@ -83,7 +83,7 @@ void bli_herk_blk_var1f( obj_t* a, m_trans = bli_obj_length_after_trans( *c ); dim_t start, end; bli_get_range_weighted( thread, 0, m_trans, - bli_determine_reg_blocksize( a, cntl_blocksize( cntl ) ), + bli_blksz_mult_for_obj( a, cntl_blocksize( cntl ) ), bli_obj_is_upper( *c ), &start, &end ); // Partition along the m dimension. diff --git a/frame/3/herk/bli_herk_blk_var2f.c b/frame/3/herk/bli_herk_blk_var2f.c index 33b009204..cbf6bf635 100644 --- a/frame/3/herk/bli_herk_blk_var2f.c +++ b/frame/3/herk/bli_herk_blk_var2f.c @@ -91,7 +91,7 @@ void bli_herk_blk_var2f( obj_t* a, // Needs to be replaced with a weighted range because triangle bli_get_range_weighted( thread, 0, n_trans, - bli_determine_reg_blocksize( a, cntl_blocksize( cntl ) ), + bli_blksz_mult_for_obj( a, cntl_blocksize( cntl ) ), bli_obj_is_lower( *c ), &start, &end ); // Partition along the n dimension. diff --git a/frame/3/herk/bli_herk_entry.c b/frame/3/herk/bli_herk_entry.c deleted file mode 100644 index f054c7f03..000000000 --- a/frame/3/herk/bli_herk_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_herk_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_herk_front( alpha, a, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/herk/bli_herk_entry.h b/frame/3/herk/bli_herk_entry.h deleted file mode 100644 index 6b3599ae1..000000000 --- a/frame/3/herk/bli_herk_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_herk_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/symm/3m1/bli_symm3m1.c b/frame/3/symm/3m1/bli_symm3m1.c deleted file mode 100644 index b43408036..000000000 --- a/frame/3/symm/3m1/bli_symm3m1.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_symm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_symm3m1_entry( side, alpha, a, b, beta, c ); - else - bli_symm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( symm3m1, symm3m1 ) - diff --git a/frame/3/symm/3m1/bli_symm3m1.h b/frame/3/symm/3m1/bli_symm3m1.h deleted file mode 100644 index 1717534cc..000000000 --- a/frame/3/symm/3m1/bli_symm3m1.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_symm3m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_symm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( symm3m1 ) - diff --git a/frame/3/symm/3m1/bli_symm3m1_entry.c b/frame/3/symm/3m1/bli_symm3m1_entry.c deleted file mode 100644 index 1499dafed..000000000 --- a/frame/3/symm/3m1/bli_symm3m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_symm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_symm_front( side, alpha, a, b, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/symm/3m1/bli_symm3m1_entry.h b/frame/3/symm/3m1/bli_symm3m1_entry.h deleted file mode 100644 index f818a45a6..000000000 --- a/frame/3/symm/3m1/bli_symm3m1_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_symm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/symm/3mh/bli_symm3mh.c b/frame/3/symm/3mh/bli_symm3mh.c deleted file mode 100644 index 2b391138c..000000000 --- a/frame/3/symm/3mh/bli_symm3mh.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_symm3mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_symm3mh_entry( side, alpha, a, b, beta, c ); - else - bli_symm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( symm3mh, symm3mh ) - diff --git a/frame/3/symm/3mh/bli_symm3mh.h b/frame/3/symm/3mh/bli_symm3mh.h deleted file mode 100644 index 68b8fc67e..000000000 --- a/frame/3/symm/3mh/bli_symm3mh.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_symm3mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_symm3mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( symm3mh ) - diff --git a/frame/3/symm/3mh/bli_symm3mh_entry.c b/frame/3/symm/3mh/bli_symm3mh_entry.c deleted file mode 100644 index 7289153a4..000000000 --- a/frame/3/symm/3mh/bli_symm3mh_entry.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; - -void bli_symm3mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_symm_front( side, alpha, a, b, beta, c, gemm3mh_cntl_ro ); - bli_symm_front( side, alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_symm_front( side, alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} - diff --git a/frame/3/symm/3mh/bli_symm3mh_entry.h b/frame/3/symm/3mh/bli_symm3mh_entry.h deleted file mode 100644 index be29b4ad4..000000000 --- a/frame/3/symm/3mh/bli_symm3mh_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_symm3mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/symm/4m1/bli_symm4m1.c b/frame/3/symm/4m1/bli_symm4m1.c deleted file mode 100644 index e51482dee..000000000 --- a/frame/3/symm/4m1/bli_symm4m1.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_symm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_symm4m1_entry( side, alpha, a, b, beta, c ); - else - bli_symm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( symm4m1, symm4m1 ) - diff --git a/frame/3/symm/4m1/bli_symm4m1.h b/frame/3/symm/4m1/bli_symm4m1.h deleted file mode 100644 index de6390baa..000000000 --- a/frame/3/symm/4m1/bli_symm4m1.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_symm4m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_symm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( symm4m1 ) - diff --git a/frame/3/symm/4m1/bli_symm4m1_entry.c b/frame/3/symm/4m1/bli_symm4m1_entry.c deleted file mode 100644 index 52ab5ccef..000000000 --- a/frame/3/symm/4m1/bli_symm4m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_symm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_symm_front( side, alpha, a, b, beta, c, - gemm4m1_cntl ); -} - diff --git a/frame/3/symm/4m1/bli_symm4m1_entry.h b/frame/3/symm/4m1/bli_symm4m1_entry.h deleted file mode 100644 index e3136ddd6..000000000 --- a/frame/3/symm/4m1/bli_symm4m1_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_symm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/symm/4mh/bli_symm4mh.c b/frame/3/symm/4mh/bli_symm4mh.c deleted file mode 100644 index 14e1aeb24..000000000 --- a/frame/3/symm/4mh/bli_symm4mh.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_symm4mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_symm4mh_entry( side, alpha, a, b, beta, c ); - else - bli_symm_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_conj( conja, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( symm4mh, symm4mh ) - diff --git a/frame/3/symm/4mh/bli_symm4mh.h b/frame/3/symm/4mh/bli_symm4mh.h deleted file mode 100644 index be497360c..000000000 --- a/frame/3/symm/4mh/bli_symm4mh.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_symm4mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_symm4mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( symm4mh ) - diff --git a/frame/3/symm/4mh/bli_symm4mh_entry.c b/frame/3/symm/4mh/bli_symm4mh_entry.c deleted file mode 100644 index 27a482dfc..000000000 --- a/frame/3/symm/4mh/bli_symm4mh_entry.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; -extern gemm_t* gemm4mh_cntl_ii; - -void bli_symm4mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_symm_front( side, alpha, a, b, beta, c, gemm4mh_cntl_rr ); - bli_symm_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_symm_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_symm_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/symm/4mh/bli_symm4mh_entry.h b/frame/3/symm/4mh/bli_symm4mh_entry.h deleted file mode 100644 index bc621061a..000000000 --- a/frame/3/symm/4mh/bli_symm4mh_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_symm4mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/symm/bli_symm.c b/frame/3/symm/bli_symm.c index 088c4ad24..ad81db253 100644 --- a/frame/3/symm/bli_symm.c +++ b/frame/3/symm/bli_symm.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_symm( side_t side, obj_t* alpha, obj_t* a, @@ -46,19 +45,22 @@ void bli_symm( side_t side, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_symm3mh_entry( side, alpha, a, b, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_symm3m1_entry( side, alpha, a, b, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_symm4mh_entry( side, alpha, a, b, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_symm4m1_entry( side, alpha, a, b, beta, c ); - else bli_symm_entry( side, alpha, a, b, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_symmind_has_avail( dt ) ) + { + symm_fp_t func = bli_symmind_get_avail( dt ); + + return func( side, alpha, a, b, beta, c ); + } + + bli_symm_front( side, alpha, a, b, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ side_t side, \ @@ -105,39 +107,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNC_BASIC( symm, symm ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC3U12 -#define GENTFUNC3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname, varname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC3U12_BASIC( symm, symm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC3U12_MIX_D( symm, symm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC3U12_MIX_P( symm, symm ) -#endif +INSERT_GENTFUNC_BASIC0( symm ) diff --git a/frame/3/symm/bli_symm.h b/frame/3/symm/bli_symm.h index 04d83adb7..efb5fece1 100644 --- a/frame/3/symm/bli_symm.h +++ b/frame/3/symm/bli_symm.h @@ -33,14 +33,8 @@ */ #include "bli_symm_check.h" -#include "bli_symm_entry.h" #include "bli_symm_front.h" -#include "bli_symm4mh.h" -#include "bli_symm4m1.h" -#include "bli_symm3mh.h" -#include "bli_symm3m1.h" - // // Prototype object-based interface. @@ -53,9 +47,6 @@ void bli_symm( side_t side, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -75,34 +66,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROT_BASIC( symm ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT3U12 -#define GENTPROT3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - side_t side, \ - uplo_t uploa, \ - conj_t conja, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT3U12_BASIC( symm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT3U12_MIX_D( symm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT3U12_MIX_P( symm ) -#endif - diff --git a/frame/3/symm/bli_symm_entry.c b/frame/3/symm/bli_symm_entry.c deleted file mode 100644 index d128f8297..000000000 --- a/frame/3/symm/bli_symm_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_symm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_symm_front( side, alpha, a, b, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/symm/bli_symm_entry.h b/frame/3/symm/bli_symm_entry.h deleted file mode 100644 index 96b82dde3..000000000 --- a/frame/3/symm/bli_symm_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_symm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syr2k/3m1/bli_syr2k3m1.c b/frame/3/syr2k/3m1/bli_syr2k3m1.c deleted file mode 100644 index c0e7f217c..000000000 --- a/frame/3/syr2k/3m1/bli_syr2k3m1.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syr2k3m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syr2k3m1_entry( alpha, a, b, beta, c ); - else - bli_syr2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syr2k3m1, syr2k3m1 ) - diff --git a/frame/3/syr2k/3m1/bli_syr2k3m1.h b/frame/3/syr2k/3m1/bli_syr2k3m1.h deleted file mode 100644 index 612bea5bc..000000000 --- a/frame/3/syr2k/3m1/bli_syr2k3m1.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syr2k3m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syr2k3m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syr2k3m1 ) - diff --git a/frame/3/syr2k/3m1/bli_syr2k3m1_entry.c b/frame/3/syr2k/3m1/bli_syr2k3m1_entry.c deleted file mode 100644 index 3dc9f5061..000000000 --- a/frame/3/syr2k/3m1/bli_syr2k3m1_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_syr2k3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_syr2k_front( alpha, a, b, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/syr2k/3m1/bli_syr2k3m1_entry.h b/frame/3/syr2k/3m1/bli_syr2k3m1_entry.h deleted file mode 100644 index b54a9e102..000000000 --- a/frame/3/syr2k/3m1/bli_syr2k3m1_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syr2k3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syr2k/3mh/bli_syr2k3mh.c b/frame/3/syr2k/3mh/bli_syr2k3mh.c deleted file mode 100644 index 56de9b5fd..000000000 --- a/frame/3/syr2k/3mh/bli_syr2k3mh.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syr2k3mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syr2k3mh_entry( alpha, a, b, beta, c ); - else - bli_syr2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syr2k3mh, syr2k3mh ) - diff --git a/frame/3/syr2k/3mh/bli_syr2k3mh.h b/frame/3/syr2k/3mh/bli_syr2k3mh.h deleted file mode 100644 index 55a155765..000000000 --- a/frame/3/syr2k/3mh/bli_syr2k3mh.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syr2k3mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syr2k3mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syr2k3mh ) - diff --git a/frame/3/syr2k/3mh/bli_syr2k3mh_entry.h b/frame/3/syr2k/3mh/bli_syr2k3mh_entry.h deleted file mode 100644 index 38ec5f8ad..000000000 --- a/frame/3/syr2k/3mh/bli_syr2k3mh_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syr2k3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syr2k/4m1/bli_syr2k4m1.c b/frame/3/syr2k/4m1/bli_syr2k4m1.c deleted file mode 100644 index 3d16bbbc7..000000000 --- a/frame/3/syr2k/4m1/bli_syr2k4m1.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syr2k4m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syr2k4m1_entry( alpha, a, b, beta, c ); - else - bli_syr2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syr2k4m1, syr2k4m1 ) - diff --git a/frame/3/syr2k/4m1/bli_syr2k4m1.h b/frame/3/syr2k/4m1/bli_syr2k4m1.h deleted file mode 100644 index 880b913ca..000000000 --- a/frame/3/syr2k/4m1/bli_syr2k4m1.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syr2k4m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syr2k4m1( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syr2k4m1 ) - diff --git a/frame/3/syr2k/4m1/bli_syr2k4m1_entry.c b/frame/3/syr2k/4m1/bli_syr2k4m1_entry.c deleted file mode 100644 index e3c0c1a19..000000000 --- a/frame/3/syr2k/4m1/bli_syr2k4m1_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_syr2k4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_syr2k_front( alpha, a, b, beta, c, - gemm4m1_cntl ); -} - diff --git a/frame/3/syr2k/4m1/bli_syr2k4m1_entry.h b/frame/3/syr2k/4m1/bli_syr2k4m1_entry.h deleted file mode 100644 index 35c58a94e..000000000 --- a/frame/3/syr2k/4m1/bli_syr2k4m1_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syr2k4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syr2k/4mh/bli_syr2k4mh.c b/frame/3/syr2k/4mh/bli_syr2k4mh.c deleted file mode 100644 index 76c46ae0e..000000000 --- a/frame/3/syr2k/4mh/bli_syr2k4mh.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syr2k4mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syr2k4mh_entry( alpha, a, b, beta, c ); - else - bli_syr2k_entry( alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t m_a, n_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ - bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syr2k4mh, syr2k4mh ) - diff --git a/frame/3/syr2k/4mh/bli_syr2k4mh.h b/frame/3/syr2k/4mh/bli_syr2k4mh.h deleted file mode 100644 index b664253b1..000000000 --- a/frame/3/syr2k/4mh/bli_syr2k4mh.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syr2k4mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syr2k4mh( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syr2k4mh ) - diff --git a/frame/3/syr2k/4mh/bli_syr2k4mh_entry.c b/frame/3/syr2k/4mh/bli_syr2k4mh_entry.c deleted file mode 100644 index 7d28b6eb7..000000000 --- a/frame/3/syr2k/4mh/bli_syr2k4mh_entry.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; -extern gemm_t* gemm4mh_cntl_ii; - -void bli_syr2k4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_syr2k_front( alpha, a, b, beta, c, gemm4mh_cntl_rr ); - bli_syr2k_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_syr2k_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_syr2k_front( alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/syr2k/4mh/bli_syr2k4mh_entry.h b/frame/3/syr2k/4mh/bli_syr2k4mh_entry.h deleted file mode 100644 index 705569310..000000000 --- a/frame/3/syr2k/4mh/bli_syr2k4mh_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syr2k4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syr2k/bli_syr2k.c b/frame/3/syr2k/bli_syr2k.c index 09a4c2db5..e0f867a14 100644 --- a/frame/3/syr2k/bli_syr2k.c +++ b/frame/3/syr2k/bli_syr2k.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_syr2k( obj_t* alpha, obj_t* a, obj_t* b, @@ -45,19 +44,22 @@ void bli_syr2k( obj_t* alpha, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_syr2k3mh_entry( alpha, a, b, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_syr2k3m1_entry( alpha, a, b, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_syr2k4mh_entry( alpha, a, b, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_syr2k4m1_entry( alpha, a, b, beta, c ); - else bli_syr2k_entry( alpha, a, b, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_syr2kind_has_avail( dt ) ) + { + syr2k_fp_t func = bli_syr2kind_get_avail( dt ); + + return func( alpha, a, b, beta, c ); + } + + bli_syr2k_front( alpha, a, b, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ uplo_t uploc, \ @@ -102,38 +104,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNC_BASIC( syr2k, syr2k ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC3U12 -#define GENTFUNC3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname, varname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC3U12_BASIC( syr2k, syr2k ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC3U12_MIX_D( syr2k, syr2k ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC3U12_MIX_P( syr2k, syr2k ) -#endif +INSERT_GENTFUNC_BASIC0( syr2k ) diff --git a/frame/3/syr2k/bli_syr2k.h b/frame/3/syr2k/bli_syr2k.h index 3a71d4975..e55f5f067 100644 --- a/frame/3/syr2k/bli_syr2k.h +++ b/frame/3/syr2k/bli_syr2k.h @@ -33,14 +33,8 @@ */ #include "bli_syr2k_check.h" -#include "bli_syr2k_entry.h" #include "bli_syr2k_front.h" -#include "bli_syr2k4mh.h" -#include "bli_syr2k4m1.h" -#include "bli_syr2k3mh.h" -#include "bli_syr2k3m1.h" - // // Prototype object-based interface. @@ -52,9 +46,6 @@ void bli_syr2k( obj_t* alpha, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -73,32 +64,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROT_BASIC( syr2k ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT3U12 -#define GENTPROT3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - trans_t transb, \ - dim_t m, \ - dim_t k, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT3U12_BASIC( syr2k ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT3U12_MIX_D( syr2k ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT3U12_MIX_P( syr2k ) -#endif diff --git a/frame/3/syr2k/bli_syr2k_entry.c b/frame/3/syr2k/bli_syr2k_entry.c deleted file mode 100644 index dab519dd7..000000000 --- a/frame/3/syr2k/bli_syr2k_entry.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_syr2k_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_syr2k_front( alpha, a, b, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/syr2k/bli_syr2k_entry.h b/frame/3/syr2k/bli_syr2k_entry.h deleted file mode 100644 index 164b977b7..000000000 --- a/frame/3/syr2k/bli_syr2k_entry.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syr2k_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syrk/3m1/bli_syrk3m1.c b/frame/3/syrk/3m1/bli_syrk3m1.c deleted file mode 100644 index ea24f3397..000000000 --- a/frame/3/syrk/3m1/bli_syrk3m1.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syrk3m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syrk3m1_entry( alpha, a, beta, c ); - else - bli_syrk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syrk3m1, syrk3m1 ) - diff --git a/frame/3/syrk/3m1/bli_syrk3m1.h b/frame/3/syrk/3m1/bli_syrk3m1.h deleted file mode 100644 index 2da93ad6a..000000000 --- a/frame/3/syrk/3m1/bli_syrk3m1.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syrk3m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syrk3m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syrk3m1 ) - diff --git a/frame/3/syrk/3m1/bli_syrk3m1_entry.c b/frame/3/syrk/3m1/bli_syrk3m1_entry.c deleted file mode 100644 index ad147e186..000000000 --- a/frame/3/syrk/3m1/bli_syrk3m1_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_syrk3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_syrk_front( alpha, a, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/syrk/3m1/bli_syrk3m1_entry.h b/frame/3/syrk/3m1/bli_syrk3m1_entry.h deleted file mode 100644 index 8c6b0a42d..000000000 --- a/frame/3/syrk/3m1/bli_syrk3m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syrk3m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syrk/3mh/bli_syrk3mh.c b/frame/3/syrk/3mh/bli_syrk3mh.c deleted file mode 100644 index 5c8e2720f..000000000 --- a/frame/3/syrk/3mh/bli_syrk3mh.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syrk3mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syrk3mh_entry( alpha, a, beta, c ); - else - bli_syrk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syrk3mh, syrk3mh ) - diff --git a/frame/3/syrk/3mh/bli_syrk3mh.h b/frame/3/syrk/3mh/bli_syrk3mh.h deleted file mode 100644 index c5bfa6ede..000000000 --- a/frame/3/syrk/3mh/bli_syrk3mh.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syrk3mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syrk3mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syrk3mh ) - diff --git a/frame/3/syrk/3mh/bli_syrk3mh_entry.c b/frame/3/syrk/3mh/bli_syrk3mh_entry.c deleted file mode 100644 index c5a54f05a..000000000 --- a/frame/3/syrk/3mh/bli_syrk3mh_entry.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; - -void bli_syrk3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_syrk_front( alpha, a, beta, c, gemm3mh_cntl_ro ); - bli_syrk_front( alpha, a, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_syrk_front( alpha, a, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} - diff --git a/frame/3/syrk/3mh/bli_syrk3mh_entry.h b/frame/3/syrk/3mh/bli_syrk3mh_entry.h deleted file mode 100644 index 8c7b6481e..000000000 --- a/frame/3/syrk/3mh/bli_syrk3mh_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syrk3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syrk/4m1/bli_syrk4m1.c b/frame/3/syrk/4m1/bli_syrk4m1.c deleted file mode 100644 index 4f2420442..000000000 --- a/frame/3/syrk/4m1/bli_syrk4m1.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syrk4m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syrk4m1_entry( alpha, a, beta, c ); - else - bli_syrk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syrk4m1, syrk4m1 ) - diff --git a/frame/3/syrk/4m1/bli_syrk4m1.h b/frame/3/syrk/4m1/bli_syrk4m1.h deleted file mode 100644 index 035f3cd60..000000000 --- a/frame/3/syrk/4m1/bli_syrk4m1.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syrk4m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syrk4m1( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syrk4m1 ) - diff --git a/frame/3/syrk/4m1/bli_syrk4m1_entry.c b/frame/3/syrk/4m1/bli_syrk4m1_entry.c deleted file mode 100644 index cf265caba..000000000 --- a/frame/3/syrk/4m1/bli_syrk4m1_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_syrk4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_syrk_front( alpha, a, beta, c, - gemm4m1_cntl ); -} - diff --git a/frame/3/syrk/4m1/bli_syrk4m1_entry.h b/frame/3/syrk/4m1/bli_syrk4m1_entry.h deleted file mode 100644 index 31ee6e628..000000000 --- a/frame/3/syrk/4m1/bli_syrk4m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syrk4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syrk/4mh/bli_syrk4mh.c b/frame/3/syrk/4mh/bli_syrk4mh.c deleted file mode 100644 index fa83476e2..000000000 --- a/frame/3/syrk/4mh/bli_syrk4mh.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_syrk4mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // implementation for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_syrk4mh_entry( alpha, a, beta, c ); - else - bli_syrk_entry( alpha, a, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, betao, co; \ -\ - dim_t m_a, n_a; \ -\ - bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploc, co ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ -\ - PASTEMAC0(opname)( &alphao, \ - &ao, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( syrk4mh, syrk4mh ) - diff --git a/frame/3/syrk/4mh/bli_syrk4mh.h b/frame/3/syrk/4mh/bli_syrk4mh.h deleted file mode 100644 index 76d63f7bc..000000000 --- a/frame/3/syrk/4mh/bli_syrk4mh.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_syrk4mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_syrk4mh( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( syrk4mh ) - diff --git a/frame/3/syrk/4mh/bli_syrk4mh_entry.c b/frame/3/syrk/4mh/bli_syrk4mh_entry.c deleted file mode 100644 index 0eaa56717..000000000 --- a/frame/3/syrk/4mh/bli_syrk4mh_entry.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; -extern gemm_t* gemm4mh_cntl_ii; - -void bli_syrk4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_syrk_front( alpha, a, beta, c, gemm4mh_cntl_rr ); - bli_syrk_front( alpha, a, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_syrk_front( alpha, a, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_syrk_front( alpha, a, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/syrk/4mh/bli_syrk4mh_entry.h b/frame/3/syrk/4mh/bli_syrk4mh_entry.h deleted file mode 100644 index a46576517..000000000 --- a/frame/3/syrk/4mh/bli_syrk4mh_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syrk4mh_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/syrk/bli_syrk.c b/frame/3/syrk/bli_syrk.c index 5ac1f221b..44b9e6f8f 100644 --- a/frame/3/syrk/bli_syrk.c +++ b/frame/3/syrk/bli_syrk.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_syrk( obj_t* alpha, obj_t* a, obj_t* beta, @@ -44,19 +43,22 @@ void bli_syrk( obj_t* alpha, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_syrk3mh_entry( alpha, a, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_syrk3m1_entry( alpha, a, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_syrk4mh_entry( alpha, a, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_syrk4m1_entry( alpha, a, beta, c ); - else bli_syrk_entry( alpha, a, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_syrkind_has_avail( dt ) ) + { + syrk_fp_t func = bli_syrkind_get_avail( dt ); + + return func( alpha, a, beta, c ); + } + + bli_syrk_front( alpha, a, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ uplo_t uploc, \ @@ -94,36 +96,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNC_BASIC( syrk, syrk ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC2 -#define GENTFUNC2( ctype_a, ctype_c, cha, chc, opname, varname ) \ -\ -void PASTEMAC2(cha,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_a* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC2_BASIC( syrk, syrk ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC2_MIX_D( syrk, syrk ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC2_MIX_P( syrk, syrk ) -#endif +INSERT_GENTFUNC_BASIC0( syrk ) diff --git a/frame/3/syrk/bli_syrk.h b/frame/3/syrk/bli_syrk.h index b8f11090e..08192ec80 100644 --- a/frame/3/syrk/bli_syrk.h +++ b/frame/3/syrk/bli_syrk.h @@ -33,14 +33,8 @@ */ #include "bli_syrk_check.h" -#include "bli_syrk_entry.h" #include "bli_syrk_front.h" -#include "bli_syrk4mh.h" -#include "bli_syrk4m1.h" -#include "bli_syrk3mh.h" -#include "bli_syrk3m1.h" - // // Prototype object-based interface. @@ -51,9 +45,6 @@ void bli_syrk( obj_t* alpha, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -70,31 +61,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROT_BASIC( syrk ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT2 -#define GENTPROT2( ctype_a, ctype_c, cha, chc, opname ) \ -\ -void PASTEMAC2(cha,chc,opname)( \ - uplo_t uploc, \ - trans_t transa, \ - dim_t m, \ - dim_t k, \ - ctype_a* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT2_BASIC( syrk ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT2_MIX_D( syrk ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT2_MIX_P( syrk ) -#endif - diff --git a/frame/3/syrk/bli_syrk_entry.c b/frame/3/syrk/bli_syrk_entry.c deleted file mode 100644 index e350bea4b..000000000 --- a/frame/3/syrk/bli_syrk_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_syrk_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ) -{ - bli_syrk_front( alpha, a, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/syrk/bli_syrk_entry.h b/frame/3/syrk/bli_syrk_entry.h deleted file mode 100644 index 794beea05..000000000 --- a/frame/3/syrk/bli_syrk_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_syrk_entry( obj_t* alpha, - obj_t* a, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/trmm/3m1/bli_trmm3m1.c b/frame/3/trmm/3m1/bli_trmm3m1.c deleted file mode 100644 index 5e9c8e379..000000000 --- a/frame/3/trmm/3m1/bli_trmm3m1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trmm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *b ) ) - bli_trmm3m1_entry( side, alpha, a, b ); - else - bli_trmm_entry( side, alpha, a, b ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo; \ -\ - dim_t mn_a; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, n, b, rs_b, cs_b, &bo ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo ); \ -} - -INSERT_GENTFUNC_BASIC( trmm3m1, trmm3m1 ) - diff --git a/frame/3/trmm/3m1/bli_trmm3m1.h b/frame/3/trmm/3m1/bli_trmm3m1.h deleted file mode 100644 index 23bd43eea..000000000 --- a/frame/3/trmm/3m1/bli_trmm3m1.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_trmm3m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_trmm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ - ); - -INSERT_GENTPROT_BASIC( trmm3m1 ) - diff --git a/frame/3/trmm/3m1/bli_trmm3m1_entry.c b/frame/3/trmm/3m1/bli_trmm3m1_entry.c deleted file mode 100644 index 364de3f47..000000000 --- a/frame/3/trmm/3m1/bli_trmm3m1_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_trmm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - bli_trmm_front( side, alpha, a, b, - gemm3m1_cntl ); -} - diff --git a/frame/3/trmm/3m1/bli_trmm3m1_entry.h b/frame/3/trmm/3m1/bli_trmm3m1_entry.h deleted file mode 100644 index 46def0b1f..000000000 --- a/frame/3/trmm/3m1/bli_trmm3m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - diff --git a/frame/3/trmm/4m1/bli_trmm4m1.c b/frame/3/trmm/4m1/bli_trmm4m1.c deleted file mode 100644 index f94cff342..000000000 --- a/frame/3/trmm/4m1/bli_trmm4m1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trmm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - // Since 4m only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *b ) ) - bli_trmm4m1_entry( side, alpha, a, b ); - else - bli_trmm_entry( side, alpha, a, b ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo; \ -\ - dim_t mn_a; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, n, b, rs_b, cs_b, &bo ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo ); \ -} - -INSERT_GENTFUNC_BASIC( trmm4m1, trmm4m1 ) - diff --git a/frame/3/trmm/4m1/bli_trmm4m1.h b/frame/3/trmm/4m1/bli_trmm4m1.h deleted file mode 100644 index f1000a041..000000000 --- a/frame/3/trmm/4m1/bli_trmm4m1.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_trmm4m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_trmm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ - ); - -INSERT_GENTPROT_BASIC( trmm4m1 ) - diff --git a/frame/3/trmm/4m1/bli_trmm4m1_entry.c b/frame/3/trmm/4m1/bli_trmm4m1_entry.c deleted file mode 100644 index 85e539071..000000000 --- a/frame/3/trmm/4m1/bli_trmm4m1_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_trmm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - bli_trmm_front( side, alpha, a, b, - gemm4m1_cntl ); -} - diff --git a/frame/3/trmm/4m1/bli_trmm4m1_entry.h b/frame/3/trmm/4m1/bli_trmm4m1_entry.h deleted file mode 100644 index 9fdcffde0..000000000 --- a/frame/3/trmm/4m1/bli_trmm4m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - diff --git a/frame/3/trmm/bli_trmm.c b/frame/3/trmm/bli_trmm.c index 6d89eca50..a80106db8 100644 --- a/frame/3/trmm/bli_trmm.c +++ b/frame/3/trmm/bli_trmm.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_trmm( side_t side, obj_t* alpha, obj_t* a, @@ -44,17 +43,22 @@ void bli_trmm( side_t side, { num_t dt = bli_obj_datatype( *b ); - if ( bli_3m1_is_enabled_dt( dt ) ) bli_trmm3m1_entry( side, alpha, a, b ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_trmm4m1_entry( side, alpha, a, b ); - else bli_trmm_entry( side, alpha, a, b ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_trmmind_has_avail( dt ) ) + { + trmm_fp_t func = bli_trmmind_get_avail( dt ); + + return func( side, alpha, a, b ); + } + + bli_trmm_front( side, alpha, a, b, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ side_t side, \ @@ -93,37 +97,5 @@ void PASTEMAC(ch,opname)( \ &bo ); \ } -INSERT_GENTFUNC_BASIC( trmm, trmm ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC2 -#define GENTFUNC2( ctype_a, ctype_b, cha, chb, opname, varname ) \ -\ -void PASTEMAC2(cha,chb,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype_a* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC2_BASIC( trmm, trmm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC2_MIX_D( trmm, trmm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC2_MIX_P( trmm, trmm ) -#endif +INSERT_GENTFUNC_BASIC0( trmm ) diff --git a/frame/3/trmm/bli_trmm.h b/frame/3/trmm/bli_trmm.h index be5376fe0..e621dd201 100644 --- a/frame/3/trmm/bli_trmm.h +++ b/frame/3/trmm/bli_trmm.h @@ -33,9 +33,7 @@ */ #include "bli_trmm_blocksize.h" -#include "bli_trmm_query.h" #include "bli_trmm_check.h" -#include "bli_trmm_entry.h" #include "bli_trmm_front.h" #include "bli_trmm_int.h" @@ -52,9 +50,6 @@ #include "bli_trmm_rl_ker_var2.h" #include "bli_trmm_ru_ker_var2.h" -#include "bli_trmm4m1.h" -#include "bli_trmm3m1.h" - // // Prototype object-based interface. @@ -65,9 +60,6 @@ void bli_trmm( side_t side, obj_t* b ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -85,32 +77,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROT_BASIC( trmm ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT2 -#define GENTPROT2( ctype_a, ctype_b, cha, chb, opname ) \ -\ -void PASTEMAC2(cha,chb,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype_a* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b \ - ); - -INSERT_GENTPROT2_BASIC( trmm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT2_MIX_D( trmm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT2_MIX_P( trmm ) -#endif - diff --git a/frame/3/trmm/bli_trmm_blk_var1f.c b/frame/3/trmm/bli_trmm_blk_var1f.c index 8a0e18929..b31e63f7e 100644 --- a/frame/3/trmm/bli_trmm_blk_var1f.c +++ b/frame/3/trmm/bli_trmm_blk_var1f.c @@ -95,7 +95,7 @@ void bli_trmm_blk_var1f( obj_t* a, dim_t start, end; bli_get_range_weighted( thread, offA, m_trans, - bli_determine_reg_blocksize( a, cntl_blocksize( cntl ) ), + bli_blksz_mult_for_obj( a, cntl_blocksize( cntl ) ), bli_obj_is_upper( *c ), &start, &end ); // Partition along the m dimension. diff --git a/frame/3/trmm/bli_trmm_blk_var2b.c b/frame/3/trmm/bli_trmm_blk_var2b.c index e64e301a8..206403077 100644 --- a/frame/3/trmm/bli_trmm_blk_var2b.c +++ b/frame/3/trmm/bli_trmm_blk_var2b.c @@ -83,7 +83,7 @@ void bli_trmm_blk_var2b( obj_t* a, n_trans = bli_obj_width_after_trans( *b ); dim_t start, end; bli_get_range_weighted( thread, 0, n_trans, - bli_determine_reg_blocksize( b, cntl_blocksize( cntl ) ), + bli_blksz_mult_for_obj( b, cntl_blocksize( cntl ) ), bli_obj_is_upper( *c ), &start, &end ); // Partition along the n dimension. diff --git a/frame/3/trmm/bli_trmm_blk_var2f.c b/frame/3/trmm/bli_trmm_blk_var2f.c index fd493a534..a79d84a8d 100644 --- a/frame/3/trmm/bli_trmm_blk_var2f.c +++ b/frame/3/trmm/bli_trmm_blk_var2f.c @@ -83,7 +83,7 @@ void bli_trmm_blk_var2f( obj_t* a, n_trans = bli_obj_width_after_trans( *b ); dim_t start, end; bli_get_range_weighted( thread, 0, n_trans, - bli_determine_reg_blocksize( b, cntl_blocksize( cntl ) ), + bli_blksz_mult_for_obj( b, cntl_blocksize( cntl ) ), bli_obj_is_lower( *c ), &start, &end ); // Partition along the n dimension. diff --git a/frame/3/trmm/bli_trmm_blocksize.c b/frame/3/trmm/bli_trmm_blocksize.c index 5cf2f90b6..267bb18f7 100644 --- a/frame/3/trmm/bli_trmm_blocksize.c +++ b/frame/3/trmm/bli_trmm_blocksize.c @@ -58,8 +58,8 @@ dim_t bli_trmm_determine_kc_f( dim_t i, // Nudge the default and maximum kc blocksizes up to the nearest // multiple of MR if the triangular matrix is on the left, or NR // if the triangular matrix is one the right. - if ( bli_obj_root_is_triangular( *a ) ) mnr = bli_info_get_default_mr( dt ); - else mnr = bli_info_get_default_nr( dt ); + if ( bli_obj_root_is_triangular( *a ) ) mnr = bli_blksz_mr_for_type( dt, bsize ); + else mnr = bli_blksz_nr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mnr ); b_max = bli_align_dim_to_mult( b_max, mnr ); @@ -93,8 +93,8 @@ dim_t bli_trmm_determine_kc_b( dim_t i, // Nudge the default and maximum kc blocksizes up to the nearest // multiple of MR if the triangular matrix is on the left, or NR // if the triangular matrix is one the right. - if ( bli_obj_root_is_triangular( *a ) ) mnr = bli_info_get_default_mr( dt ); - else mnr = bli_info_get_default_nr( dt ); + if ( bli_obj_root_is_triangular( *a ) ) mnr = bli_blksz_mr_for_type( dt, bsize ); + else mnr = bli_blksz_nr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mnr ); b_max = bli_align_dim_to_mult( b_max, mnr ); diff --git a/frame/3/trmm/bli_trmm_entry.c b/frame/3/trmm/bli_trmm_entry.c deleted file mode 100644 index 0ff119048..000000000 --- a/frame/3/trmm/bli_trmm_entry.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_trmm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - bli_trmm_front( side, alpha, a, b, - gemm_cntl ); -} - diff --git a/frame/3/trmm/bli_trmm_entry.h b/frame/3/trmm/bli_trmm_entry.h deleted file mode 100644 index a2da5b45c..000000000 --- a/frame/3/trmm/bli_trmm_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - diff --git a/frame/3/trmm/bli_trmm_query.h b/frame/3/trmm/bli_trmm_query.h deleted file mode 100644 index 27e468b31..000000000 --- a/frame/3/trmm/bli_trmm_query.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -func_t* bli_trmm_query_ukrs( num_t dt ); -char* bli_trmm_query_impl_string( num_t dt ); diff --git a/frame/3/trmm3/3m1/bli_trmm33m1.c b/frame/3/trmm3/3m1/bli_trmm33m1.c deleted file mode 100644 index 38412d657..000000000 --- a/frame/3/trmm3/3m1/bli_trmm33m1.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trmm33m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_trmm33m1_entry( side, alpha, a, b, beta, c ); - else - bli_trmm3_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( trmm33m1, trmm33m1 ) - diff --git a/frame/3/trmm3/3m1/bli_trmm33m1.h b/frame/3/trmm3/3m1/bli_trmm33m1.h deleted file mode 100644 index 83f9bf41e..000000000 --- a/frame/3/trmm3/3m1/bli_trmm33m1.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_trmm33m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_trmm33m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( trmm33m1 ) - diff --git a/frame/3/trmm3/3m1/bli_trmm33m1_entry.c b/frame/3/trmm3/3m1/bli_trmm33m1_entry.c deleted file mode 100644 index 954edd89c..000000000 --- a/frame/3/trmm3/3m1/bli_trmm33m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3m1_cntl; - -void bli_trmm33m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_trmm3_front( side, alpha, a, b, beta, c, - gemm3m1_cntl ); -} - diff --git a/frame/3/trmm3/3m1/bli_trmm33m1_entry.h b/frame/3/trmm3/3m1/bli_trmm33m1_entry.h deleted file mode 100644 index 4803073bb..000000000 --- a/frame/3/trmm3/3m1/bli_trmm33m1_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm33m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/trmm3/3mh/bli_trmm33mh.c b/frame/3/trmm3/3mh/bli_trmm33mh.c deleted file mode 100644 index 5036c82aa..000000000 --- a/frame/3/trmm3/3mh/bli_trmm33mh.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trmm33mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 3mh only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_trmm33mh_entry( side, alpha, a, b, beta, c ); - else - bli_trmm3_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( trmm33mh, trmm33mh ) - diff --git a/frame/3/trmm3/3mh/bli_trmm33mh.h b/frame/3/trmm3/3mh/bli_trmm33mh.h deleted file mode 100644 index cabd68043..000000000 --- a/frame/3/trmm3/3mh/bli_trmm33mh.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_trmm33mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_trmm33mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( trmm33mh ) - diff --git a/frame/3/trmm3/3mh/bli_trmm33mh_entry.c b/frame/3/trmm3/3mh/bli_trmm33mh_entry.c deleted file mode 100644 index 2b2f393f8..000000000 --- a/frame/3/trmm3/3mh/bli_trmm33mh_entry.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; - -void bli_trmm33mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_trmm3_front( side, alpha, a, b, beta, c, gemm3mh_cntl_ro ); - bli_trmm3_front( side, alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_trmm3_front( side, alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} - diff --git a/frame/3/trmm3/3mh/bli_trmm33mh_entry.h b/frame/3/trmm3/3mh/bli_trmm33mh_entry.h deleted file mode 100644 index 65a12b49e..000000000 --- a/frame/3/trmm3/3mh/bli_trmm33mh_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm33mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/trmm3/4m1/bli_trmm34m1.c b/frame/3/trmm3/4m1/bli_trmm34m1.c deleted file mode 100644 index 68442682a..000000000 --- a/frame/3/trmm3/4m1/bli_trmm34m1.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trmm34m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4m only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_trmm34m1_entry( side, alpha, a, b, beta, c ); - else - bli_trmm3_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( trmm34m1, trmm34m1 ) - diff --git a/frame/3/trmm3/4m1/bli_trmm34m1.h b/frame/3/trmm3/4m1/bli_trmm34m1.h deleted file mode 100644 index 34a8d52c3..000000000 --- a/frame/3/trmm3/4m1/bli_trmm34m1.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_trmm34m1_entry.h" - - -// -// Prototype object-based interface. -// -void bli_trmm34m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( trmm34m1 ) - diff --git a/frame/3/trmm3/4m1/bli_trmm34m1_entry.c b/frame/3/trmm3/4m1/bli_trmm34m1_entry.c deleted file mode 100644 index 5124aac11..000000000 --- a/frame/3/trmm3/4m1/bli_trmm34m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4m1_cntl; - -void bli_trmm34m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_trmm3_front( side, alpha, a, b, beta, c, - gemm4m1_cntl ); -} - diff --git a/frame/3/trmm3/4m1/bli_trmm34m1_entry.h b/frame/3/trmm3/4m1/bli_trmm34m1_entry.h deleted file mode 100644 index a92f22930..000000000 --- a/frame/3/trmm3/4m1/bli_trmm34m1_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm34m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/trmm3/4mh/bli_trmm34mh.c b/frame/3/trmm3/4mh/bli_trmm34mh.c deleted file mode 100644 index 25493d831..000000000 --- a/frame/3/trmm3/4mh/bli_trmm34mh.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trmm34mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - // Since 4mh only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *c ) ) - bli_trmm34mh_entry( side, alpha, a, b, beta, c ); - else - bli_trmm3_entry( side, alpha, a, b, beta, c ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo, betao, co; \ -\ - dim_t mn_a; \ - dim_t m_b, n_b; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ - bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ - bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ - bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ - bli_obj_set_conjtrans( transb, bo ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo, \ - &betao, \ - &co ); \ -} - -INSERT_GENTFUNC_BASIC( trmm34mh, trmm34mh ) - diff --git a/frame/3/trmm3/4mh/bli_trmm34mh.h b/frame/3/trmm3/4mh/bli_trmm34mh.h deleted file mode 100644 index 1ab5934f9..000000000 --- a/frame/3/trmm3/4mh/bli_trmm34mh.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_trmm34mh_entry.h" - - -// -// Prototype object-based interface. -// -void bli_trmm34mh( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b, \ - ctype* beta, \ - ctype* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT_BASIC( trmm34mh ) - diff --git a/frame/3/trmm3/4mh/bli_trmm34mh_entry.c b/frame/3/trmm3/4mh/bli_trmm34mh_entry.c deleted file mode 100644 index de0fe3eec..000000000 --- a/frame/3/trmm3/4mh/bli_trmm34mh_entry.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm4mh_cntl_rr; -extern gemm_t* gemm4mh_cntl_ri; -extern gemm_t* gemm4mh_cntl_ir; -extern gemm_t* gemm4mh_cntl_ii; - -void bli_trmm34mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_trmm3_front( side, alpha, a, b, beta, c, gemm4mh_cntl_rr ); - bli_trmm3_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ii ); - bli_trmm3_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ri ); - bli_trmm3_front( side, alpha, a, b, &BLIS_ONE, c, gemm4mh_cntl_ir ); -} - diff --git a/frame/3/trmm3/4mh/bli_trmm34mh_entry.h b/frame/3/trmm3/4mh/bli_trmm34mh_entry.h deleted file mode 100644 index 73a103623..000000000 --- a/frame/3/trmm3/4mh/bli_trmm34mh_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm34mh_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/trmm3/bli_trmm3.c b/frame/3/trmm3/bli_trmm3.c index 4b19fe9bc..7ae861f03 100644 --- a/frame/3/trmm3/bli_trmm3.c +++ b/frame/3/trmm3/bli_trmm3.c @@ -34,9 +34,8 @@ #include "blis.h" -// -// Define object-based interface. -// +extern gemm_t* gemm_cntl; + void bli_trmm3( side_t side, obj_t* alpha, obj_t* a, @@ -46,19 +45,22 @@ void bli_trmm3( side_t side, { num_t dt = bli_obj_datatype( *c ); - if ( bli_3mh_is_enabled_dt( dt ) ) bli_trmm33mh_entry( side, alpha, a, b, beta, c ); - else if ( bli_3m1_is_enabled_dt( dt ) ) bli_trmm33m1_entry( side, alpha, a, b, beta, c ); - else if ( bli_4mh_is_enabled_dt( dt ) ) bli_trmm34mh_entry( side, alpha, a, b, beta, c ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_trmm34m1_entry( side, alpha, a, b, beta, c ); - else bli_trmm3_entry( side, alpha, a, b, beta, c ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_trmm3ind_has_avail( dt ) ) + { + trmm3_fp_t func = bli_trmm3ind_get_avail( dt ); + + return func( side, alpha, a, b, beta, c ); + } + + bli_trmm3_front( side, alpha, a, b, beta, c, + gemm_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ side_t side, \ @@ -107,40 +109,5 @@ void PASTEMAC(ch,opname)( \ &co ); \ } -INSERT_GENTFUNC_BASIC( trmm3, trmm3 ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC3U12 -#define GENTFUNC3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname, varname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC3U12_BASIC( trmm3, trmm3 ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC3U12_MIX_D( trmm3, trmm3 ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC3U12_MIX_P( trmm3, trmm3 ) -#endif +INSERT_GENTFUNC_BASIC0( trmm3 ) diff --git a/frame/3/trmm3/bli_trmm3.h b/frame/3/trmm3/bli_trmm3.h index 288b175f4..2b10ecadf 100644 --- a/frame/3/trmm3/bli_trmm3.h +++ b/frame/3/trmm3/bli_trmm3.h @@ -33,14 +33,8 @@ */ #include "bli_trmm3_check.h" -#include "bli_trmm3_entry.h" #include "bli_trmm3_front.h" -#include "bli_trmm34mh.h" -#include "bli_trmm34m1.h" -#include "bli_trmm33mh.h" -#include "bli_trmm33m1.h" - // // Prototype object-based interface. @@ -53,9 +47,6 @@ void bli_trmm3( side_t side, obj_t* c ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -76,35 +67,3 @@ void PASTEMAC(ch,opname)( \ INSERT_GENTPROT_BASIC( trmm3 ) - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT3U12 -#define GENTPROT3U12( ctype_a, ctype_b, ctype_c, ctype_ab, cha, chb, chc, chab, opname ) \ -\ -void PASTEMAC3(cha,chb,chc,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - trans_t transb, \ - dim_t m, \ - dim_t n, \ - ctype_ab* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b, \ - ctype_c* beta, \ - ctype_c* c, inc_t rs_c, inc_t cs_c \ - ); - -INSERT_GENTPROT3U12_BASIC( trmm3 ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT3U12_MIX_D( trmm3 ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT3U12_MIX_P( trmm3 ) -#endif - diff --git a/frame/3/trmm3/bli_trmm3_entry.c b/frame/3/trmm3/bli_trmm3_entry.c deleted file mode 100644 index 1e243d609..000000000 --- a/frame/3/trmm3/bli_trmm3_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern gemm_t* gemm_cntl; - -void bli_trmm3_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_trmm3_front( side, alpha, a, b, beta, c, - gemm_cntl ); -} - diff --git a/frame/3/trmm3/bli_trmm3_entry.h b/frame/3/trmm3/bli_trmm3_entry.h deleted file mode 100644 index 86f04c117..000000000 --- a/frame/3/trmm3/bli_trmm3_entry.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trmm3_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ); - diff --git a/frame/3/trsm/3m1/bli_trsm3m1.c b/frame/3/trsm/3m1/bli_trsm3m1.c deleted file mode 100644 index a9d61fec6..000000000 --- a/frame/3/trsm/3m1/bli_trsm3m1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trsm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - // Since 3m1 only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *b ) ) - bli_trsm3m1_entry( side, alpha, a, b ); - else - bli_trsm_entry( side, alpha, a, b ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo; \ -\ - dim_t mn_a; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, n, b, rs_b, cs_b, &bo ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo ); \ -} - -INSERT_GENTFUNC_BASIC( trsm3m1, trsm3m1 ) - diff --git a/frame/3/trsm/3m1/bli_trsm3m1_entry.c b/frame/3/trsm/3m1/bli_trsm3m1_entry.c deleted file mode 100644 index c56fbe236..000000000 --- a/frame/3/trsm/3m1/bli_trsm3m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern trsm_t* trsm3m1_l_cntl; -extern trsm_t* trsm3m1_r_cntl; - -void bli_trsm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - bli_trsm_front( side, alpha, a, b, - trsm3m1_l_cntl, - trsm3m1_r_cntl ); -} - diff --git a/frame/3/trsm/3m1/bli_trsm3m1_entry.h b/frame/3/trsm/3m1/bli_trsm3m1_entry.h deleted file mode 100644 index c93b499cd..000000000 --- a/frame/3/trsm/3m1/bli_trsm3m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trsm3m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - diff --git a/frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_u_ukr_ref.h b/frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_u_ukr_ref.h deleted file mode 100644 index 0618ce134..000000000 --- a/frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_u_ukr_ref.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - dim_t k, \ - ctype* restrict alpha, \ - ctype* restrict a12, \ - ctype* restrict a11, \ - ctype* restrict b21, \ - ctype* restrict b11, \ - ctype* restrict c11, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( gemmtrsm3m1_u_ukr_ref ) - diff --git a/frame/3/trsm/3m1/ukernels/bli_trsm3m1_u_ukr_ref.h b/frame/3/trsm/3m1/ukernels/bli_trsm3m1_u_ukr_ref.h deleted file mode 100644 index efa0f644e..000000000 --- a/frame/3/trsm/3m1/ukernels/bli_trsm3m1_u_ukr_ref.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - ctype_r* restrict ar, \ - ctype_r* restrict br, \ - ctype* restrict c, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( trsm3m1_u_ukr_ref ) - diff --git a/frame/3/trsm/4m1/bli_trsm4m1.c b/frame/3/trsm/4m1/bli_trsm4m1.c deleted file mode 100644 index 1eaed6313..000000000 --- a/frame/3/trsm/4m1/bli_trsm4m1.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -// -// Define object-based interface. -// -void bli_trsm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - // Since 4m only applies to the complex domain, we use the regular - // control tree for real domain cases. - if ( bli_obj_is_complex( *b ) ) - bli_trsm4m1_entry( side, alpha, a, b ); - else - bli_trsm_entry( side, alpha, a, b ); -} - -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ - ) \ -{ \ - const num_t dt = PASTEMAC(ch,type); \ -\ - obj_t alphao, ao, bo; \ -\ - dim_t mn_a; \ -\ - bli_set_dim_with_side( side, m, n, mn_a ); \ -\ - bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ -\ - bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ - bli_obj_create_with_attached_buffer( dt, m, n, b, rs_b, cs_b, &bo ); \ -\ - bli_obj_set_uplo( uploa, ao ); \ - bli_obj_set_diag( diaga, ao ); \ - bli_obj_set_conjtrans( transa, ao ); \ -\ - bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ -\ - PASTEMAC0(opname)( side, \ - &alphao, \ - &ao, \ - &bo ); \ -} - -INSERT_GENTFUNC_BASIC( trsm4m1, trsm4m1 ) - diff --git a/frame/3/trsm/4m1/bli_trsm4m1.h b/frame/3/trsm/4m1/bli_trsm4m1.h deleted file mode 100644 index 4146f57e9..000000000 --- a/frame/3/trsm/4m1/bli_trsm4m1.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "bli_trsm4m1_cntl.h" -#include "bli_trsm4m1_entry.h" - -#include "bli_gemmtrsm4m1_l_ukr_ref.h" -#include "bli_gemmtrsm4m1_u_ukr_ref.h" - -#include "bli_trsm4m1_l_ukr_ref.h" -#include "bli_trsm4m1_u_ukr_ref.h" - - -// -// Prototype object-based interface. -// -void bli_trsm4m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - - -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ -\ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ - ); - -INSERT_GENTPROT_BASIC( trsm4m1 ) - diff --git a/frame/3/trsm/4m1/bli_trsm4m1_entry.c b/frame/3/trsm/4m1/bli_trsm4m1_entry.c deleted file mode 100644 index 7f9c06ccc..000000000 --- a/frame/3/trsm/4m1/bli_trsm4m1_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern trsm_t* trsm4m1_l_cntl; -extern trsm_t* trsm4m1_r_cntl; - -void bli_trsm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - bli_trsm_front( side, alpha, a, b, - trsm4m1_l_cntl, - trsm4m1_r_cntl ); -} - diff --git a/frame/3/trsm/4m1/bli_trsm4m1_entry.h b/frame/3/trsm/4m1/bli_trsm4m1_entry.h deleted file mode 100644 index 1574f143c..000000000 --- a/frame/3/trsm/4m1/bli_trsm4m1_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trsm4m1_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - diff --git a/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_l_ukr_ref.h b/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_l_ukr_ref.h deleted file mode 100644 index d70aac5a7..000000000 --- a/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_l_ukr_ref.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - dim_t k, \ - ctype* restrict alpha, \ - ctype* restrict a10, \ - ctype* restrict a11, \ - ctype* restrict b01, \ - ctype* restrict b11, \ - ctype* restrict c11, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( gemmtrsm4m1_l_ukr_ref ) - diff --git a/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_u_ukr_ref.h b/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_u_ukr_ref.h deleted file mode 100644 index 8d5b7f2b5..000000000 --- a/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_u_ukr_ref.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - dim_t k, \ - ctype* restrict alpha, \ - ctype* restrict a12, \ - ctype* restrict a11, \ - ctype* restrict b21, \ - ctype* restrict b11, \ - ctype* restrict c11, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( gemmtrsm4m1_u_ukr_ref ) - diff --git a/frame/3/trsm/4m1/ukernels/bli_trsm4m1_l_ukr_ref.h b/frame/3/trsm/4m1/ukernels/bli_trsm4m1_l_ukr_ref.h deleted file mode 100644 index 08a4280cd..000000000 --- a/frame/3/trsm/4m1/ukernels/bli_trsm4m1_l_ukr_ref.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - ctype_r* restrict ar, \ - ctype_r* restrict br, \ - ctype* restrict c, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( trsm4m1_l_ukr_ref ) - diff --git a/frame/3/trsm/4m1/ukernels/bli_trsm4m1_u_ukr_ref.h b/frame/3/trsm/4m1/ukernels/bli_trsm4m1_u_ukr_ref.h deleted file mode 100644 index 63dba14fd..000000000 --- a/frame/3/trsm/4m1/ukernels/bli_trsm4m1_u_ukr_ref.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - - -#undef GENTPROTCO -#define GENTPROTCO( ctype, ctype_r, ch, chr, varname ) \ -\ -void PASTEMAC(ch,varname)( \ - ctype_r* restrict ar, \ - ctype_r* restrict br, \ - ctype* restrict c, inc_t rs_c, inc_t cs_c, \ - auxinfo_t* data \ - ); - -INSERT_GENTPROTCO_BASIC( trsm4m1_u_ukr_ref ) - diff --git a/frame/3/trsm/bli_trsm.c b/frame/3/trsm/bli_trsm.c index 9572ca6c9..019687f93 100644 --- a/frame/3/trsm/bli_trsm.c +++ b/frame/3/trsm/bli_trsm.c @@ -34,9 +34,9 @@ #include "blis.h" -// -// Define object-based interface. -// +extern trsm_t* trsm_l_cntl; +extern trsm_t* trsm_r_cntl; + void bli_trsm( side_t side, obj_t* alpha, obj_t* a, @@ -44,17 +44,23 @@ void bli_trsm( side_t side, { num_t dt = bli_obj_datatype( *b ); - if ( bli_3m1_is_enabled_dt( dt ) ) bli_trsm3m1_entry( side, alpha, a, b ); - else if ( bli_4m1_is_enabled_dt( dt ) ) bli_trsm4m1_entry( side, alpha, a, b ); - else bli_trsm_entry( side, alpha, a, b ); + // If an induced method is available (ie: implemented and enabled), + // call it instead. + if ( bli_trsmind_has_avail( dt ) ) + { + trsm_fp_t func = bli_trsmind_get_avail( dt ); + + return func( side, alpha, a, b ); + } + + bli_trsm_front( side, alpha, a, b, + trsm_l_cntl, + trsm_r_cntl ); } -// -// Define BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTFUNC -#define GENTFUNC( ctype, ch, opname, varname ) \ +#define GENTFUNC( ctype, ch, opname ) \ \ void PASTEMAC(ch,opname)( \ side_t side, \ @@ -93,37 +99,5 @@ void PASTEMAC(ch,opname)( \ &bo ); \ } -INSERT_GENTFUNC_BASIC( trsm, trsm ) - - -// -// Define BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTFUNC2 -#define GENTFUNC2( ctype_a, ctype_b, cha, chb, opname, varname ) \ -\ -void PASTEMAC2(cha,chb,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype_a* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b \ - ) \ -{ \ - bli_check_error_code( BLIS_NOT_YET_IMPLEMENTED ); \ -} - -INSERT_GENTFUNC2_BASIC( trsm, trsm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTFUNC2_MIX_D( trsm, trsm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTFUNC2_MIX_P( trsm, trsm ) -#endif +INSERT_GENTFUNC_BASIC0( trsm ) diff --git a/frame/3/trsm/bli_trsm.h b/frame/3/trsm/bli_trsm.h index 598e876a6..bc6054752 100644 --- a/frame/3/trsm/bli_trsm.h +++ b/frame/3/trsm/bli_trsm.h @@ -34,9 +34,7 @@ #include "bli_trsm_cntl.h" #include "bli_trsm_blocksize.h" -#include "bli_trsm_query.h" #include "bli_trsm_check.h" -#include "bli_trsm_entry.h" #include "bli_trsm_front.h" #include "bli_trsm_int.h" @@ -63,9 +61,6 @@ #include "bli_trsm_l_ukr_ref.h" #include "bli_trsm_u_ukr_ref.h" -#include "bli_trsm4m1.h" -#include "bli_trsm3m1.h" - // // Prototype object-based interface. @@ -76,9 +71,6 @@ void bli_trsm( side_t side, obj_t* b ); -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// #undef GENTPROT #define GENTPROT( ctype, ch, opname ) \ \ @@ -95,33 +87,3 @@ void PASTEMAC(ch,opname)( \ ); INSERT_GENTPROT_BASIC( trsm ) - - -// -// Prototype BLAS-like interfaces with heterogeneous-typed operands. -// -#undef GENTPROT2 -#define GENTPROT2( ctype_a, ctype_b, cha, chb, opname ) \ -\ -void PASTEMAC2(cha,chb,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype_a* alpha, \ - ctype_a* a, inc_t rs_a, inc_t cs_a, \ - ctype_b* b, inc_t rs_b, inc_t cs_b \ - ); - -INSERT_GENTPROT2_BASIC( trsm ) - -#ifdef BLIS_ENABLE_MIXED_DOMAIN_SUPPORT -INSERT_GENTPROT2_MIX_D( trsm ) -#endif - -#ifdef BLIS_ENABLE_MIXED_PRECISION_SUPPORT -INSERT_GENTPROT2_MIX_P( trsm ) -#endif - diff --git a/frame/3/trsm/bli_trsm_blk_var1b.c b/frame/3/trsm/bli_trsm_blk_var1b.c index adca959d1..ca79804a1 100644 --- a/frame/3/trsm/bli_trsm_blk_var1b.c +++ b/frame/3/trsm/bli_trsm_blk_var1b.c @@ -82,10 +82,10 @@ void bli_trsm_blk_var1b( obj_t* a, bli_obj_width_after_trans( *a ); dim_t start, end; - num_t datatype = bli_obj_execution_datatype( *a ); + num_t dt = bli_obj_execution_datatype( *a ); bli_get_range( thread, offA, m_trans, - //bli_lcm( bli_info_get_default_nr( datatype ), bli_info_get_default_mr( datatype ) ), - bli_info_get_default_mc( datatype ), + //bli_lcm( bli_info_get_default_nr( BLIS_TRSM, dt ), bli_info_get_default_mr( BLIS_TRSM, dt ) ), + bli_info_get_default_mc( BLIS_TRSM, dt ), &start, &end ); // Partition along the remaining portion of the m dimension. diff --git a/frame/3/trsm/bli_trsm_blk_var1f.c b/frame/3/trsm/bli_trsm_blk_var1f.c index 2571cf176..fe4ecb310 100644 --- a/frame/3/trsm/bli_trsm_blk_var1f.c +++ b/frame/3/trsm/bli_trsm_blk_var1f.c @@ -81,10 +81,10 @@ void bli_trsm_blk_var1f( obj_t* a, offA = bli_abs( bli_obj_diag_offset_after_trans( *a ) ); dim_t start, end; - num_t datatype = bli_obj_execution_datatype( *a ); + num_t dt = bli_obj_execution_datatype( *a ); bli_get_range( thread, offA, m_trans, - //bli_lcm( bli_info_get_default_nr( datatype ), bli_info_get_default_mr( datatype ) ), - bli_info_get_default_mc( datatype ), + //bli_lcm( bli_info_get_default_nr( BLIS_TRSM, dt ), bli_info_get_default_mr( BLIS_TRSM, dt ) ), + bli_info_get_default_mc( BLIS_TRSM, dt ), &start, &end ); // Partition along the remaining portion of the m dimension. diff --git a/frame/3/trsm/bli_trsm_blk_var2b.c b/frame/3/trsm/bli_trsm_blk_var2b.c index 2e8af4688..59472cfc0 100644 --- a/frame/3/trsm/bli_trsm_blk_var2b.c +++ b/frame/3/trsm/bli_trsm_blk_var2b.c @@ -83,9 +83,12 @@ void bli_trsm_blk_var2b( obj_t* a, // Query dimension in partitioning direction. n_trans = bli_obj_width_after_trans( *b ); dim_t start, end; - num_t datatype = bli_obj_execution_datatype( *a ); + num_t dt = bli_obj_execution_datatype( *a ); bli_get_range( thread, 0, n_trans, - bli_lcm( bli_info_get_default_nr( datatype ), bli_info_get_default_mr( datatype ) ), + //bli_lcm( bli_info_get_default_nr( BLIS_TRSM, dt ), + // bli_info_get_default_mr( BLIS_TRSM, dt ) ), + bli_lcm( bli_blksz_nr_for_type( dt, cntl_blocksize( cntl ) ), + bli_blksz_mr_for_type( dt, cntl_blocksize( cntl ) ) ), &start, &end ); // Partition along the n dimension. diff --git a/frame/3/trsm/bli_trsm_blk_var2f.c b/frame/3/trsm/bli_trsm_blk_var2f.c index 92407c09c..19421d938 100644 --- a/frame/3/trsm/bli_trsm_blk_var2f.c +++ b/frame/3/trsm/bli_trsm_blk_var2f.c @@ -83,9 +83,12 @@ void bli_trsm_blk_var2f( obj_t* a, // Query dimension in partitioning direction. n_trans = bli_obj_width_after_trans( *b ); dim_t start, end; - num_t datatype = bli_obj_execution_datatype( *a ); + num_t dt = bli_obj_execution_datatype( *a ); bli_get_range( thread, 0, n_trans, - bli_lcm( bli_info_get_default_nr( datatype ), bli_info_get_default_mr( datatype ) ), + //bli_lcm( bli_info_get_default_nr( BLIS_TRSM, dt ), + // bli_info_get_default_mr( BLIS_TRSM, dt ) ), + bli_lcm( bli_blksz_nr_for_type( dt, cntl_blocksize( cntl ) ), + bli_blksz_mr_for_type( dt, cntl_blocksize( cntl ) ) ), &start, &end ); // Partition along the n dimension. diff --git a/frame/3/trsm/bli_trsm_blocksize.c b/frame/3/trsm/bli_trsm_blocksize.c index 401b4f968..cb5fc6311 100644 --- a/frame/3/trsm/bli_trsm_blocksize.c +++ b/frame/3/trsm/bli_trsm_blocksize.c @@ -55,11 +55,11 @@ dim_t bli_trsm_determine_kc_f( dim_t i, b_max = bli_blksz_max_for_type( dt, bsize ); // Nudge the default and maximum kc blocksizes up to the nearest - // multiple of MR. We always use MR (rather than sometimes use NR + // multiple of MR. We always use MR (rather than sometimes using NR) // because even when the triangle is on the right, packing of that // matrix uses MR, since only left-side trsm micro-kernels are // supported. - mr = bli_info_get_default_mr( dt ); + mr = bli_blksz_mr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mr ); b_max = bli_align_dim_to_mult( b_max, mr ); @@ -90,11 +90,11 @@ dim_t bli_trsm_determine_kc_b( dim_t i, b_max = bli_blksz_max_for_type( dt, bsize ); // Nudge the default and maximum kc blocksizes up to the nearest - // multiple of MR. We always use MR (rather than sometimes use NR + // multiple of MR. We always use MR (rather than sometimes using NR) // because even when the triangle is on the right, packing of that // matrix uses MR, since only left-side trsm micro-kernels are // supported. - mr = bli_info_get_default_mr( dt ); + mr = bli_blksz_mr_for_type( dt, bsize ); b_alg = bli_align_dim_to_mult( b_alg, mr ); b_max = bli_align_dim_to_mult( b_max, mr ); diff --git a/frame/3/trsm/bli_trsm_cntl.c b/frame/3/trsm/bli_trsm_cntl.c index 323cb5d22..05560aa40 100644 --- a/frame/3/trsm/bli_trsm_cntl.c +++ b/frame/3/trsm/bli_trsm_cntl.c @@ -49,10 +49,14 @@ extern gemm_t* gemm_cntl_bp_ke; func_t* gemmtrsm_l_ukrs; func_t* gemmtrsm_u_ukrs; - func_t* trsm_l_ukrs; func_t* trsm_u_ukrs; +func_t* gemmtrsm_l_ref_ukrs; +func_t* gemmtrsm_u_ref_ukrs; +func_t* trsm_l_ref_ukrs; +func_t* trsm_u_ref_ukrs; + packm_t* trsm_l_packa_cntl; packm_t* trsm_l_packb_cntl; @@ -77,31 +81,25 @@ void bli_trsm_cntl_init() { // Create function pointer objects for each datatype-specific - // gemmtrsm_l and gemmtrsm_u micro-kernel. + // micro-kernel (for gemmtrsm and trsm). gemmtrsm_l_ukrs = bli_func_obj_create( BLIS_SGEMMTRSM_L_UKERNEL, FALSE, BLIS_DGEMMTRSM_L_UKERNEL, FALSE, BLIS_CGEMMTRSM_L_UKERNEL, FALSE, BLIS_ZGEMMTRSM_L_UKERNEL, FALSE ); - gemmtrsm_u_ukrs = bli_func_obj_create( BLIS_SGEMMTRSM_U_UKERNEL, FALSE, BLIS_DGEMMTRSM_U_UKERNEL, FALSE, BLIS_CGEMMTRSM_U_UKERNEL, FALSE, BLIS_ZGEMMTRSM_U_UKERNEL, FALSE ); - - - // Create function pointer objects for each datatype-specific - // trsm_l and trsm_u micro-kernel. trsm_l_ukrs = bli_func_obj_create( BLIS_STRSM_L_UKERNEL, FALSE, BLIS_DTRSM_L_UKERNEL, FALSE, BLIS_CTRSM_L_UKERNEL, FALSE, BLIS_ZTRSM_L_UKERNEL, FALSE ); - trsm_u_ukrs = bli_func_obj_create( BLIS_STRSM_U_UKERNEL, FALSE, @@ -109,6 +107,32 @@ void bli_trsm_cntl_init() BLIS_CTRSM_U_UKERNEL, FALSE, BLIS_ZTRSM_U_UKERNEL, FALSE ); + // Create function pointer objects for reference micro-kernels. + gemmtrsm_l_ref_ukrs + = + bli_func_obj_create( BLIS_SGEMMTRSM_L_UKERNEL_REF, FALSE, + BLIS_DGEMMTRSM_L_UKERNEL_REF, FALSE, + BLIS_CGEMMTRSM_L_UKERNEL_REF, FALSE, + BLIS_ZGEMMTRSM_L_UKERNEL_REF, FALSE ); + gemmtrsm_u_ref_ukrs + = + bli_func_obj_create( BLIS_SGEMMTRSM_U_UKERNEL_REF, FALSE, + BLIS_DGEMMTRSM_U_UKERNEL_REF, FALSE, + BLIS_CGEMMTRSM_U_UKERNEL_REF, FALSE, + BLIS_ZGEMMTRSM_U_UKERNEL_REF, FALSE ); + trsm_l_ref_ukrs + = + bli_func_obj_create( BLIS_STRSM_L_UKERNEL_REF, FALSE, + BLIS_DTRSM_L_UKERNEL_REF, FALSE, + BLIS_CTRSM_L_UKERNEL_REF, FALSE, + BLIS_ZTRSM_L_UKERNEL_REF, FALSE ); + trsm_u_ref_ukrs + = + bli_func_obj_create( BLIS_STRSM_U_UKERNEL_REF, FALSE, + BLIS_DTRSM_U_UKERNEL_REF, FALSE, + BLIS_CTRSM_U_UKERNEL_REF, FALSE, + BLIS_ZTRSM_U_UKERNEL_REF, FALSE ); + // Create control tree objects for packm operations (left side). trsm_l_packa_cntl @@ -285,6 +309,11 @@ void bli_trsm_cntl_finalize() bli_func_obj_free( trsm_l_ukrs ); bli_func_obj_free( trsm_u_ukrs ); + bli_func_obj_free( gemmtrsm_l_ref_ukrs ); + bli_func_obj_free( gemmtrsm_u_ref_ukrs ); + bli_func_obj_free( trsm_l_ref_ukrs ); + bli_func_obj_free( trsm_u_ref_ukrs ); + bli_cntl_obj_free( trsm_l_packa_cntl ); bli_cntl_obj_free( trsm_l_packb_cntl ); bli_cntl_obj_free( trsm_r_packa_cntl ); diff --git a/frame/3/trsm/bli_trsm_entry.c b/frame/3/trsm/bli_trsm_entry.c deleted file mode 100644 index cca3c469b..000000000 --- a/frame/3/trsm/bli_trsm_entry.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern trsm_t* trsm_l_cntl; -extern trsm_t* trsm_r_cntl; - -void bli_trsm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ) -{ - bli_trsm_front( side, alpha, a, b, - trsm_l_cntl, - trsm_r_cntl ); -} - diff --git a/frame/3/trsm/bli_trsm_entry.h b/frame/3/trsm/bli_trsm_entry.h deleted file mode 100644 index 55a20c94d..000000000 --- a/frame/3/trsm/bli_trsm_entry.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -void bli_trsm_entry( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); - diff --git a/frame/3/trsm/bli_trsm_query.c b/frame/3/trsm/bli_trsm_query.c deleted file mode 100644 index f49e23f4c..000000000 --- a/frame/3/trsm/bli_trsm_query.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -extern func_t* gemmtrsm3m1_l_ukrs; -extern func_t* gemmtrsm3m1_u_ukrs; -extern func_t* gemmtrsm4m1_l_ukrs; -extern func_t* gemmtrsm4m1_u_ukrs; -extern func_t* gemmtrsm_l_ukrs; -extern func_t* gemmtrsm_u_ukrs; - -extern func_t* trsm3m1_l_ukrs; -extern func_t* trsm3m1_u_ukrs; -extern func_t* trsm4m1_l_ukrs; -extern func_t* trsm4m1_u_ukrs; -extern func_t* trsm_l_ukrs; -extern func_t* trsm_u_ukrs; - -func_t* bli_gemmtrsm_query_ukrs( uplo_t uplo, num_t dt ) -{ - if ( bli_3m1_is_enabled_dt( dt ) ) - return ( bli_is_lower( uplo ) ? gemmtrsm3m1_l_ukrs - : gemmtrsm3m1_u_ukrs ); - else if ( bli_4m1_is_enabled_dt( dt ) ) - return ( bli_is_lower( uplo ) ? gemmtrsm4m1_l_ukrs - : gemmtrsm4m1_u_ukrs ); - else - return ( bli_is_lower( uplo ) ? gemmtrsm_l_ukrs - : gemmtrsm_u_ukrs ); -} - -func_t* bli_trsm_query_ukrs( uplo_t uplo, num_t dt ) -{ - if ( bli_3m1_is_enabled_dt( dt ) ) - return ( bli_is_lower( uplo ) ? trsm3m1_l_ukrs - : trsm3m1_u_ukrs ); - else if ( bli_4m1_is_enabled_dt( dt ) ) - return ( bli_is_lower( uplo ) ? trsm4m1_l_ukrs - : trsm4m1_u_ukrs ); - else - return ( bli_is_lower( uplo ) ? trsm_l_ukrs - : trsm_u_ukrs ); -} - -char* bli_trsm_query_impl_string( num_t dt ) -{ - if ( bli_3m1_is_enabled_dt( dt ) ) return bli_3m1_get_string(); - else if ( bli_4m1_is_enabled_dt( dt ) ) return bli_4m1_get_string(); - else return bli_native_get_string(); -} - -kimpl_t bli_gemmtrsm_l_ukernel_impl_type( num_t dt ) -{ - func_t* ukrs = bli_gemmtrsm_query_ukrs( BLIS_LOWER, dt ); - void* p = bli_func_obj_query( dt, ukrs ); - - if ( p == BLIS_SGEMMTRSM_L_UKERNEL_REF || - p == BLIS_DGEMMTRSM_L_UKERNEL_REF || - p == BLIS_CGEMMTRSM_L_UKERNEL_REF || - p == BLIS_ZGEMMTRSM_L_UKERNEL_REF - ) return BLIS_REFERENCE_UKERNEL; - else if ( - p == BLIS_CGEMMTRSM3M1_L_UKERNEL_REF || - p == BLIS_ZGEMMTRSM3M1_L_UKERNEL_REF - ) return BLIS_VIRTUAL3M_UKERNEL; - else if ( - p == BLIS_CGEMMTRSM4M1_L_UKERNEL_REF || - p == BLIS_ZGEMMTRSM4M1_L_UKERNEL_REF - ) return BLIS_VIRTUAL4M_UKERNEL; - else - return BLIS_OPTIMIZED_UKERNEL; -} - -kimpl_t bli_gemmtrsm_u_ukernel_impl_type( num_t dt ) -{ - func_t* ukrs = bli_gemmtrsm_query_ukrs( BLIS_UPPER, dt ); - void* p = bli_func_obj_query( dt, ukrs ); - - if ( p == BLIS_SGEMMTRSM_U_UKERNEL_REF || - p == BLIS_DGEMMTRSM_U_UKERNEL_REF || - p == BLIS_CGEMMTRSM_U_UKERNEL_REF || - p == BLIS_ZGEMMTRSM_U_UKERNEL_REF - ) return BLIS_REFERENCE_UKERNEL; - else if ( - p == BLIS_CGEMMTRSM3M1_U_UKERNEL_REF || - p == BLIS_ZGEMMTRSM3M1_U_UKERNEL_REF - ) return BLIS_VIRTUAL3M_UKERNEL; - else if ( - p == BLIS_CGEMMTRSM4M1_U_UKERNEL_REF || - p == BLIS_ZGEMMTRSM4M1_U_UKERNEL_REF - ) return BLIS_VIRTUAL4M_UKERNEL; - else - return BLIS_OPTIMIZED_UKERNEL; -} - -kimpl_t bli_trsm_l_ukernel_impl_type( num_t dt ) -{ - func_t* ukrs = bli_trsm_query_ukrs( BLIS_LOWER, dt ); - void* p = bli_func_obj_query( dt, ukrs ); - - if ( p == BLIS_STRSM_L_UKERNEL_REF || - p == BLIS_DTRSM_L_UKERNEL_REF || - p == BLIS_CTRSM_L_UKERNEL_REF || - p == BLIS_ZTRSM_L_UKERNEL_REF - ) return BLIS_REFERENCE_UKERNEL; - else if ( - p == BLIS_CTRSM3M1_L_UKERNEL_REF || - p == BLIS_ZTRSM3M1_L_UKERNEL_REF - ) return BLIS_VIRTUAL3M_UKERNEL; - else if ( - p == BLIS_CTRSM4M1_L_UKERNEL_REF || - p == BLIS_ZTRSM4M1_L_UKERNEL_REF - ) return BLIS_VIRTUAL4M_UKERNEL; - else - return BLIS_OPTIMIZED_UKERNEL; -} - -kimpl_t bli_trsm_u_ukernel_impl_type( num_t dt ) -{ - func_t* ukrs = bli_trsm_query_ukrs( BLIS_UPPER, dt ); - void* p = bli_func_obj_query( dt, ukrs ); - - if ( p == BLIS_STRSM_U_UKERNEL_REF || - p == BLIS_DTRSM_U_UKERNEL_REF || - p == BLIS_CTRSM_U_UKERNEL_REF || - p == BLIS_ZTRSM_U_UKERNEL_REF - ) return BLIS_REFERENCE_UKERNEL; - else if ( - p == BLIS_CTRSM3M1_U_UKERNEL_REF || - p == BLIS_ZTRSM3M1_U_UKERNEL_REF - ) return BLIS_VIRTUAL3M_UKERNEL; - else if ( - p == BLIS_CTRSM4M1_U_UKERNEL_REF || - p == BLIS_ZTRSM4M1_U_UKERNEL_REF - ) return BLIS_VIRTUAL4M_UKERNEL; - else - return BLIS_OPTIMIZED_UKERNEL; -} - diff --git a/frame/3/trsm/bli_trsm_query.h b/frame/3/trsm/bli_trsm_query.h deleted file mode 100644 index 31f2043b8..000000000 --- a/frame/3/trsm/bli_trsm_query.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -func_t* bli_gemmtrsm_query_ukrs( uplo_t uplo, num_t dt ); -func_t* bli_trsm_query_ukrs( uplo_t uplo, num_t dt ); -char* bli_trsm_query_impl_string( num_t dt ); - -kimpl_t bli_gemmtrsm_l_ukernel_impl_type( num_t dt ); -kimpl_t bli_gemmtrsm_u_ukernel_impl_type( num_t dt ); -kimpl_t bli_trsm_l_ukernel_impl_type( num_t dt ); -kimpl_t bli_trsm_u_ukernel_impl_type( num_t dt ); diff --git a/frame/base/bli_blocksize.c b/frame/base/bli_blocksize.c index 07c3c5bc6..d35061eaa 100644 --- a/frame/base/bli_blocksize.c +++ b/frame/base/bli_blocksize.c @@ -69,15 +69,27 @@ void bli_blksz_obj_init( blksz_t* b, b->e[BLIS_BITVAL_SCOMPLEX_TYPE] = be_c; b->e[BLIS_BITVAL_DCOMPLEX_TYPE] = be_z; - // By default, set the sub-blocksize field to NULL. - b->sub = NULL; + // By default, set the blocksize multiple, mr, and nr fields + // to NULL. + b->mult = NULL; + b->mr = NULL; + b->nr = NULL; } -void bli_blksz_obj_attach_to( blksz_t* br, - blksz_t* bc ) +void bli_blksz_obj_attach_mult_to( blksz_t* br, + blksz_t* bc ) { - bc->sub = br; + bc->mult = br; +} + + +void bli_blksz_obj_attach_mr_nr_to( blksz_t* bmr, + blksz_t* bnr, + blksz_t* bc ) +{ + bc->mr = bmr; + bc->nr = bnr; } @@ -129,9 +141,49 @@ dim_t bli_blksz_total_for_obj( obj_t* obj, } -blksz_t* bli_blksz_sub( blksz_t* b ) +blksz_t* bli_blksz_mult( blksz_t* b ) { - return b->sub; + return b->mult; +} + + +dim_t bli_blksz_mult_for_type( num_t dt, + blksz_t* b ) +{ + return bli_blksz_for_type( dt, bli_blksz_mult( b ) ); +} + + +dim_t bli_blksz_mult_for_obj( obj_t* obj, + blksz_t* b ) +{ + return bli_blksz_mult_for_type( bli_obj_datatype( *obj ), b ); +} + + +blksz_t* bli_blksz_mr( blksz_t* b ) +{ + return b->mr; +} + + +blksz_t* bli_blksz_nr( blksz_t* b ) +{ + return b->nr; +} + + +dim_t bli_blksz_mr_for_type( num_t dt, + blksz_t* b ) +{ + return bli_blksz_for_type( dt, bli_blksz_mr( b ) ); +} + + +dim_t bli_blksz_nr_for_type( num_t dt, + blksz_t* b ) +{ + return bli_blksz_for_type( dt, bli_blksz_nr( b ) ); } @@ -260,19 +312,3 @@ dim_t bli_determine_blocksize_b_sub( dim_t i, } -dim_t bli_determine_reg_blocksize( obj_t* obj, - blksz_t* bsize ) -{ - num_t dt; - blksz_t* b_sub_obj; - dim_t b_sub; - - // Extract the execution datatype and sub-blocksize and use them to - // query the the register blocksize from the blksz_t object. - dt = bli_obj_execution_datatype( *obj ); - b_sub_obj = bli_blksz_sub( bsize ); - b_sub = bli_blksz_for_type( dt, b_sub_obj ); - - return b_sub; -} - diff --git a/frame/base/bli_blocksize.h b/frame/base/bli_blocksize.h index 2362dbd7a..7f801c1d1 100644 --- a/frame/base/bli_blocksize.h +++ b/frame/base/bli_blocksize.h @@ -44,8 +44,12 @@ void bli_blksz_obj_init( blksz_t* b, dim_t b_c, dim_t be_c, dim_t b_z, dim_t be_z ); -void bli_blksz_obj_attach_to( blksz_t* br, - blksz_t* bc ); +void bli_blksz_obj_attach_mult_to( blksz_t* br, + blksz_t* bc ); + +void bli_blksz_obj_attach_mr_nr_to( blksz_t* bmr, + blksz_t* bnr, + blksz_t* bc ); void bli_blksz_obj_free( blksz_t* b ); @@ -67,7 +71,22 @@ dim_t bli_blksz_max_for_obj( obj_t* obj, dim_t bli_blksz_total_for_obj( obj_t* obj, blksz_t* b ); -blksz_t* bli_blksz_sub( blksz_t* b ); +blksz_t* bli_blksz_mult( blksz_t* b ); + +dim_t bli_blksz_mult_for_type( num_t dt, + blksz_t* b ); + +dim_t bli_blksz_mult_for_obj( obj_t* obj, + blksz_t* b ); + +blksz_t* bli_blksz_mr( blksz_t* b ); +blksz_t* bli_blksz_nr( blksz_t* b ); + +dim_t bli_blksz_mr_for_type( num_t dt, + blksz_t* b ); +dim_t bli_blksz_nr_for_type( num_t dt, + blksz_t* b ); +// ----------------------------------------------------------------------------- dim_t bli_determine_blocksize_f( dim_t i, dim_t dim, @@ -87,5 +106,3 @@ dim_t bli_determine_blocksize_b_sub( dim_t i, dim_t b_alg, dim_t b_max ); -dim_t bli_determine_reg_blocksize( obj_t* obj, - blksz_t* bsize ); diff --git a/frame/base/bli_info.c b/frame/base/bli_info.c index ff5e029a3..020d1927f 100644 --- a/frame/base/bli_info.c +++ b/frame/base/bli_info.c @@ -89,263 +89,28 @@ gint_t bli_info_get_blas2blis_int_type_size( void ) { return BLIS_BLAS2BLIS_INT_ // -- bli_kernel.h ------------------------------------------------------------- -extern blksz_t* gemm_mc; -extern blksz_t* gemm_nc; -extern blksz_t* gemm_kc; - -extern blksz_t* gemm4m1_mc; -extern blksz_t* gemm4m1_nc; -extern blksz_t* gemm4m1_kc; - // -- Default cache blocksizes -- -// MC default blocksizes - -gint_t bli_info_get_default_mc( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_default_mc_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_default_mc_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_default_mc_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_default_mc_z(); - else return 0; -} -gint_t bli_info_get_default_mc_s( void ) { bli_init(); return bli_blksz_for_type( BLIS_FLOAT, gemm_mc ); } -gint_t bli_info_get_default_mc_d( void ) { bli_init(); return bli_blksz_for_type( BLIS_DOUBLE, gemm_mc ); } -gint_t bli_info_get_default_mc_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_mc; - else bsize = gemm_mc; - return bli_blksz_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_default_mc_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_mc; - else bsize = gemm_mc; - return bli_blksz_for_type( BLIS_DCOMPLEX, bsize ); } - -// NC default blocksizes - -gint_t bli_info_get_default_nc( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_default_nc_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_default_nc_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_default_nc_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_default_nc_z(); - else return 0; -} -gint_t bli_info_get_default_nc_s( void ) { bli_init(); return bli_blksz_for_type( BLIS_FLOAT, gemm_nc ); } -gint_t bli_info_get_default_nc_d( void ) { bli_init(); return bli_blksz_for_type( BLIS_DOUBLE, gemm_nc ); } -gint_t bli_info_get_default_nc_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_nc; - else bsize = gemm_nc; - return bli_blksz_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_default_nc_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_nc; - else bsize = gemm_nc; - return bli_blksz_for_type( BLIS_DCOMPLEX, bsize ); } - -// KC default blocksizes - -gint_t bli_info_get_default_kc( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_default_kc_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_default_kc_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_default_kc_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_default_kc_z(); - else return 0; -} -gint_t bli_info_get_default_kc_s( void ) { bli_init(); return bli_blksz_for_type( BLIS_FLOAT, gemm_kc ); } -gint_t bli_info_get_default_kc_d( void ) { bli_init(); return bli_blksz_for_type( BLIS_DOUBLE, gemm_kc ); } -gint_t bli_info_get_default_kc_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_kc; - else bsize = gemm_kc; - return bli_blksz_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_default_kc_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_kc; - else bsize = gemm_kc; - return bli_blksz_for_type( BLIS_DCOMPLEX, bsize ); } - +gint_t bli_info_get_default_mc( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_dt( BLIS_MC, oper, dt ); } +gint_t bli_info_get_default_nc( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_dt( BLIS_NC, oper, dt ); } +gint_t bli_info_get_default_kc( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_dt( BLIS_KC, oper, dt ); } // -- Maximum cache blocksizes -- -// MC maximum blocksizes - -gint_t bli_info_get_maximum_mc( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_maximum_mc_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_maximum_mc_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_maximum_mc_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_maximum_mc_z(); - else return 0; -} -gint_t bli_info_get_maximum_mc_s( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_FLOAT, gemm_mc ); } -gint_t bli_info_get_maximum_mc_d( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_DOUBLE, gemm_mc ); } -gint_t bli_info_get_maximum_mc_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_mc; - else bsize = gemm_mc; - return bli_blksz_max_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_maximum_mc_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_mc; - else bsize = gemm_mc; - return bli_blksz_max_for_type( BLIS_DCOMPLEX, bsize ); } - -// NC maximum blocksizes - -gint_t bli_info_get_maximum_nc( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_maximum_nc_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_maximum_nc_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_maximum_nc_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_maximum_nc_z(); - else return 0; -} -gint_t bli_info_get_maximum_nc_s( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_FLOAT, gemm_nc ); } -gint_t bli_info_get_maximum_nc_d( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_DOUBLE, gemm_nc ); } -gint_t bli_info_get_maximum_nc_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_nc; - else bsize = gemm_nc; - return bli_blksz_max_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_maximum_nc_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_nc; - else bsize = gemm_nc; - return bli_blksz_max_for_type( BLIS_DCOMPLEX, bsize ); } - -// KC maximum blocksizes - -gint_t bli_info_get_maximum_kc( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_maximum_kc_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_maximum_kc_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_maximum_kc_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_maximum_kc_z(); - else return 0; -} -gint_t bli_info_get_maximum_kc_s( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_FLOAT, gemm_kc ); } -gint_t bli_info_get_maximum_kc_d( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_DOUBLE, gemm_kc ); } -gint_t bli_info_get_maximum_kc_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_kc; - else bsize = gemm_kc; - return bli_blksz_max_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_maximum_kc_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_kc; - else bsize = gemm_kc; - return bli_blksz_max_for_type( BLIS_DCOMPLEX, bsize ); } - +gint_t bli_info_get_maximum_mc( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_max_dt( BLIS_MC, oper, dt ); } +gint_t bli_info_get_maximum_nc( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_max_dt( BLIS_NC, oper, dt ); } +gint_t bli_info_get_maximum_kc( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_max_dt( BLIS_KC, oper, dt ); } // -- Default register blocksizes -- -extern blksz_t* gemm_mr; -extern blksz_t* gemm_nr; -extern blksz_t* gemm_kr; - -extern blksz_t* gemm4m1_mr; -extern blksz_t* gemm4m1_nr; -extern blksz_t* gemm4m1_kr; - -// MR default blocksizes - -gint_t bli_info_get_default_mr( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_default_mr_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_default_mr_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_default_mr_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_default_mr_z(); - else return 0; -} -gint_t bli_info_get_default_mr_s( void ) { bli_init(); return bli_blksz_for_type( BLIS_FLOAT, gemm_mr ); } -gint_t bli_info_get_default_mr_d( void ) { bli_init(); return bli_blksz_for_type( BLIS_DOUBLE, gemm_mr ); } -gint_t bli_info_get_default_mr_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_mr; - else bsize = gemm_mr; - return bli_blksz_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_default_mr_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_mr; - else bsize = gemm_mr; - return bli_blksz_for_type( BLIS_DCOMPLEX, bsize ); } - -// NR default blocksizes - -gint_t bli_info_get_default_nr( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_default_nr_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_default_nr_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_default_nr_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_default_nr_z(); - else return 0; -} -gint_t bli_info_get_default_nr_s( void ) { bli_init(); return bli_blksz_for_type( BLIS_FLOAT, gemm_nr ); } -gint_t bli_info_get_default_nr_d( void ) { bli_init(); return bli_blksz_for_type( BLIS_DOUBLE, gemm_nr ); } -gint_t bli_info_get_default_nr_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_nr; - else bsize = gemm_nr; - return bli_blksz_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_default_nr_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_nr; - else bsize = gemm_nr; - return bli_blksz_for_type( BLIS_DCOMPLEX, bsize ); } - -// KR default blocksizes - -gint_t bli_info_get_default_kr( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_default_kr_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_default_kr_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_default_kr_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_default_kr_z(); - else return 0; -} -gint_t bli_info_get_default_kr_s( void ) { bli_init(); return bli_blksz_for_type( BLIS_FLOAT, gemm_kr ); } -gint_t bli_info_get_default_kr_d( void ) { bli_init(); return bli_blksz_for_type( BLIS_DOUBLE, gemm_kr ); } -gint_t bli_info_get_default_kr_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_kr; - else bsize = gemm_kr; - return bli_blksz_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_default_kr_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_kr; - else bsize = gemm_kr; - return bli_blksz_for_type( BLIS_DCOMPLEX, bsize ); } - +gint_t bli_info_get_default_mr( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_dt( BLIS_MR, oper, dt ); } +gint_t bli_info_get_default_nr( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_dt( BLIS_NR, oper, dt ); } +gint_t bli_info_get_default_kr( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_dt( BLIS_KR, oper, dt ); } // -- Packing register blocksizes -- -// MR packing blocksize - -gint_t bli_info_get_packdim_mr( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_packdim_mr_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_packdim_mr_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_packdim_mr_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_packdim_mr_z(); - else return 0; -} -gint_t bli_info_get_packdim_mr_s( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_FLOAT, gemm_mr ); } -gint_t bli_info_get_packdim_mr_d( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_DOUBLE, gemm_mr ); } -gint_t bli_info_get_packdim_mr_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_mr; - else bsize = gemm_mr; - return bli_blksz_max_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_packdim_mr_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_mr; - else bsize = gemm_mr; - return bli_blksz_max_for_type( BLIS_DCOMPLEX, bsize ); } - -// NR packing blocksize - -gint_t bli_info_get_packdim_nr( num_t dt ) -{ - if ( bli_is_float ( dt ) ) return bli_info_get_packdim_nr_s(); - else if ( bli_is_double ( dt ) ) return bli_info_get_packdim_nr_d(); - else if ( bli_is_scomplex( dt ) ) return bli_info_get_packdim_nr_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_info_get_packdim_nr_z(); - else return 0; -} -gint_t bli_info_get_packdim_nr_s( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_FLOAT, gemm_nr ); } -gint_t bli_info_get_packdim_nr_d( void ) { bli_init(); return bli_blksz_max_for_type( BLIS_DOUBLE, gemm_nr ); } -gint_t bli_info_get_packdim_nr_c( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_c() ) bsize = gemm4m1_nr; - else bsize = gemm_nr; - return bli_blksz_max_for_type( BLIS_SCOMPLEX, bsize ); } -gint_t bli_info_get_packdim_nr_z( void ) { bli_init(); blksz_t* bsize; - if ( bli_xm_is_enabled_z() ) bsize = gemm4m1_nr; - else bsize = gemm_nr; - return bli_blksz_max_for_type( BLIS_DCOMPLEX, bsize ); } +gint_t bli_info_get_packdim_mr( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_max_dt( BLIS_MR, oper, dt ); } +gint_t bli_info_get_packdim_nr( opid_t oper, num_t dt ) { return bli_bsv_get_avail_blksz_max_dt( BLIS_NR, oper, dt ); } // -- Micro-panel alignment -- @@ -488,35 +253,16 @@ gint_t bli_info_get_dotxaxpyf_fuse_fac_z( void ) { return BLIS_DOTXAXPYF_FUSE_FA // -- Level-3 kernel definitions -- -static char* ukr_type_str[4] = { "refnce", - "virt4m", - "virt3m", - "optmzd" }; - -char* bli_info_get_gemm_ukr_type_string( num_t dt ) -{ - return ukr_type_str[ bli_gemm_ukernel_impl_type( dt ) ]; -} - -char* bli_info_get_gemmtrsm_l_ukr_type_string( num_t dt ) -{ - return ukr_type_str[ bli_gemmtrsm_l_ukernel_impl_type( dt ) ]; -} - -char* bli_info_get_gemmtrsm_u_ukr_type_string( num_t dt ) -{ - return ukr_type_str[ bli_gemmtrsm_u_ukernel_impl_type( dt ) ]; -} - -char* bli_info_get_trsm_l_ukr_type_string( num_t dt ) -{ - return ukr_type_str[ bli_trsm_l_ukernel_impl_type( dt ) ]; -} - -char* bli_info_get_trsm_u_ukr_type_string( num_t dt ) -{ - return ukr_type_str[ bli_trsm_u_ukernel_impl_type( dt ) ]; -} +char* bli_info_get_gemm_ukr_impl_string( ind_t method, num_t dt ) + { return bli_ukr_impl_string( BLIS_GEMM_UKR, method, dt ); } +char* bli_info_get_gemmtrsm_l_ukr_impl_string( ind_t method, num_t dt ) + { return bli_ukr_impl_string( BLIS_GEMMTRSM_L_UKR, method, dt ); } +char* bli_info_get_gemmtrsm_u_ukr_impl_string( ind_t method, num_t dt ) + { return bli_ukr_impl_string( BLIS_GEMMTRSM_U_UKR, method, dt ); } +char* bli_info_get_trsm_l_ukr_impl_string( ind_t method, num_t dt ) + { return bli_ukr_impl_string( BLIS_TRSM_L_UKR, method, dt ); } +char* bli_info_get_trsm_u_ukr_impl_string( ind_t method, num_t dt ) + { return bli_ukr_impl_string( BLIS_TRSM_U_UKR, method, dt ); } @@ -530,14 +276,14 @@ gint_t bli_info_get_mn_pool_size( void ) { return BLIS_MN_POOL_SIZE; } // -- BLIS implementation query (level-3) -------------------------------------- -char* bli_info_get_gemm_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_hemm_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_herk_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_her2k_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_symm_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_syrk_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_syr2k_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_trmm_impl_string( num_t dt ) { bli_init(); return bli_trmm_query_impl_string( dt ); } -char* bli_info_get_trmm3_impl_string( num_t dt ) { bli_init(); return bli_gemm_query_impl_string( dt ); } -char* bli_info_get_trsm_impl_string( num_t dt ) { bli_init(); return bli_trsm_query_impl_string( dt ); } +char* bli_info_get_gemm_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_GEMM, dt ); } +char* bli_info_get_hemm_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_HEMM, dt ); } +char* bli_info_get_herk_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_HERK, dt ); } +char* bli_info_get_her2k_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_HER2K, dt ); } +char* bli_info_get_symm_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_SYMM, dt ); } +char* bli_info_get_syrk_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_SYRK, dt ); } +char* bli_info_get_syr2k_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_SYR2K, dt ); } +char* bli_info_get_trmm_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_TRMM, dt ); } +char* bli_info_get_trmm3_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_TRMM3, dt ); } +char* bli_info_get_trsm_impl_string( num_t dt ) { return bli_ind_oper_get_avail_impl_string( BLIS_TRSM, dt ); } diff --git a/frame/base/bli_info.h b/frame/base/bli_info.h index 92e454ace..cf8437c41 100644 --- a/frame/base/bli_info.h +++ b/frame/base/bli_info.h @@ -63,77 +63,26 @@ gint_t bli_info_get_blas2blis_int_type_size( void ); // -- Default cache blocksizes -- -gint_t bli_info_get_default_mc( num_t dt ); -gint_t bli_info_get_default_mc_s( void ); -gint_t bli_info_get_default_mc_d( void ); -gint_t bli_info_get_default_mc_c( void ); -gint_t bli_info_get_default_mc_z( void ); - -gint_t bli_info_get_default_kc( num_t dt ); -gint_t bli_info_get_default_kc_s( void ); -gint_t bli_info_get_default_kc_d( void ); -gint_t bli_info_get_default_kc_c( void ); -gint_t bli_info_get_default_kc_z( void ); - -gint_t bli_info_get_default_nc( num_t dt ); -gint_t bli_info_get_default_nc_s( void ); -gint_t bli_info_get_default_nc_d( void ); -gint_t bli_info_get_default_nc_c( void ); -gint_t bli_info_get_default_nc_z( void ); +gint_t bli_info_get_default_mc( opid_t oper, num_t dt ); +gint_t bli_info_get_default_kc( opid_t oper, num_t dt ); +gint_t bli_info_get_default_nc( opid_t oper, num_t dt ); // -- Maximum cache blocksizes -- -gint_t bli_info_get_maximum_mc( num_t dt ); -gint_t bli_info_get_maximum_mc_s( void ); -gint_t bli_info_get_maximum_mc_d( void ); -gint_t bli_info_get_maximum_mc_c( void ); -gint_t bli_info_get_maximum_mc_z( void ); - -gint_t bli_info_get_maximum_kc( num_t dt ); -gint_t bli_info_get_maximum_kc_s( void ); -gint_t bli_info_get_maximum_kc_d( void ); -gint_t bli_info_get_maximum_kc_c( void ); -gint_t bli_info_get_maximum_kc_z( void ); - -gint_t bli_info_get_maximum_nc( num_t dt ); -gint_t bli_info_get_maximum_nc_s( void ); -gint_t bli_info_get_maximum_nc_d( void ); -gint_t bli_info_get_maximum_nc_c( void ); -gint_t bli_info_get_maximum_nc_z( void ); +gint_t bli_info_get_maximum_mc( opid_t oper, num_t dt ); +gint_t bli_info_get_maximum_kc( opid_t oper, num_t dt ); +gint_t bli_info_get_maximum_nc( opid_t oper, num_t dt ); // -- Default register blocksizes -- -gint_t bli_info_get_default_mr( num_t dt ); -gint_t bli_info_get_default_mr_s( void ); -gint_t bli_info_get_default_mr_d( void ); -gint_t bli_info_get_default_mr_c( void ); -gint_t bli_info_get_default_mr_z( void ); - -gint_t bli_info_get_default_kr( num_t dt ); -gint_t bli_info_get_default_kr_s( void ); -gint_t bli_info_get_default_kr_d( void ); -gint_t bli_info_get_default_kr_c( void ); -gint_t bli_info_get_default_kr_z( void ); - -gint_t bli_info_get_default_nr( num_t dt ); -gint_t bli_info_get_default_nr_s( void ); -gint_t bli_info_get_default_nr_d( void ); -gint_t bli_info_get_default_nr_c( void ); -gint_t bli_info_get_default_nr_z( void ); +gint_t bli_info_get_default_mr( opid_t oper, num_t dt ); +gint_t bli_info_get_default_kr( opid_t oper, num_t dt ); +gint_t bli_info_get_default_nr( opid_t oper, num_t dt ); // -- Packing register blocksizes -- -gint_t bli_info_get_packdim_mr( num_t dt ); -gint_t bli_info_get_packdim_mr_s( void ); -gint_t bli_info_get_packdim_mr_d( void ); -gint_t bli_info_get_packdim_mr_c( void ); -gint_t bli_info_get_packdim_mr_z( void ); - -gint_t bli_info_get_packdim_nr( num_t dt ); -gint_t bli_info_get_packdim_nr_s( void ); -gint_t bli_info_get_packdim_nr_d( void ); -gint_t bli_info_get_packdim_nr_c( void ); -gint_t bli_info_get_packdim_nr_z( void ); +gint_t bli_info_get_packdim_mr( opid_t oper, num_t dt ); +gint_t bli_info_get_packdim_nr( opid_t oper, num_t dt ); // -- Micro-panel alignment for A -- @@ -194,11 +143,11 @@ gint_t bli_info_get_dotxaxpyf_fuse_fac_z( void ); // -- Level-3 kernel definitions -- -char* bli_info_get_gemm_ukr_type_string( num_t dt ); -char* bli_info_get_gemmtrsm_l_ukr_type_string( num_t dt ); -char* bli_info_get_gemmtrsm_u_ukr_type_string( num_t dt ); -char* bli_info_get_trsm_l_ukr_type_string( num_t dt ); -char* bli_info_get_trsm_u_ukr_type_string( num_t dt ); +char* bli_info_get_gemm_ukr_impl_string( ind_t method, num_t dt ); +char* bli_info_get_gemmtrsm_l_ukr_impl_string( ind_t method, num_t dt ); +char* bli_info_get_gemmtrsm_u_ukr_impl_string( ind_t method, num_t dt ); +char* bli_info_get_trsm_l_ukr_impl_string( ind_t method, num_t dt ); +char* bli_info_get_trsm_u_ukr_impl_string( ind_t method, num_t dt ); // -- bli_mem_pool_macro_defs.h ------------------------------------------------ diff --git a/frame/base/bli_init.c b/frame/base/bli_init.c index 7f10ea7ef..ae7e8ba28 100644 --- a/frame/base/bli_init.c +++ b/frame/base/bli_init.c @@ -103,6 +103,8 @@ err_t bli_init( void ) bli_mem_init(); + bli_ind_init(); + bli_setup_communicator( &BLIS_SINGLE_COMM, 1 ); bli_setup_packm_single_threaded_info( &BLIS_PACKM_SINGLE_THREADED ); bli_setup_gemm_single_threaded_info( &BLIS_GEMM_SINGLE_THREADED ); diff --git a/frame/base/induced/bli_xm.h b/frame/base/bli_opid.c similarity index 93% rename from frame/base/induced/bli_xm.h rename to frame/base/bli_opid.c index 74f776c36..3742a4ca4 100644 --- a/frame/base/induced/bli_xm.h +++ b/frame/base/bli_opid.c @@ -32,8 +32,11 @@ */ -bool_t bli_xm_is_enabled_dt( num_t dt ); +#include "blis.h" -bool_t bli_xm_is_enabled_c( void ); -bool_t bli_xm_is_enabled_z( void ); + +bool_t bli_opid_is_level3( opid_t opid ) +{ + return ( BLIS_GEMM <= opid && opid <= BLIS_TRSM ); +} diff --git a/frame/3/gemm/4m1/bli_gemm4m1_cntl.h b/frame/base/bli_opid.h similarity index 95% rename from frame/3/gemm/4m1/bli_gemm4m1_cntl.h rename to frame/base/bli_opid.h index 5385a8d81..f26cebb91 100644 --- a/frame/3/gemm/4m1/bli_gemm4m1_cntl.h +++ b/frame/base/bli_opid.h @@ -32,6 +32,5 @@ */ -void bli_gemm4m1_cntl_init( void ); -void bli_gemm4m1_cntl_finalize( void ); +bool_t bli_opid_is_level3( opid_t opid ); diff --git a/frame/base/induced/bli_3m1.c b/frame/base/induced/bli_3m1.c deleted file mode 100644 index 71df1752e..000000000 --- a/frame/base/induced/bli_3m1.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -static char* bli_3m1_str = "3m1"; - -static bool_t bli_will_use_3m1_c = FALSE; -static bool_t bli_will_use_3m1_z = FALSE; - - -char* bli_3m1_get_string( void ) { return bli_3m1_str; } - -bool_t bli_3m1_is_enabled_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) return bli_3m1_is_enabled_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_3m1_is_enabled_z(); - else return FALSE; -} -bool_t bli_3m1_is_enabled_c( void ) { return bli_will_use_3m1_c; } -bool_t bli_3m1_is_enabled_z( void ) { return bli_will_use_3m1_z; } - - -void bli_3m1_enable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_3m1_enable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_3m1_enable_z(); -} -void bli_3m1_enable_c( void ) { bli_will_use_3m1_c = TRUE; } -void bli_3m1_enable_z( void ) { bli_will_use_3m1_z = TRUE; } -void bli_3m1_enable( void ) { bli_will_use_3m1_c = - bli_will_use_3m1_z = TRUE; } - - -void bli_3m1_disable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_3m1_disable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_3m1_disable_z(); -} - -void bli_3m1_disable_c( void ) { bli_will_use_3m1_c = FALSE; } -void bli_3m1_disable_z( void ) { bli_will_use_3m1_z = FALSE; } -void bli_3m1_disable( void ) { bli_will_use_3m1_c = - bli_will_use_3m1_z = FALSE; } diff --git a/frame/base/induced/bli_3m1.h b/frame/base/induced/bli_3m1.h deleted file mode 100644 index fef815a85..000000000 --- a/frame/base/induced/bli_3m1.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -char* bli_3m1_get_string( void ); - -bool_t bli_3m1_is_enabled_dt( num_t dt ); -bool_t bli_3m1_is_enabled_c( void ); -bool_t bli_3m1_is_enabled_z( void ); - -void bli_3m1_enable_dt( num_t dt ); -void bli_3m1_enable_c( void ); -void bli_3m1_enable_z( void ); -void bli_3m1_enable( void ); - -void bli_3m1_disable_dt( num_t dt ); -void bli_3m1_disable_c( void ); -void bli_3m1_disable_z( void ); -void bli_3m1_disable( void ); diff --git a/frame/base/induced/bli_3mh.c b/frame/base/induced/bli_3mh.c deleted file mode 100644 index 6cabb69dc..000000000 --- a/frame/base/induced/bli_3mh.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -static char* bli_3mh_str = "3mh"; - -static bool_t bli_will_use_3mh_c = FALSE; -static bool_t bli_will_use_3mh_z = FALSE; - - -char* bli_3mh_get_string( void ) { return bli_3mh_str; } - -bool_t bli_3mh_is_enabled_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) return bli_3mh_is_enabled_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_3mh_is_enabled_z(); - else return FALSE; -} -bool_t bli_3mh_is_enabled_c( void ) { return bli_will_use_3mh_c; } -bool_t bli_3mh_is_enabled_z( void ) { return bli_will_use_3mh_z; } - - -void bli_3mh_enable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_3mh_enable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_3mh_enable_z(); -} -void bli_3mh_enable_c( void ) { bli_will_use_3mh_c = TRUE; } -void bli_3mh_enable_z( void ) { bli_will_use_3mh_z = TRUE; } -void bli_3mh_enable( void ) { bli_will_use_3mh_c = - bli_will_use_3mh_z = TRUE; } - - -void bli_3mh_disable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_3mh_disable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_3mh_disable_z(); -} - -void bli_3mh_disable_c( void ) { bli_will_use_3mh_c = FALSE; } -void bli_3mh_disable_z( void ) { bli_will_use_3mh_z = FALSE; } -void bli_3mh_disable( void ) { bli_will_use_3mh_c = - bli_will_use_3mh_z = FALSE; } diff --git a/frame/base/induced/bli_3mh.h b/frame/base/induced/bli_3mh.h deleted file mode 100644 index 4b9798275..000000000 --- a/frame/base/induced/bli_3mh.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -char* bli_3mh_get_string( void ); - -bool_t bli_3mh_is_enabled_dt( num_t dt ); -bool_t bli_3mh_is_enabled_c( void ); -bool_t bli_3mh_is_enabled_z( void ); - -void bli_3mh_enable_dt( num_t dt ); -void bli_3mh_enable_c( void ); -void bli_3mh_enable_z( void ); -void bli_3mh_enable( void ); - -void bli_3mh_disable_dt( num_t dt ); -void bli_3mh_disable_c( void ); -void bli_3mh_disable_z( void ); -void bli_3mh_disable( void ); diff --git a/frame/base/induced/bli_4m.c b/frame/base/induced/bli_4m.c deleted file mode 100644 index f283b3383..000000000 --- a/frame/base/induced/bli_4m.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -static char* bli_native_str = "native"; -static char* bli_4m1_str = "4m1"; - -// Initialize the 4m enabled/disabled state based on the cpp macros -// which are set in bli_kernel_macro_defs.h. -#ifdef BLIS_ENABLE_VIRTUAL_SCOMPLEX -static bool_t bli_will_use_4m1_c = TRUE; -#else -static bool_t bli_will_use_4m1_c = FALSE; -#endif - -#ifdef BLIS_ENABLE_VIRTUAL_DCOMPLEX -static bool_t bli_will_use_4m1_z = TRUE; -#else -static bool_t bli_will_use_4m1_z = FALSE; -#endif - - -char* bli_native_get_string( void ) { return bli_native_str; } -char* bli_4m1_get_string( void ) { return bli_4m1_str; } - -bool_t bli_4m1_is_enabled_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) return bli_4m1_is_enabled_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_4m1_is_enabled_z(); - else return FALSE; -} -bool_t bli_4m1_is_enabled_c( void ) { return bli_will_use_4m1_c; } -bool_t bli_4m1_is_enabled_z( void ) { return bli_will_use_4m1_z; } - - -void bli_4m1_enable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_4m1_enable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_4m1_enable_z(); -} -void bli_4m1_enable_c( void ) { bli_will_use_4m1_c = TRUE; } -void bli_4m1_enable_z( void ) { bli_will_use_4m1_z = TRUE; } -void bli_4m1_enable( void ) { bli_will_use_4m1_c = - bli_will_use_4m1_z = TRUE; } - - -void bli_4m1_disable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_4m1_disable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_4m1_disable_z(); -} - -void bli_4m1_disable_c( void ) { bli_will_use_4m1_c = FALSE; } -void bli_4m1_disable_z( void ) { bli_will_use_4m1_z = FALSE; } -void bli_4m1_disable( void ) { bli_will_use_4m1_c = - bli_will_use_4m1_z = FALSE; } diff --git a/frame/base/induced/bli_4m.h b/frame/base/induced/bli_4m.h deleted file mode 100644 index c9b2d3793..000000000 --- a/frame/base/induced/bli_4m.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -char* bli_native_get_string( void ); -char* bli_4m1_get_string( void ); - -bool_t bli_4m1_is_enabled_dt( num_t dt ); -bool_t bli_4m1_is_enabled_c( void ); -bool_t bli_4m1_is_enabled_z( void ); - -void bli_4m1_enable_dt( num_t dt ); -void bli_4m1_enable_c( void ); -void bli_4m1_enable_z( void ); -void bli_4m1_enable( void ); - -void bli_4m1_disable_dt( num_t dt ); -void bli_4m1_disable_c( void ); -void bli_4m1_disable_z( void ); -void bli_4m1_disable( void ); diff --git a/frame/base/induced/bli_4mb.c b/frame/base/induced/bli_4mb.c deleted file mode 100644 index 1edb25ec5..000000000 --- a/frame/base/induced/bli_4mb.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -static char* bli_4mb_str = "4mb"; - -static bool_t bli_will_use_4mb_c = FALSE; -static bool_t bli_will_use_4mb_z = FALSE; - - -char* bli_4mb_get_string( void ) { return bli_4mb_str; } - -bool_t bli_4mb_is_enabled_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) return bli_4mb_is_enabled_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_4mb_is_enabled_z(); - else return FALSE; -} -bool_t bli_4mb_is_enabled_c( void ) { return bli_will_use_4mb_c; } -bool_t bli_4mb_is_enabled_z( void ) { return bli_will_use_4mb_z; } - - -void bli_4mb_enable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_4mb_enable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_4mb_enable_z(); -} -void bli_4mb_enable_c( void ) { bli_will_use_4mb_c = TRUE; } -void bli_4mb_enable_z( void ) { bli_will_use_4mb_z = TRUE; } -void bli_4mb_enable( void ) { bli_will_use_4mb_c = - bli_will_use_4mb_z = TRUE; } - - -void bli_4mb_disable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_4mb_disable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_4mb_disable_z(); -} - -void bli_4mb_disable_c( void ) { bli_will_use_4mb_c = FALSE; } -void bli_4mb_disable_z( void ) { bli_will_use_4mb_z = FALSE; } -void bli_4mb_disable( void ) { bli_will_use_4mb_c = - bli_will_use_4mb_z = FALSE; } diff --git a/frame/base/induced/bli_4mb.h b/frame/base/induced/bli_4mb.h deleted file mode 100644 index 1a3e04ce7..000000000 --- a/frame/base/induced/bli_4mb.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -char* bli_4mb_get_string( void ); - -bool_t bli_4mb_is_enabled_dt( num_t dt ); -bool_t bli_4mb_is_enabled_c( void ); -bool_t bli_4mb_is_enabled_z( void ); - -void bli_4mb_enable_dt( num_t dt ); -void bli_4mb_enable_c( void ); -void bli_4mb_enable_z( void ); -void bli_4mb_enable( void ); - -void bli_4mb_disable_dt( num_t dt ); -void bli_4mb_disable_c( void ); -void bli_4mb_disable_z( void ); -void bli_4mb_disable( void ); diff --git a/frame/base/induced/bli_4mh.c b/frame/base/induced/bli_4mh.c deleted file mode 100644 index 110961b84..000000000 --- a/frame/base/induced/bli_4mh.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -static char* bli_4mh_str = "4mh"; - -static bool_t bli_will_use_4mh_c = FALSE; -static bool_t bli_will_use_4mh_z = FALSE; - - -char* bli_4mh_get_string( void ) { return bli_4mh_str; } - -bool_t bli_4mh_is_enabled_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) return bli_4mh_is_enabled_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_4mh_is_enabled_z(); - else return FALSE; -} -bool_t bli_4mh_is_enabled_c( void ) { return bli_will_use_4mh_c; } -bool_t bli_4mh_is_enabled_z( void ) { return bli_will_use_4mh_z; } - - -void bli_4mh_enable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_4mh_enable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_4mh_enable_z(); -} -void bli_4mh_enable_c( void ) { bli_will_use_4mh_c = TRUE; } -void bli_4mh_enable_z( void ) { bli_will_use_4mh_z = TRUE; } -void bli_4mh_enable( void ) { bli_will_use_4mh_c = - bli_will_use_4mh_z = TRUE; } - - -void bli_4mh_disable_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) bli_4mh_disable_c(); - else if ( bli_is_dcomplex( dt ) ) bli_4mh_disable_z(); -} - -void bli_4mh_disable_c( void ) { bli_will_use_4mh_c = FALSE; } -void bli_4mh_disable_z( void ) { bli_will_use_4mh_z = FALSE; } -void bli_4mh_disable( void ) { bli_will_use_4mh_c = - bli_will_use_4mh_z = FALSE; } diff --git a/frame/base/induced/bli_4mh.h b/frame/base/induced/bli_4mh.h deleted file mode 100644 index 050086732..000000000 --- a/frame/base/induced/bli_4mh.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -char* bli_4mh_get_string( void ); - -bool_t bli_4mh_is_enabled_dt( num_t dt ); -bool_t bli_4mh_is_enabled_c( void ); -bool_t bli_4mh_is_enabled_z( void ); - -void bli_4mh_enable_dt( num_t dt ); -void bli_4mh_enable_c( void ); -void bli_4mh_enable_z( void ); -void bli_4mh_enable( void ); - -void bli_4mh_disable_dt( num_t dt ); -void bli_4mh_disable_c( void ); -void bli_4mh_disable_z( void ); -void bli_4mh_disable( void ); diff --git a/frame/base/induced/bli_xm.c b/frame/base/induced/bli_xm.c deleted file mode 100644 index b3c6db712..000000000 --- a/frame/base/induced/bli_xm.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - - BLIS - An object-based framework for developing high-performance BLAS-like - libraries. - - Copyright (C) 2014, The University of Texas at Austin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of The University of Texas at Austin nor the names - of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "blis.h" - -bool_t bli_xm_is_enabled_dt( num_t dt ) -{ - if ( bli_is_scomplex( dt ) ) return bli_xm_is_enabled_c(); - else if ( bli_is_dcomplex( dt ) ) return bli_xm_is_enabled_z(); - else return FALSE; -} - -bool_t bli_xm_is_enabled_c( void ) -{ - if ( bli_3mh_is_enabled_c() ) return TRUE; - else if ( bli_3m1_is_enabled_c() ) return TRUE; - else if ( bli_4mh_is_enabled_c() ) return TRUE; - else if ( bli_4m1_is_enabled_c() ) return TRUE; - else return FALSE; -} - -bool_t bli_xm_is_enabled_z( void ) -{ - if ( bli_3mh_is_enabled_z() ) return TRUE; - else if ( bli_3m1_is_enabled_z() ) return TRUE; - else if ( bli_4mh_is_enabled_z() ) return TRUE; - else if ( bli_4m1_is_enabled_z() ) return TRUE; - else return FALSE; -} - diff --git a/frame/cntl/bli_cntl_init.c b/frame/cntl/bli_cntl_init.c index 43c5ca03a..8c005c378 100644 --- a/frame/cntl/bli_cntl_init.c +++ b/frame/cntl/bli_cntl_init.c @@ -59,22 +59,8 @@ void bli_cntl_init( void ) bli_gemm_cntl_init(); bli_trsm_cntl_init(); - // Level-3 via 4mh - bli_gemm4mh_cntl_init(); - - // Level-3 via 4mb - bli_gemm4mb_cntl_init(); - - // Level-3 via 4m1 - bli_gemm4m1_cntl_init(); - bli_trsm4m1_cntl_init(); - - // Level-3 via 3mh - bli_gemm3mh_cntl_init(); - - // Level-3 via 3m1 - bli_gemm3m1_cntl_init(); - bli_trsm3m1_cntl_init(); + // Level-3 induced + bli_ind_cntl_init(); } void bli_cntl_finalize( void ) @@ -102,21 +88,7 @@ void bli_cntl_finalize( void ) bli_gemm_cntl_finalize(); bli_trsm_cntl_finalize(); - // Level-3 via 4mh - bli_gemm4mh_cntl_finalize(); - - // Level-3 via 4mb - bli_gemm4mb_cntl_finalize(); - - // Level-3 via 4m1 - bli_gemm4m1_cntl_finalize(); - bli_trsm4m1_cntl_finalize(); - - // Level-3 via 3mh - bli_gemm3mh_cntl_finalize(); - - // Level-3 via 3m1 - bli_gemm3m1_cntl_finalize(); - bli_trsm3m1_cntl_finalize(); + // Level-3 induced + bli_ind_cntl_finalize(); } diff --git a/frame/include/bli_kernel_macro_defs.h b/frame/include/bli_kernel_macro_defs.h index 68b382930..e94b818c2 100644 --- a/frame/include/bli_kernel_macro_defs.h +++ b/frame/include/bli_kernel_macro_defs.h @@ -93,7 +93,7 @@ #ifndef BLIS_CGEMM_UKERNEL #define BLIS_CGEMM_UKERNEL BLIS_CGEMM_UKERNEL_REF #ifdef BLIS_SGEMM_UKERNEL -#define BLIS_ENABLE_VIRTUAL_SCOMPLEX +#define BLIS_ENABLE_INDUCED_SCOMPLEX #endif #else #endif @@ -101,7 +101,7 @@ #ifndef BLIS_ZGEMM_UKERNEL #define BLIS_ZGEMM_UKERNEL BLIS_ZGEMM_UKERNEL_REF #ifdef BLIS_DGEMM_UKERNEL -#define BLIS_ENABLE_VIRTUAL_DCOMPLEX +#define BLIS_ENABLE_INDUCED_DCOMPLEX #endif #endif diff --git a/frame/3/trsm/3m1/bli_trsm3m1.h b/frame/include/bli_level3_type_defs.h similarity index 51% rename from frame/3/trsm/3m1/bli_trsm3m1.h rename to frame/include/bli_level3_type_defs.h index 3dc7201e4..62446b836 100644 --- a/frame/3/trsm/3m1/bli_trsm3m1.h +++ b/frame/include/bli_level3_type_defs.h @@ -32,42 +32,88 @@ */ -#include "bli_trsm3m1_cntl.h" -#include "bli_trsm3m1_entry.h" - -#include "bli_gemmtrsm3m1_l_ukr_ref.h" -#include "bli_gemmtrsm3m1_u_ukr_ref.h" - -#include "bli_trsm3m1_l_ukr_ref.h" -#include "bli_trsm3m1_u_ukr_ref.h" +#ifndef BLIS_LEVEL3_TYPE_DEFS_H +#define BLIS_LEVEL3_TYPE_DEFS_H // -// Prototype object-based interface. +// -- BLIS level-3 operation types --------------------------------------------- // -void bli_trsm3m1( side_t side, - obj_t* alpha, - obj_t* a, - obj_t* b ); + +// Here we generate typedef statements that generate function pointer types +// for all defined level-3 operations. -// -// Prototype BLAS-like interfaces with homogeneous-typed operands. -// -#undef GENTPROT -#define GENTPROT( ctype, ch, opname ) \ + +// -- gemm -- + +#undef GENTDEF +#define GENTDEF( opname ) \ \ -void PASTEMAC(ch,opname)( \ - side_t side, \ - uplo_t uploa, \ - trans_t transa, \ - diag_t diaga, \ - dim_t m, \ - dim_t n, \ - ctype* alpha, \ - ctype* a, inc_t rs_a, inc_t cs_a, \ - ctype* b, inc_t rs_b, inc_t cs_b \ +typedef void \ +(*PASTECH(opname,_fp_t))( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ ); +GENTDEF( gemm ) +GENTDEF( her2k ) +GENTDEF( syr2k ) -INSERT_GENTPROT_BASIC( trsm3m1 ) + +// -- hemm/symm/trmm3 -- + +#undef GENTDEF +#define GENTDEF( opname ) \ +\ +typedef void \ +(*PASTECH(opname,_fp_t))( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ); +GENTDEF( hemm ) +GENTDEF( symm ) +GENTDEF( trmm3 ) + + +// -- herk/syrk -- + +#undef GENTDEF +#define GENTDEF( opname ) \ +\ +typedef void \ +(*PASTECH(opname,_fp_t))( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* beta, \ + obj_t* c \ + ); +GENTDEF( herk ) +GENTDEF( syrk ) + + +// -- trmm/trsm -- + +#undef GENTDEF +#define GENTDEF( opname ) \ +\ +typedef void \ +(*PASTECH(opname,_fp_t))( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b \ + ); +GENTDEF( trmm ) +GENTDEF( trsm ) + + + +#endif diff --git a/frame/include/bli_macro_defs.h b/frame/include/bli_macro_defs.h index ddab4443b..4611df4f9 100644 --- a/frame/include/bli_macro_defs.h +++ b/frame/include/bli_macro_defs.h @@ -86,6 +86,9 @@ #define PASTECH_(ch,op) ch ## op #define PASTECH(ch,op) PASTECH_(ch,op) +#define PASTECH2_(ch1,ch2,op) ch1 ## ch2 ## op +#define PASTECH2(ch1,ch2,op) PASTECH2_(ch1,ch2,op) + #define MKSTR(s1) #s1 #define STRINGIFY_INT( s ) MKSTR( s ) diff --git a/frame/include/bli_type_defs.h b/frame/include/bli_type_defs.h index fa09e3e9a..0a2ea6950 100644 --- a/frame/include/bli_type_defs.h +++ b/frame/include/bli_type_defs.h @@ -474,17 +474,6 @@ typedef enum } packbuf_t; -// -- micro-kernel implementation type -- - -typedef enum -{ - BLIS_REFERENCE_UKERNEL = 0, - BLIS_VIRTUAL4M_UKERNEL, - BLIS_VIRTUAL3M_UKERNEL, - BLIS_OPTIMIZED_UKERNEL, -} kimpl_t; - - // // -- BLIS misc. structure types ----------------------------------------------- // @@ -519,8 +508,12 @@ typedef struct blksz_s // Blocksize Extensions. dim_t e[BLIS_NUM_FP_TYPES]; - // Sub-blocksize pointer. - struct blksz_s* sub; + // Pointer to blocksize multiple object. + struct blksz_s* mult; + + // Pointer to mr and nr objects (if applicable). + struct blksz_s* mr; + struct blksz_s* nr; } blksz_t; @@ -727,6 +720,39 @@ typedef enum #define BLIS_MACH_PARAM_LAST BLIS_MACH_EPS2 +// -- Operation ID type -- + +typedef enum +{ +// +// NOTE: If/when additional type values are added to this enum, +// you must either: +// - keep the level-3 values (starting with _GEMM) beginning at +// index 0; or +// - if the value range is moved such that it does not begin at +// index 0, implement something like a BLIS_OPID_LEVEL3_RANGE_START +// value that can be subtracted from the opid_t value to map it +// to a zero-based range. +// This is needed because these level-3 opid_t values are used in +// bli_ind_query.c to index into arrays. +// + BLIS_GEMM = 0, + BLIS_HEMM, + BLIS_HERK, + BLIS_HER2K, + BLIS_SYMM, + BLIS_SYRK, + BLIS_SYR2K, + BLIS_TRMM3, + BLIS_TRMM, + BLIS_TRSM, + + BLIS_NOID, +} opid_t; + +#define BLIS_NUM_LEVEL3_OPS 10 + + // -- Error types -- typedef enum diff --git a/frame/include/blis.h b/frame/include/blis.h index 66ccbb39a..1b377605f 100644 --- a/frame/include/blis.h +++ b/frame/include/blis.h @@ -61,11 +61,13 @@ extern "C" { #include "bli_system.h" -// -- BLIS definitions -- +// -- Common BLIS definitions -- #include "bli_type_defs.h" #include "bli_macro_defs.h" +#include "bli_level3_type_defs.h" + // -- Threading definitions -- @@ -84,16 +86,16 @@ extern "C" { #include "bli_kernel_pre_macro_defs.h" #include "bli_kernel_macro_defs.h" -#include "bli_kernel_4mh_macro_defs.h" -#include "bli_kernel_4mb_macro_defs.h" -#include "bli_kernel_4m1_macro_defs.h" +#include "bli_kernel_ind_macro_defs.h" +//#include "bli_kernel_4mh_macro_defs.h" +//#include "bli_kernel_4mb_macro_defs.h" +//#include "bli_kernel_4m1_macro_defs.h" +//#include "bli_kernel_3mh_macro_defs.h" +//#include "bli_kernel_3m1_macro_defs.h" -#include "bli_kernel_3mh_macro_defs.h" -#include "bli_kernel_3m1_macro_defs.h" - -#include "bli_kernel_4mi_macro_defs.h" -#include "bli_kernel_3mi_macro_defs.h" -#include "bli_kernel_rih_macro_defs.h" +//#include "bli_packm_4mi_macro_defs.h" +//#include "bli_packm_3mi_macro_defs.h" +//#include "bli_packm_rih_macro_defs.h" #include "bli_kernel_post_macro_defs.h" #include "bli_kernel_prototypes.h" @@ -121,18 +123,12 @@ extern "C" { #include "bli_error.h" #include "bli_f2c.h" #include "bli_machval.h" -#include "bli_info.h" #include "bli_getopt.h" +#include "bli_opid.h" #include "bli_flops.h" -#include "bli_xm.h" -#include "bli_4mh.h" -#include "bli_4mb.h" -#include "bli_4m.h" -#include "bli_3mh.h" -#include "bli_3m1.h" - -// Control tree definitions. #include "bli_cntl.h" +#include "bli_ind.h" +#include "bli_info.h" // -- Level-0 operations -- diff --git a/frame/3/gemm/4mb/bli_gemm4mb_entry.c b/frame/ind/bli_ind.h similarity index 81% rename from frame/3/gemm/4mb/bli_gemm4mb_entry.c rename to frame/ind/bli_ind.h index e4df24022..a283ef689 100644 --- a/frame/3/gemm/4mb/bli_gemm4mb_entry.c +++ b/frame/ind/bli_ind.h @@ -32,17 +32,25 @@ */ -#include "blis.h" -extern gemm_t* gemm4mb_cntl; +// cntl +#include "bli_ind_cntl_init.h" +#include "bli_gemmind_cntl.h" +#include "bli_trsmind_cntl.h" -void bli_gemm4mb_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_gemm_front( alpha, a, b, beta, c, - gemm4mb_cntl ); -} +// object API +#include "bli_oapi_ind.h" + +// typed API +#include "bli_tapi_ind.h" + +// query +#include "bli_ind_query.h" +#include "bli_ukr_query.h" +#include "bli_bsv_query.h" + +// ukernels +#include "bli_gemmind_ukr_ref.h" +#include "bli_gemmtrsmind_x_ukr_ref.h" +#include "bli_trsmind_x_ukr_ref.h" diff --git a/frame/3/gemm/3m1/bli_gemm3m1_cntl.c b/frame/ind/cntl/bli_gemm3m1_cntl.c similarity index 91% rename from frame/3/gemm/3m1/bli_gemm3m1_cntl.c rename to frame/ind/cntl/bli_gemm3m1_cntl.c index 917e43aff..ce9a7d8f1 100644 --- a/frame/3/gemm/3m1/bli_gemm3m1_cntl.c +++ b/frame/ind/cntl/bli_gemm3m1_cntl.c @@ -106,11 +106,21 @@ void bli_gemm3m1_cntl_init() BLIS_DEFAULT_KR_D, BLIS_PACKDIM_KR_D ); - // Attach the register blksz_t objects as sub-blocksizes to the cache + // Attach the register blksz_t objects as blocksize multiples to the cache // blksz_t objects. - bli_blksz_obj_attach_to( gemm3m1_mr, gemm3m1_mc ); - bli_blksz_obj_attach_to( gemm3m1_nr, gemm3m1_nc ); - bli_blksz_obj_attach_to( gemm3m1_kr, gemm3m1_kc ); + bli_blksz_obj_attach_mult_to( gemm3m1_mr, gemm3m1_mc ); + bli_blksz_obj_attach_mult_to( gemm3m1_nr, gemm3m1_nc ); + bli_blksz_obj_attach_mult_to( gemm3m1_kr, gemm3m1_kc ); + + + // Attach the mr and nr blksz_t objects to each cache blksz_t object. + // The primary example of why this is needed relates to nudging kc. + // In hemm, symm, trmm, or trmm3, we need to know both mr and nr, + // since the multiple we target in nudging depends on whether the + // structured matrix is on the left or the right. + bli_blksz_obj_attach_mr_nr_to( gemm3m1_mr, gemm3m1_nr, gemm3m1_mc ); + bli_blksz_obj_attach_mr_nr_to( gemm3m1_mr, gemm3m1_nr, gemm3m1_nc ); + bli_blksz_obj_attach_mr_nr_to( gemm3m1_mr, gemm3m1_nr, gemm3m1_kc ); // Create function pointer object for each datatype-specific gemm diff --git a/frame/3/gemm/3mh/bli_gemm3mh_cntl.c b/frame/ind/cntl/bli_gemm3mh_cntl.c similarity index 94% rename from frame/3/gemm/3mh/bli_gemm3mh_cntl.c rename to frame/ind/cntl/bli_gemm3mh_cntl.c index 34277c4e2..8e0b28a1d 100644 --- a/frame/3/gemm/3mh/bli_gemm3mh_cntl.c +++ b/frame/ind/cntl/bli_gemm3mh_cntl.c @@ -111,11 +111,21 @@ void bli_gemm3mh_cntl_init() BLIS_DEFAULT_KR_D, BLIS_PACKDIM_KR_D ); - // Attach the register blksz_t objects as sub-blocksizes to the cache + // Attach the register blksz_t objects as blocksize multiples to the cache // blksz_t objects. - bli_blksz_obj_attach_to( gemm3mh_mr, gemm3mh_mc ); - bli_blksz_obj_attach_to( gemm3mh_nr, gemm3mh_nc ); - bli_blksz_obj_attach_to( gemm3mh_kr, gemm3mh_kc ); + bli_blksz_obj_attach_mult_to( gemm3mh_mr, gemm3mh_mc ); + bli_blksz_obj_attach_mult_to( gemm3mh_nr, gemm3mh_nc ); + bli_blksz_obj_attach_mult_to( gemm3mh_kr, gemm3mh_kc ); + + + // Attach the mr and nr blksz_t objects to each cache blksz_t object. + // The primary example of why this is needed relates to nudging kc. + // In hemm, symm, trmm, or trmm3, we need to know both mr and nr, + // since the multiple we target in nudging depends on whether the + // structured matrix is on the left or the right. + bli_blksz_obj_attach_mr_nr_to( gemm3mh_mr, gemm3mh_nr, gemm3mh_mc ); + bli_blksz_obj_attach_mr_nr_to( gemm3mh_mr, gemm3mh_nr, gemm3mh_nc ); + bli_blksz_obj_attach_mr_nr_to( gemm3mh_mr, gemm3mh_nr, gemm3mh_kc ); // Create function pointer object for each datatype-specific gemm diff --git a/frame/3/gemm/4m1/bli_gemm4m1_cntl.c b/frame/ind/cntl/bli_gemm4m1_cntl.c similarity index 91% rename from frame/3/gemm/4m1/bli_gemm4m1_cntl.c rename to frame/ind/cntl/bli_gemm4m1_cntl.c index 7965f7512..aa2bfa303 100644 --- a/frame/3/gemm/4m1/bli_gemm4m1_cntl.c +++ b/frame/ind/cntl/bli_gemm4m1_cntl.c @@ -103,11 +103,21 @@ void bli_gemm4m1_cntl_init() BLIS_DEFAULT_KR_D, BLIS_PACKDIM_KR_D ); - // Attach the register blksz_t objects as sub-blocksizes to the cache + // Attach the register blksz_t objects as blocksize multiples to the cache // blksz_t objects. - bli_blksz_obj_attach_to( gemm4m1_mr, gemm4m1_mc ); - bli_blksz_obj_attach_to( gemm4m1_nr, gemm4m1_nc ); - bli_blksz_obj_attach_to( gemm4m1_kr, gemm4m1_kc ); + bli_blksz_obj_attach_mult_to( gemm4m1_mr, gemm4m1_mc ); + bli_blksz_obj_attach_mult_to( gemm4m1_nr, gemm4m1_nc ); + bli_blksz_obj_attach_mult_to( gemm4m1_kr, gemm4m1_kc ); + + + // Attach the mr and nr blksz_t objects to each cache blksz_t object. + // The primary example of why this is needed relates to nudging kc. + // In hemm, symm, trmm, or trmm3, we need to know both mr and nr, + // since the multiple we target in nudging depends on whether the + // structured matrix is on the left or the right. + bli_blksz_obj_attach_mr_nr_to( gemm4m1_mr, gemm4m1_nr, gemm4m1_mc ); + bli_blksz_obj_attach_mr_nr_to( gemm4m1_mr, gemm4m1_nr, gemm4m1_nc ); + bli_blksz_obj_attach_mr_nr_to( gemm4m1_mr, gemm4m1_nr, gemm4m1_kc ); // Create function pointer object for each datatype-specific gemm diff --git a/frame/3/gemm/4mb/bli_gemm4mb_cntl.c b/frame/ind/cntl/bli_gemm4mb_cntl.c similarity index 90% rename from frame/3/gemm/4mb/bli_gemm4mb_cntl.c rename to frame/ind/cntl/bli_gemm4mb_cntl.c index 62e122a8d..05f64cb39 100644 --- a/frame/3/gemm/4mb/bli_gemm4mb_cntl.c +++ b/frame/ind/cntl/bli_gemm4mb_cntl.c @@ -97,11 +97,21 @@ void bli_gemm4mb_cntl_init() BLIS_DEFAULT_KR_D, BLIS_PACKDIM_KR_D ); - // Attach the register blksz_t objects as sub-blocksizes to the cache + // Attach the register blksz_t objects as blocksize multiples to the cache // blksz_t objects. - bli_blksz_obj_attach_to( gemm4mb_mr, gemm4mb_mc ); - bli_blksz_obj_attach_to( gemm4mb_nr, gemm4mb_nc ); - bli_blksz_obj_attach_to( gemm4mb_kr, gemm4mb_kc ); + bli_blksz_obj_attach_mult_to( gemm4mb_mr, gemm4mb_mc ); + bli_blksz_obj_attach_mult_to( gemm4mb_nr, gemm4mb_nc ); + bli_blksz_obj_attach_mult_to( gemm4mb_kr, gemm4mb_kc ); + + + // Attach the mr and nr blksz_t objects to each cache blksz_t object. + // The primary example of why this is needed relates to nudging kc. + // In hemm, symm, trmm, or trmm3, we need to know both mr and nr, + // since the multiple we target in nudging depends on whether the + // structured matrix is on the left or the right. + bli_blksz_obj_attach_mr_nr_to( gemm4mb_mr, gemm4mb_nr, gemm4mb_mc ); + bli_blksz_obj_attach_mr_nr_to( gemm4mb_mr, gemm4mb_nr, gemm4mb_nc ); + bli_blksz_obj_attach_mr_nr_to( gemm4mb_mr, gemm4mb_nr, gemm4mb_kc ); // Create function pointer object for each datatype-specific gemm diff --git a/frame/3/gemm/4mh/bli_gemm4mh_cntl.c b/frame/ind/cntl/bli_gemm4mh_cntl.c similarity index 94% rename from frame/3/gemm/4mh/bli_gemm4mh_cntl.c rename to frame/ind/cntl/bli_gemm4mh_cntl.c index 7d8dc2641..2ce643fca 100644 --- a/frame/3/gemm/4mh/bli_gemm4mh_cntl.c +++ b/frame/ind/cntl/bli_gemm4mh_cntl.c @@ -113,11 +113,21 @@ void bli_gemm4mh_cntl_init() BLIS_DEFAULT_KR_D, BLIS_PACKDIM_KR_D ); - // Attach the register blksz_t objects as sub-blocksizes to the cache + // Attach the register blksz_t objects as blocksize multiples to the cache // blksz_t objects. - bli_blksz_obj_attach_to( gemm4mh_mr, gemm4mh_mc ); - bli_blksz_obj_attach_to( gemm4mh_nr, gemm4mh_nc ); - bli_blksz_obj_attach_to( gemm4mh_kr, gemm4mh_kc ); + bli_blksz_obj_attach_mult_to( gemm4mh_mr, gemm4mh_mc ); + bli_blksz_obj_attach_mult_to( gemm4mh_nr, gemm4mh_nc ); + bli_blksz_obj_attach_mult_to( gemm4mh_kr, gemm4mh_kc ); + + + // Attach the mr and nr blksz_t objects to each cache blksz_t object. + // The primary example of why this is needed relates to nudging kc. + // In hemm, symm, trmm, or trmm3, we need to know both mr and nr, + // since the multiple we target in nudging depends on whether the + // structured matrix is on the left or the right. + bli_blksz_obj_attach_mr_nr_to( gemm4mh_mr, gemm4mh_nr, gemm4mh_mc ); + bli_blksz_obj_attach_mr_nr_to( gemm4mh_mr, gemm4mh_nr, gemm4mh_nc ); + bli_blksz_obj_attach_mr_nr_to( gemm4mh_mr, gemm4mh_nr, gemm4mh_kc ); // Create function pointer object for each datatype-specific gemm diff --git a/frame/3/gemm/3mh/bli_gemm3mh_cntl.h b/frame/ind/cntl/bli_gemmind_cntl.h similarity index 84% rename from frame/3/gemm/3mh/bli_gemm3mh_cntl.h rename to frame/ind/cntl/bli_gemmind_cntl.h index 0d3fc6d49..8bf9d5197 100644 --- a/frame/3/gemm/3mh/bli_gemm3mh_cntl.h +++ b/frame/ind/cntl/bli_gemmind_cntl.h @@ -32,6 +32,18 @@ */ +void bli_gemm4mh_cntl_init( void ); +void bli_gemm4mh_cntl_finalize( void ); + +void bli_gemm4mb_cntl_init( void ); +void bli_gemm4mb_cntl_finalize( void ); + +void bli_gemm4m1_cntl_init( void ); +void bli_gemm4m1_cntl_finalize( void ); + void bli_gemm3mh_cntl_init( void ); void bli_gemm3mh_cntl_finalize( void ); +void bli_gemm3m1_cntl_init( void ); +void bli_gemm3m1_cntl_finalize( void ); + diff --git a/frame/3/trmm/bli_trmm_query.c b/frame/ind/cntl/bli_ind_cntl_init.c similarity index 72% rename from frame/3/trmm/bli_trmm_query.c rename to frame/ind/cntl/bli_ind_cntl_init.c index ed106f3eb..26b48b39f 100644 --- a/frame/3/trmm/bli_trmm_query.c +++ b/frame/ind/cntl/bli_ind_cntl_init.c @@ -34,22 +34,43 @@ #include "blis.h" -extern func_t* gemm3m1_ukrs; -extern func_t* gemm4m1_ukrs; -extern func_t* gemm_ukrs; - -func_t* bli_trmm_query_ukrs( num_t dt ) +void bli_ind_cntl_init( void ) { - if ( bli_3m1_is_enabled_dt( dt ) ) return gemm3m1_ukrs; - else if ( bli_4m1_is_enabled_dt( dt ) ) return gemm4m1_ukrs; - else return gemm_ukrs; + // Level-3 via 3mh + bli_gemm3mh_cntl_init(); + + // Level-3 via 3m1 + bli_gemm3m1_cntl_init(); + bli_trsm3m1_cntl_init(); + + // Level-3 via 4mh + bli_gemm4mh_cntl_init(); + + // Level-3 via 4mb + bli_gemm4mb_cntl_init(); + + // Level-3 via 4m1 + bli_gemm4m1_cntl_init(); + bli_trsm4m1_cntl_init(); } -char* bli_trmm_query_impl_string( num_t dt ) +void bli_ind_cntl_finalize( void ) { - if ( bli_3m1_is_enabled_dt( dt ) ) return bli_3m1_get_string(); - else if ( bli_4m1_is_enabled_dt( dt ) ) return bli_4m1_get_string(); - else return bli_native_get_string(); + // Level-3 via 3mh + bli_gemm3mh_cntl_finalize(); + + // Level-3 via 3m1 + bli_gemm3m1_cntl_finalize(); + bli_trsm3m1_cntl_finalize(); + + // Level-3 via 4mh + bli_gemm4mh_cntl_finalize(); + + // Level-3 via 4mb + bli_gemm4mb_cntl_finalize(); + + // Level-3 via 4m1 + bli_gemm4m1_cntl_finalize(); + bli_trsm4m1_cntl_finalize(); } - diff --git a/frame/3/trsm/4m1/bli_trsm4m1_cntl.h b/frame/ind/cntl/bli_ind_cntl_init.h similarity index 95% rename from frame/3/trsm/4m1/bli_trsm4m1_cntl.h rename to frame/ind/cntl/bli_ind_cntl_init.h index 7a3769186..1547c94b0 100644 --- a/frame/3/trsm/4m1/bli_trsm4m1_cntl.h +++ b/frame/ind/cntl/bli_ind_cntl_init.h @@ -32,5 +32,5 @@ */ -void bli_trsm4m1_cntl_init( void ); -void bli_trsm4m1_cntl_finalize( void ); +void bli_ind_cntl_init( void ); +void bli_ind_cntl_finalize( void ); diff --git a/frame/3/trsm/3m1/bli_trsm3m1_cntl.c b/frame/ind/cntl/bli_trsm3m1_cntl.c similarity index 100% rename from frame/3/trsm/3m1/bli_trsm3m1_cntl.c rename to frame/ind/cntl/bli_trsm3m1_cntl.c diff --git a/frame/3/trsm/4m1/bli_trsm4m1_cntl.c b/frame/ind/cntl/bli_trsm4m1_cntl.c similarity index 100% rename from frame/3/trsm/4m1/bli_trsm4m1_cntl.c rename to frame/ind/cntl/bli_trsm4m1_cntl.c diff --git a/frame/3/trsm/3m1/bli_trsm3m1_cntl.h b/frame/ind/cntl/bli_trsmind_cntl.h similarity index 95% rename from frame/3/trsm/3m1/bli_trsm3m1_cntl.h rename to frame/ind/cntl/bli_trsmind_cntl.h index fe59a6c32..7f4535c61 100644 --- a/frame/3/trsm/3m1/bli_trsm3m1_cntl.h +++ b/frame/ind/cntl/bli_trsmind_cntl.h @@ -32,5 +32,9 @@ */ +void bli_trsm4m1_cntl_init( void ); +void bli_trsm4m1_cntl_finalize( void ); + void bli_trsm3m1_cntl_init( void ); void bli_trsm3m1_cntl_finalize( void ); + diff --git a/frame/include/bli_kernel_3m1_macro_defs.h b/frame/ind/include/bli_kernel_3m1_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_3m1_macro_defs.h rename to frame/ind/include/bli_kernel_3m1_macro_defs.h diff --git a/frame/include/bli_kernel_3mh_macro_defs.h b/frame/ind/include/bli_kernel_3mh_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_3mh_macro_defs.h rename to frame/ind/include/bli_kernel_3mh_macro_defs.h diff --git a/frame/include/bli_kernel_4m1_macro_defs.h b/frame/ind/include/bli_kernel_4m1_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_4m1_macro_defs.h rename to frame/ind/include/bli_kernel_4m1_macro_defs.h diff --git a/frame/include/bli_kernel_4mb_macro_defs.h b/frame/ind/include/bli_kernel_4mb_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_4mb_macro_defs.h rename to frame/ind/include/bli_kernel_4mb_macro_defs.h diff --git a/frame/include/bli_kernel_4mh_macro_defs.h b/frame/ind/include/bli_kernel_4mh_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_4mh_macro_defs.h rename to frame/ind/include/bli_kernel_4mh_macro_defs.h diff --git a/frame/3/gemm/4m1/bli_gemm4m1_entry.c b/frame/ind/include/bli_kernel_ind_macro_defs.h similarity index 82% rename from frame/3/gemm/4m1/bli_gemm4m1_entry.c rename to frame/ind/include/bli_kernel_ind_macro_defs.h index ebf0a44e2..ce83bc4fc 100644 --- a/frame/3/gemm/4m1/bli_gemm4m1_entry.c +++ b/frame/ind/include/bli_kernel_ind_macro_defs.h @@ -32,17 +32,16 @@ */ -#include "blis.h" -extern gemm_t* gemm4m1_cntl; +// Virtual kernel headers +#include "bli_kernel_3mh_macro_defs.h" +#include "bli_kernel_3m1_macro_defs.h" +#include "bli_kernel_4mh_macro_defs.h" +#include "bli_kernel_4mb_macro_defs.h" +#include "bli_kernel_4m1_macro_defs.h" -void bli_gemm4m1_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) -{ - bli_gemm_front( alpha, a, b, beta, c, - gemm4m1_cntl ); -} +// Storage format headers +#include "bli_packm_3mi_macro_defs.h" +#include "bli_packm_4mi_macro_defs.h" +#include "bli_packm_rih_macro_defs.h" diff --git a/frame/include/bli_kernel_3mi_macro_defs.h b/frame/ind/include/bli_packm_3mi_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_3mi_macro_defs.h rename to frame/ind/include/bli_packm_3mi_macro_defs.h diff --git a/frame/include/bli_kernel_4mi_macro_defs.h b/frame/ind/include/bli_packm_4mi_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_4mi_macro_defs.h rename to frame/ind/include/bli_packm_4mi_macro_defs.h diff --git a/frame/include/bli_kernel_rih_macro_defs.h b/frame/ind/include/bli_packm_rih_macro_defs.h similarity index 100% rename from frame/include/bli_kernel_rih_macro_defs.h rename to frame/ind/include/bli_packm_rih_macro_defs.h diff --git a/frame/ind/oapi/bli_oapi_3m1.c b/frame/ind/oapi/bli_oapi_3m1.c new file mode 100644 index 000000000..6f33ea345 --- /dev/null +++ b/frame/ind/oapi/bli_oapi_3m1.c @@ -0,0 +1,205 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + +extern gemm_t* gemm3m1_cntl; +extern trsm_t* trsm3m1_l_cntl; +extern trsm_t* trsm3m1_r_cntl; + + +// -- gemm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( gemm, gemm, 3m1 ) + + +// -- hemm/symm/trmm3 ---------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( hemm, gemm, 3m1 ) +GENFRONT( symm, gemm, 3m1 ) +GENFRONT( trmm3, gemm, 3m1 ) + + +// -- herk/syrk ---------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( herk, gemm, 3m1 ) +GENFRONT( syrk, gemm, 3m1 ) + + +// -- her2k/syr2k -------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( her2k, gemm, 3m1 ) +GENFRONT( syr2k, gemm, 3m1 ) + + +// -- trmm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b \ + ) \ +{ \ + if ( bli_obj_is_real( *b ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( trmm, gemm, 3m1 ) + + +// -- trsm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b \ + ) \ +{ \ + if ( bli_obj_is_real( *b ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, \ + PASTECH2(cname,imeth,_l_cntl), \ + PASTECH2(cname,imeth,_r_cntl) ); \ + } \ +} + +GENFRONT( trsm, trsm, 3m1 ) + diff --git a/frame/ind/oapi/bli_oapi_3mh.c b/frame/ind/oapi/bli_oapi_3mh.c new file mode 100644 index 000000000..4c51174a5 --- /dev/null +++ b/frame/ind/oapi/bli_oapi_3mh.c @@ -0,0 +1,180 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + +extern gemm_t* gemm3mh_cntl_ro; +extern gemm_t* gemm3mh_cntl_io; +extern gemm_t* gemm3mh_cntl_rpi; + + +// -- gemm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl_ro) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_io) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_rpi) ); \ + } \ +} + +GENFRONT( gemm, gemm, 3mh ) + + +// -- hemm/symm/trmm3 ---------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl_ro) ); \ + PASTEMAC(opname,_front)( side, alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_io) ); \ + PASTEMAC(opname,_front)( side, alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_rpi) ); \ + } \ +} + +GENFRONT( hemm, gemm, 3mh ) +GENFRONT( symm, gemm, 3mh ) +GENFRONT( trmm3, gemm, 3mh ) + + +// -- herk/syrk ---------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, beta, c, \ + PASTECH2(cname,imeth,_cntl_ro) ); \ + PASTEMAC(opname,_front)( alpha, a, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_io) ); \ + PASTEMAC(opname,_front)( alpha, a, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_rpi) ); \ + } \ +} + +GENFRONT( herk, gemm, 3mh ) +GENFRONT( syrk, gemm, 3mh ) + + +// -- her2k/syr2k -------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl_ro) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_io) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_rpi) ); \ + } \ +} + +GENFRONT( her2k, gemm, 3mh ) +GENFRONT( syr2k, gemm, 3mh ) + + +// -- trmm --------------------------------------------------------------------- + +// +// 3mh is not applicable to trmm. +// + +// -- trsm --------------------------------------------------------------------- + +// +// 3mh is not applicable to trsm. +// diff --git a/frame/ind/oapi/bli_oapi_4m1.c b/frame/ind/oapi/bli_oapi_4m1.c new file mode 100644 index 000000000..03b779565 --- /dev/null +++ b/frame/ind/oapi/bli_oapi_4m1.c @@ -0,0 +1,179 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + +extern gemm_t* gemm4m1_cntl; +extern trsm_t* trsm4m1_l_cntl; +extern trsm_t* trsm4m1_r_cntl; + + +// -- gemm/her2k/syr2k --------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( gemm, gemm, 4m1 ) +GENFRONT( her2k, gemm, 4m1 ) +GENFRONT( syr2k, gemm, 4m1 ) + + +// -- hemm/symm/trmm3 ---------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( hemm, gemm, 4m1 ) +GENFRONT( symm, gemm, 4m1 ) +GENFRONT( trmm3, gemm, 4m1 ) + + +// -- herk/syrk ---------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( herk, gemm, 4m1 ) +GENFRONT( syrk, gemm, 4m1 ) + + +// -- trmm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b \ + ) \ +{ \ + if ( bli_obj_is_real( *b ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( trmm, gemm, 4m1 ) + + +// -- trsm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b \ + ) \ +{ \ + if ( bli_obj_is_real( *b ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, \ + PASTECH2(cname,imeth,_l_cntl), \ + PASTECH2(cname,imeth,_r_cntl) ); \ + } \ +} + +GENFRONT( trsm, trsm, 4m1 ) + diff --git a/frame/ind/oapi/bli_oapi_4mb.c b/frame/ind/oapi/bli_oapi_4mb.c new file mode 100644 index 000000000..37c3f49eb --- /dev/null +++ b/frame/ind/oapi/bli_oapi_4mb.c @@ -0,0 +1,185 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + +extern gemm_t* gemm4mb_cntl; +extern trsm_t* trsm4mb_l_cntl; +extern trsm_t* trsm4mb_r_cntl; + + +// -- gemm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +GENFRONT( gemm, gemm, 4mb ) + + +// -- hemm/symm/trmm3 ---------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +//GENFRONT( hemm, gemm, 4mb ) +//GENFRONT( symm, gemm, 4mb ) +//GENFRONT( trmm3, gemm, 4mb ) + + +// -- herk/syrk ---------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +//GENFRONT( herk, gemm, 4mb ) +//GENFRONT( syrk, gemm, 4mb ) + + +// -- her2k/syr2k -------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +//GENFRONT( her2k, gemm, 4mb ) +//GENFRONT( syr2k, gemm, 4mb ) + + +// -- trmm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b \ + ) \ +{ \ + if ( bli_obj_is_real( *b ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, \ + PASTECH2(cname,imeth,_cntl) ); \ + } \ +} + +//GENFRONT( trmm, gemm, 4mb ) + + +// -- trsm --------------------------------------------------------------------- + +// +// 4mb is not applicable to trsm. +// + diff --git a/frame/ind/oapi/bli_oapi_4mh.c b/frame/ind/oapi/bli_oapi_4mh.c new file mode 100644 index 000000000..5332e6bc8 --- /dev/null +++ b/frame/ind/oapi/bli_oapi_4mh.c @@ -0,0 +1,189 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + +extern gemm_t* gemm4mh_cntl_rr; +extern gemm_t* gemm4mh_cntl_ii; +extern gemm_t* gemm4mh_cntl_ri; +extern gemm_t* gemm4mh_cntl_ir; + + +// -- gemm --------------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl_rr) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ii) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ri) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ir) ); \ + } \ +} + +GENFRONT( gemm, gemm, 4mh ) + + +// -- hemm/symm/trmm3 ---------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + side_t side, \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( side, alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( side, alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl_rr) ); \ + PASTEMAC(opname,_front)( side, alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ii) ); \ + PASTEMAC(opname,_front)( side, alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ri) ); \ + PASTEMAC(opname,_front)( side, alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ir) ); \ + } \ +} + +GENFRONT( hemm, gemm, 4mh ) +GENFRONT( symm, gemm, 4mh ) +GENFRONT( trmm3, gemm, 4mh ) + + +// -- herk/syrk ---------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, beta, c, \ + PASTECH2(cname,imeth,_cntl_rr) ); \ + PASTEMAC(opname,_front)( alpha, a, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ii) ); \ + PASTEMAC(opname,_front)( alpha, a, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ri) ); \ + PASTEMAC(opname,_front)( alpha, a, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ir) ); \ + } \ +} + +GENFRONT( herk, gemm, 4mh ) +GENFRONT( syrk, gemm, 4mh ) + + +// -- her2k/syr2k -------------------------------------------------------------- + +#undef GENFRONT +#define GENFRONT( opname, cname, imeth ) \ +\ +void PASTEMAC(opname,imeth)( \ + obj_t* alpha, \ + obj_t* a, \ + obj_t* b, \ + obj_t* beta, \ + obj_t* c \ + ) \ +{ \ + if ( bli_obj_is_real( *c ) ) \ + { \ + PASTEMAC0(opname)( alpha, a, b, beta, c ); \ + } \ + else \ + { \ + PASTEMAC(opname,_front)( alpha, a, b, beta, c, \ + PASTECH2(cname,imeth,_cntl_rr) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ii) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ri) ); \ + PASTEMAC(opname,_front)( alpha, a, b, &BLIS_ONE, c, \ + PASTECH2(cname,imeth,_cntl_ir) ); \ + } \ +} + +GENFRONT( her2k, gemm, 4mh ) +GENFRONT( syr2k, gemm, 4mh ) + + +// -- trmm --------------------------------------------------------------------- + +// +// 4mh is not applicable to trmm. +// + +// -- trsm --------------------------------------------------------------------- + +// +// 4mh is not applicable to trsm. +// diff --git a/frame/ind/oapi/bli_oapi_ind.h b/frame/ind/oapi/bli_oapi_ind.h new file mode 100644 index 000000000..6d2b96b80 --- /dev/null +++ b/frame/ind/oapi/bli_oapi_ind.h @@ -0,0 +1,77 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +// +// Generate object-based interfaces for induced methods that work for +// trmm and trsm (ie: two-operand operations). +// +#undef GENPROT +#define GENPROT( imeth ) \ +\ +void PASTEMAC(gemm,imeth) ( obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(hemm,imeth) ( side_t side, obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(herk,imeth) ( obj_t* alpha, obj_t* a, obj_t* beta, obj_t* c ); \ +void PASTEMAC(her2k,imeth)( obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(symm,imeth) ( side_t side, obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(syrk,imeth) ( obj_t* alpha, obj_t* a, obj_t* beta, obj_t* c ); \ +void PASTEMAC(syr2k,imeth)( obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(trmm3,imeth)( side_t side, obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(trmm,imeth) ( side_t side, obj_t* alpha, obj_t* a, obj_t* b ); \ +void PASTEMAC(trsm,imeth) ( side_t side, obj_t* alpha, obj_t* a, obj_t* b ); + +GENPROT( 4m1 ) +GENPROT( 3m1 ) + + +// +// Generate object-based interfaces for induced methods that do NOT work +// for trmm and trsm (ie: two-operand operations). +// +#undef GENPROT_NO2OP +#define GENPROT_NO2OP( imeth ) \ +\ +void PASTEMAC(gemm,imeth) ( obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(hemm,imeth) ( side_t side, obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(herk,imeth) ( obj_t* alpha, obj_t* a, obj_t* beta, obj_t* c ); \ +void PASTEMAC(her2k,imeth)( obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(symm,imeth) ( side_t side, obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(syrk,imeth) ( obj_t* alpha, obj_t* a, obj_t* beta, obj_t* c ); \ +void PASTEMAC(syr2k,imeth)( obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); \ +void PASTEMAC(trmm3,imeth)( side_t side, obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ); + +GENPROT_NO2OP( 4mh ) +GENPROT_NO2OP( 4mb ) +GENPROT_NO2OP( 3mh ) + diff --git a/frame/ind/query/bli_bsv_query.c b/frame/ind/query/bli_bsv_query.c new file mode 100644 index 000000000..d53dff69c --- /dev/null +++ b/frame/ind/query/bli_bsv_query.c @@ -0,0 +1,157 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + +// 3mh blocksizes +extern blksz_t* gemm3mh_mc; +extern blksz_t* gemm3mh_nc; +extern blksz_t* gemm3mh_kc; +extern blksz_t* gemm3mh_mr; +extern blksz_t* gemm3mh_nr; +extern blksz_t* gemm3mh_kr; + +// 3m1 blocksizes +extern blksz_t* gemm3m1_mc; +extern blksz_t* gemm3m1_nc; +extern blksz_t* gemm3m1_kc; +extern blksz_t* gemm3m1_mr; +extern blksz_t* gemm3m1_nr; +extern blksz_t* gemm3m1_kr; + +// 4mh blocksizes +extern blksz_t* gemm4mh_mc; +extern blksz_t* gemm4mh_nc; +extern blksz_t* gemm4mh_kc; +extern blksz_t* gemm4mh_mr; +extern blksz_t* gemm4mh_nr; +extern blksz_t* gemm4mh_kr; + +// 4m1b blocksizes +extern blksz_t* gemm4mb_mc; +extern blksz_t* gemm4mb_nc; +extern blksz_t* gemm4mb_kc; +extern blksz_t* gemm4mb_mr; +extern blksz_t* gemm4mb_nr; +extern blksz_t* gemm4mb_kr; + +// 4m1a blocksizes +extern blksz_t* gemm4m1_mc; +extern blksz_t* gemm4m1_nc; +extern blksz_t* gemm4m1_kc; +extern blksz_t* gemm4m1_mr; +extern blksz_t* gemm4m1_nr; +extern blksz_t* gemm4m1_kr; + +// Native blocksizes +extern blksz_t* gemm_mc; +extern blksz_t* gemm_nc; +extern blksz_t* gemm_kc; +extern blksz_t* gemm_mr; +extern blksz_t* gemm_nr; +extern blksz_t* gemm_kr; + +// +// NOTE: We have to use the address of the blksz_t*, since the value +// will not yet be set at compile-time (since they are allocated at +// runtime). +// +static blksz_t** bli_bsizes[BLIS_NUM_IND_METHODS][BLIS_NUM_LEVEL3_BLKSZS] = +{ + /* mc/mr nc/nr kc/kr */ +/* 3mh */ { &gemm3mh_mc, &gemm3mh_nc, &gemm3mh_kc, + &gemm3mh_mr, &gemm3mh_nr, &gemm3mh_kr }, +/* 3m1 */ { &gemm3m1_mc, &gemm3m1_nc, &gemm3m1_kc, + &gemm3m1_mr, &gemm3m1_nr, &gemm3m1_kr }, +/* 4mh */ { &gemm4mh_mc, &gemm4mh_nc, &gemm4mh_kc, + &gemm4mh_mr, &gemm4mh_nr, &gemm4mh_kr }, +/* 4mb */ { &gemm4mb_mc, &gemm4mb_nc, &gemm4mb_kc, + &gemm4mb_mr, &gemm4mb_nr, &gemm4mb_kr }, +/* 4m1 */ { &gemm4m1_mc, &gemm4m1_nc, &gemm4m1_kc, + &gemm4m1_mr, &gemm4m1_nr, &gemm4m1_kr }, +/* nat */ { &gemm_mc, &gemm_nc, &gemm_kc, + &gemm_mr, &gemm_nr, &gemm_kr }, +}; + +// ----------------------------------------------------------------------------- + +dim_t bli_bsv_get_avail_blksz_dt( bszid_t bsv, opid_t oper, num_t dt ) +{ + // Query the blksz_t object corresponding to the requested + // blocksize id type and datatype (for the current available + // induced method of the given operation). + blksz_t* b = bli_bsv_get_avail_blksz( bsv, oper, dt ); + + // Return the default blocksize associated with the given datatype. + return bli_blksz_for_type( dt, b ); +} + +// ----------------------------------------------------------------------------- + +dim_t bli_bsv_get_avail_blksz_max_dt( bszid_t bsv, opid_t oper, num_t dt ) +{ + // Query the blksz_t object corresponding to the requested + // blocksize id type and datatype (for the current available + // induced method of the given operation). + blksz_t* b = bli_bsv_get_avail_blksz( bsv, oper, dt ); + + // Return the maximum blocksize associated with the given datatype. + return bli_blksz_max_for_type( dt, b ); +} + +// ----------------------------------------------------------------------------- + +blksz_t* bli_bsv_get_avail_blksz( bszid_t bsv, opid_t oper, num_t dt ) +{ + // Query the current available induced method for the operation + // and datatype given. + ind_t method = bli_ind_oper_find_avail( oper, dt ); + + // Return a pointer to the blksz_t object corresponding to the + // blocksize id type for the current available induced method. + return bli_bsv_get_blksz( bsv, method ); +} + +// ----------------------------------------------------------------------------- + +blksz_t* bli_bsv_get_blksz( bszid_t bsv, ind_t method ) +{ + // Initialize BLIS, if it isn't already initialized. This is + // needed because we have to ensure that the blksz_t objects + // have been created. + bli_init(); + + return *(bli_bsizes[ method ][ bsv ]); +} + diff --git a/frame/3/her2k/3mh/bli_her2k3mh_entry.c b/frame/ind/query/bli_bsv_query.h similarity index 74% rename from frame/3/her2k/3mh/bli_her2k3mh_entry.c rename to frame/ind/query/bli_bsv_query.h index a8ccf0cd6..d944148e9 100644 --- a/frame/3/her2k/3mh/bli_her2k3mh_entry.c +++ b/frame/ind/query/bli_bsv_query.h @@ -32,20 +32,30 @@ */ -#include "blis.h" +#ifndef BLIS_BSV_QUERY_H +#define BLIS_BSV_QUERY_H -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; -void bli_her2k3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) +typedef enum { - bli_her2k_front( alpha, a, b, beta, c, gemm3mh_cntl_ro ); - bli_her2k_front( alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_her2k_front( alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} + BLIS_MC = 0, + BLIS_NC, + BLIS_KC, + BLIS_MR, + BLIS_NR, + BLIS_KR, +} bszid_t; + +#define BLIS_NUM_LEVEL3_BLKSZS 6 + +// ----------------------------------------------------------------------------- + +dim_t bli_bsv_get_avail_blksz_dt( bszid_t bsv, opid_t oper, num_t dt ); +dim_t bli_bsv_get_avail_blksz_max_dt( bszid_t bsv, opid_t oper, num_t dt ); + +blksz_t* bli_bsv_get_avail_blksz( bszid_t bsv, opid_t oper, num_t dt ); +blksz_t* bli_bsv_get_blksz( bszid_t bsv, ind_t method ); + + +#endif diff --git a/frame/ind/query/bli_ind_query.c b/frame/ind/query/bli_ind_query.c new file mode 100644 index 000000000..f94ff60dc --- /dev/null +++ b/frame/ind/query/bli_ind_query.c @@ -0,0 +1,366 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + + +static void* bli_ind_oper_fp[BLIS_NUM_IND_METHODS][BLIS_NUM_LEVEL3_OPS] = +{ + /* gemm hemm herk her2k symm syrk, syr2k trmm3 trmm trsm */ +/* 3mh */ { bli_gemm3mh, bli_hemm3mh, bli_herk3mh, bli_her2k3mh, bli_symm3mh, + bli_syrk3mh, bli_syr2k3mh, bli_trmm33mh, NULL, NULL }, +/* 3m1 */ { bli_gemm3m1, bli_hemm3m1, bli_herk3m1, bli_her2k3m1, bli_symm3m1, + bli_syrk3m1, bli_syr2k3m1, bli_trmm33m1, bli_trmm3m1, bli_trsm3m1 }, +/* 4mh */ { bli_gemm4mh, bli_hemm4mh, bli_herk4mh, bli_her2k4mh, bli_symm4mh, + bli_syrk4mh, bli_syr2k4mh, bli_trmm34mh, NULL, NULL }, +/* 4mb */ { bli_gemm4mb, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL }, +/* 4m1 */ { bli_gemm4m1, bli_hemm4m1, bli_herk4m1, bli_her2k4m1, bli_symm4m1, + bli_syrk4m1, bli_syr2k4m1, bli_trmm34m1, bli_trmm4m1, bli_trsm4m1 }, +/* nat */ { bli_gemm, bli_hemm, bli_herk, bli_her2k, bli_symm, + bli_syrk, bli_syr2k, bli_trmm3, bli_trmm, bli_trsm }, +}; + + +// FGVZ NOTE: +// - still need to cpp-enable default method +// - this will be annoying due to ordering of datatype dimensions in +// bli_ind_oper_st (ie: dt is innermost). +// - alternative: insert call in bli_init() to bli_ind_enable() +// - by default, BLIS_4M1 is passed in. but you could make the precise +// default method user-configurable. + +// +// NOTE: "2" is used instead of BLIS_NUM_FP_TYPES/2. +// +static bool_t bli_ind_oper_st[BLIS_NUM_IND_METHODS][BLIS_NUM_LEVEL3_OPS][2] = +{ + /* gemm hemm herk her2k symm syrk, syr2k trmm3 trmm trsm */ + /* c z */ +/* 3mh */ { {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, + {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE} }, +/* 3m1 */ { {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, + {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE} }, +/* 4mh */ { {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, + {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE} }, +/* 4mb */ { {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, + {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE} }, +/* 4m1 */ { {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, + {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE}, {FALSE,FALSE} }, +/* nat */ { {TRUE,TRUE}, {TRUE,TRUE}, {TRUE,TRUE}, {TRUE,TRUE}, {TRUE,TRUE}, + {TRUE,TRUE}, {TRUE,TRUE}, {TRUE,TRUE}, {TRUE,TRUE}, {TRUE,TRUE} }, +}; + + +static char* bli_ind_impl_str[BLIS_NUM_IND_METHODS] = +{ +/* 3mh */ "3mh", +/* 3m1 */ "3m1", +/* 4mh */ "4mh", +/* 4m1b */ "4m1b", +/* 4m1a */ "4m1a", +/* nat */ "native", +}; + + + +// ----------------------------------------------------------------------------- + +#undef GENFUNC +#define GENFUNC( opname, optype ) \ +\ +bool_t PASTEMAC(opname,ind_has_avail)( num_t dt ) \ +{ \ + return bli_ind_oper_has_avail( optype, dt ); \ +} \ +void* PASTEMAC(opname,ind_get_avail)( num_t dt ) \ +{ \ + return bli_ind_oper_get_avail( optype, dt ); \ +} + +GENFUNC( gemm, BLIS_GEMM ) +GENFUNC( hemm, BLIS_HEMM ) +GENFUNC( herk, BLIS_HERK ) +GENFUNC( her2k, BLIS_HER2K ) +GENFUNC( symm, BLIS_SYMM ) +GENFUNC( syrk, BLIS_SYRK ) +GENFUNC( syr2k, BLIS_SYR2K ) +GENFUNC( trmm3, BLIS_TRMM3 ) +GENFUNC( trmm, BLIS_TRMM ) +GENFUNC( trsm, BLIS_TRSM ) + +// ----------------------------------------------------------------------------- + +bool_t bli_ind_oper_is_impl( opid_t oper, ind_t method ) +{ + // If the operation is not level-3, the method is not implemented, + // UNLESS it is native, in which case it is always implemented. + if ( !bli_opid_is_level3( oper ) ) + { + if ( method == BLIS_NAT ) return TRUE; + else return FALSE; + } + + // If the operation is level-3, look up whether its func_t is NULL. + return ( bli_ind_oper_get_func( oper, method ) != NULL ); +} + +// ----------------------------------------------------------------------------- + +#if 0 +bool_t bli_ind_oper_is_avail( opid_t oper, ind_t method, num_t dt ) +{ + void* func; + bool_t stat; + + // If the datatype is real, it is never available. + if ( !bli_is_complex( dt ) ) return FALSE; + + func = bli_ind_oper_get_func( oper, method ); + stat = bli_ind_oper_get_enable( oper, method, dt ); + + return ( func != NULL && stat == TRUE ); +} +#endif + +// ----------------------------------------------------------------------------- + +bool_t bli_ind_oper_has_avail( opid_t oper, num_t dt ) +{ + ind_t method = bli_ind_oper_find_avail( oper, dt ); + + if ( method == BLIS_NAT ) return FALSE; + else return TRUE; +} + +void* bli_ind_oper_get_avail( opid_t oper, num_t dt ) +{ + ind_t method = bli_ind_oper_find_avail( oper, dt ); + + return bli_ind_oper_get_func( oper, method ); +} + +// ----------------------------------------------------------------------------- + +ind_t bli_ind_oper_find_avail( opid_t oper, num_t dt ) +{ + ind_t im; + + // If the datatype is real, return native execution. + if ( !bli_is_complex( dt ) ) return BLIS_NAT; + + // If the operation is not level-3, return native execution. + if ( !bli_opid_is_level3( oper ) ) return BLIS_NAT; + + // Iterate over all induced methods and search for the first one + // that is available (ie: both implemented and enabled) for the + // current operation and datatype. + for ( im = 0; im < BLIS_NUM_IND_METHODS; ++im ) + { + void* func = bli_ind_oper_get_func( oper, im ); + bool_t stat = bli_ind_oper_get_enable( oper, im, dt ); + + if ( func != NULL && + stat == TRUE ) return im; + } + + // This return statement should never execute since the native index + // should be found even if all induced methods are unavailable. We + // include it simply to avoid a compiler warning. + return BLIS_NAT; +} + +// ----------------------------------------------------------------------------- + +char* bli_ind_oper_get_avail_impl_string( opid_t oper, num_t dt ) +{ + ind_t method = bli_ind_oper_find_avail( oper, dt ); + + return bli_ind_get_impl_string( method ); +} + +// ----------------------------------------------------------------------------- + +void bli_ind_init( void ) +{ + const ind_t method_c = BLIS_4M1A; + const ind_t method_z = BLIS_4M1A; + +#ifdef BLIS_ENABLE_INDUCED_SCOMPLEX + bli_ind_enable_dt( method_c, BLIS_SCOMPLEX ); +#endif +#ifdef BLIS_ENABLE_INDUCED_DCOMPLEX + bli_ind_enable_dt( method_z, BLIS_DCOMPLEX ); +#endif +} + +// ----------------------------------------------------------------------------- + +void bli_ind_enable( ind_t method ) +{ + bli_ind_enable_dt( method, BLIS_SCOMPLEX ); + bli_ind_enable_dt( method, BLIS_DCOMPLEX ); +} + +void bli_ind_disable( ind_t method ) +{ + bli_ind_disable_dt( method, BLIS_SCOMPLEX ); + bli_ind_disable_dt( method, BLIS_DCOMPLEX ); +} + +void bli_ind_disable_all( void ) +{ + bli_ind_disable_all_dt( BLIS_SCOMPLEX ); + bli_ind_disable_all_dt( BLIS_DCOMPLEX ); +} + +// ----------------------------------------------------------------------------- + +void bli_ind_enable_dt( ind_t method, num_t dt ) +{ + if ( !bli_is_complex( dt ) ) return; + + bli_ind_set_enable_dt( method, dt, TRUE ); +} + +void bli_ind_disable_dt( ind_t method, num_t dt ) +{ + if ( !bli_is_complex( dt ) ) return; + + bli_ind_set_enable_dt( method, dt, FALSE ); +} + +void bli_ind_disable_all_dt( num_t dt ) +{ + ind_t im; + + for ( im = 0; im < BLIS_NUM_IND_METHODS; ++im ) + { + // Never disable native execution. + if ( im != BLIS_NAT ) + bli_ind_disable_dt( im, dt ); + } +} + +// ----------------------------------------------------------------------------- + +void bli_ind_set_enable_dt( ind_t method, num_t dt, bool_t status ) +{ + opid_t iop; + + if ( !bli_is_complex( dt ) ) return; + + // Iterate over all level-3 operation ids. + for ( iop = 0; iop < BLIS_NUM_LEVEL3_OPS; ++iop ) + { + bli_ind_oper_set_enable( iop, method, dt, status ); + } +} + +// ----------------------------------------------------------------------------- + +void bli_ind_oper_enable_only( opid_t oper, ind_t method, num_t dt ) +{ + if ( !bli_is_complex( dt ) ) return; + if ( !bli_opid_is_level3( oper ) ) return; + + bli_ind_oper_set_enable_all( oper, dt, FALSE ); + bli_ind_oper_set_enable( oper, method, dt, TRUE ); +} + +void bli_ind_oper_set_enable_all( opid_t oper, num_t dt, bool_t status ) +{ + ind_t im; + + if ( !bli_is_complex( dt ) ) return; + if ( !bli_opid_is_level3( oper ) ) return; + + for ( im = 0; im < BLIS_NUM_IND_METHODS; ++im ) + { + // Native execution should always stay enabled. + if ( im != BLIS_NAT ) + bli_ind_oper_set_enable( oper, im, dt, status ); + } +} + +// ----------------------------------------------------------------------------- + +void bli_ind_oper_set_enable( opid_t oper, ind_t method, num_t dt, bool_t status ) +{ + num_t idt; + + if ( !bli_is_complex( dt ) ) return; + if ( !bli_opid_is_level3( oper ) ) return; + + // Disallow changing status of native execution. + if ( method == BLIS_NAT ) return; + + idt = bli_ind_map_cdt_to_index( dt ); + + bli_ind_oper_st[ method ][ oper ][ idt ] = status; +} + +bool_t bli_ind_oper_get_enable( opid_t oper, ind_t method, num_t dt ) +{ + num_t idt = bli_ind_map_cdt_to_index( dt ); + + return bli_ind_oper_st[ method ][ oper ][ idt ]; +} + +// ----------------------------------------------------------------------------- + +void* bli_ind_oper_get_func( opid_t oper, ind_t method ) +{ + return bli_ind_oper_fp[ method ][ oper ]; +} + +// ----------------------------------------------------------------------------- + +char* bli_ind_get_impl_string( ind_t method ) +{ + return bli_ind_impl_str[ method ]; +} + +// ----------------------------------------------------------------------------- + +num_t bli_ind_map_cdt_to_index( num_t dt ) +{ + // A non-complex datatype should never be passed in. + if ( !bli_is_complex( dt ) ) bli_abort(); + + // Map the complex datatype to a zero-based index. + if ( bli_is_scomplex( dt ) ) return 0; + else /* if ( bli_is_dcomplex( dt ) ) */ return 1; +} + diff --git a/frame/ind/query/bli_ind_query.h b/frame/ind/query/bli_ind_query.h new file mode 100644 index 000000000..2e36f3a9f --- /dev/null +++ b/frame/ind/query/bli_ind_query.h @@ -0,0 +1,133 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef BLIS_IND_QUERY_H +#define BLIS_IND_QUERY_H + + +typedef enum +{ + BLIS_3MH = 0, + BLIS_3M1, + BLIS_4MH, + BLIS_4M1B, + BLIS_4M1A, + BLIS_NAT, +} ind_t; + +#define BLIS_NUM_IND_METHODS 6 + +// ----------------------------------------------------------------------------- + +/* +bool_t bli_gemmind_has_avail( num_t dt ); +bool_t bli_hemmind_has_avail( num_t dt ); +bool_t bli_herkind_has_avail( num_t dt ); +bool_t bli_her2kind_has_avail( num_t dt ); +bool_t bli_symmind_has_avail( num_t dt ); +bool_t bli_syrkind_has_avail( num_t dt ); +bool_t bli_syr2kind_has_avail( num_t dt ); +bool_t bli_trmm3ind_has_avail( num_t dt ); +bool_t bli_trmmind_has_avail( num_t dt ); +bool_t bli_trsmind_has_avail( num_t dt ); + +void* bli_gemmind_get_avail( num_t dt ); +void* bli_hemmind_get_avail( num_t dt ); +void* bli_herkind_get_avail( num_t dt ); +void* bli_her2kind_get_avail( num_t dt ); +void* bli_symmind_get_avail( num_t dt ); +void* bli_syrkind_get_avail( num_t dt ); +void* bli_syr2kind_get_avail( num_t dt ); +void* bli_trmm3ind_get_avail( num_t dt ); +void* bli_trmmind_get_avail( num_t dt ); +void* bli_trsmind_get_avail( num_t dt ); +*/ + +#undef GENPROT +#define GENPROT( opname ) \ +\ +bool_t PASTEMAC(opname,ind_has_avail)( num_t dt ); \ +void* PASTEMAC(opname,ind_get_avail)( num_t dt ); + +GENPROT( gemm ) +GENPROT( hemm ) +GENPROT( herk ) +GENPROT( her2k ) +GENPROT( symm ) +GENPROT( syrk ) +GENPROT( syr2k ) +GENPROT( trmm3 ) +GENPROT( trmm ) +GENPROT( trsm ) + +// ----------------------------------------------------------------------------- + +bool_t bli_ind_oper_is_impl( opid_t oper, ind_t method ); + +//bool_t bli_ind_oper_is_avail( opid_t oper, ind_t method, num_t dt ); + +bool_t bli_ind_oper_has_avail( opid_t oper, num_t dt ); +void* bli_ind_oper_get_avail( opid_t oper, num_t dt ); + +ind_t bli_ind_oper_find_avail( opid_t oper, num_t dt ); + +char* bli_ind_oper_get_avail_impl_string( opid_t oper, num_t dt ); + +void bli_ind_init( void ); + +void bli_ind_enable( ind_t method ); +void bli_ind_disable( ind_t method ); +void bli_ind_disable_all( void ); + +void bli_ind_enable_dt( ind_t method, num_t dt ); +void bli_ind_disable_dt( ind_t method, num_t dt ); +void bli_ind_disable_all_dt( num_t dt ); + +void bli_ind_set_enable_dt( ind_t method, num_t dt, bool_t status ); + +void bli_ind_oper_enable_only( opid_t oper, ind_t method, num_t dt ); +void bli_ind_oper_set_enable_all( opid_t oper, num_t dt, bool_t status ); + +void bli_ind_oper_set_enable( opid_t oper, ind_t method, num_t dt, bool_t status ); +bool_t bli_ind_oper_get_enable( opid_t oper, ind_t method, num_t dt ); + +void* bli_ind_oper_get_func( opid_t oper, ind_t method ); + +char* bli_ind_get_impl_string( ind_t method ); + +num_t bli_ind_map_cdt_to_index( num_t dt ); + + +#endif + diff --git a/frame/ind/query/bli_ukr_query.c b/frame/ind/query/bli_ukr_query.c new file mode 100644 index 000000000..0022eb516 --- /dev/null +++ b/frame/ind/query/bli_ukr_query.c @@ -0,0 +1,216 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + + +// 3mh micro-kernels +extern func_t* gemm3mh_ukrs; + +// 3m1 micro-kernels +extern func_t* gemm3m1_ukrs; +extern func_t* gemmtrsm3m1_l_ukrs; +extern func_t* gemmtrsm3m1_u_ukrs; +extern func_t* trsm3m1_l_ukrs; +extern func_t* trsm3m1_u_ukrs; + +// 4mh micro-kernels +extern func_t* gemm4mh_ukrs; + +// 4m1b micro-kernels +extern func_t* gemm4mb_ukrs; + +// 4m1a micro-kernels +extern func_t* gemm4m1_ukrs; +extern func_t* gemmtrsm4m1_l_ukrs; +extern func_t* gemmtrsm4m1_u_ukrs; +extern func_t* trsm4m1_l_ukrs; +extern func_t* trsm4m1_u_ukrs; + +// Native micro-kernels +extern func_t* gemm_ukrs; +extern func_t* gemmtrsm_l_ukrs; +extern func_t* gemmtrsm_u_ukrs; +extern func_t* trsm_l_ukrs; +extern func_t* trsm_u_ukrs; + +// Reference micro-kernels +extern func_t* gemm_ref_ukrs; +extern func_t* gemmtrsm_l_ref_ukrs; +extern func_t* gemmtrsm_u_ref_ukrs; +extern func_t* trsm_l_ref_ukrs; +extern func_t* trsm_u_ref_ukrs; + +// +// NOTE: We have to use the address of the func_t*, since the value +// will not yet be set at compile-time (since they are allocated at +// runtime). +// +static func_t** bli_ukrs[BLIS_NUM_IND_METHODS][BLIS_NUM_LEVEL3_UKRS] = +{ + /* gemm gemmtrsm_l gemmtrsm_u trsm_l trsm_u */ +/* 3mh */ { &gemm3mh_ukrs, NULL, NULL, + NULL, NULL, }, +/* 3m1 */ { &gemm3m1_ukrs, &gemmtrsm3m1_l_ukrs, &gemmtrsm3m1_u_ukrs, + &trsm3m1_l_ukrs, &trsm3m1_u_ukrs, }, +/* 4mh */ { &gemm4mh_ukrs, NULL, NULL, + NULL, NULL, }, +/* 4mb */ { &gemm4mb_ukrs, NULL, NULL, + NULL, NULL, }, +/* 4m1 */ { &gemm4m1_ukrs, &gemmtrsm4m1_l_ukrs, &gemmtrsm4m1_u_ukrs, + &trsm4m1_l_ukrs, &trsm4m1_u_ukrs, }, +/* nat */ { &gemm_ukrs, &gemmtrsm_l_ukrs, &gemmtrsm_u_ukrs, + &trsm_l_ukrs, &trsm_u_ukrs, }, +}; + +static func_t** bli_ref_ukrs[BLIS_NUM_LEVEL3_UKRS] = +{ + &gemm_ref_ukrs, + &gemmtrsm_l_ref_ukrs, + &gemmtrsm_u_ref_ukrs, + &trsm_l_ref_ukrs, + &trsm_u_ref_ukrs, +}; + +static char* bli_ukr_impl_str[BLIS_NUM_UKR_IMPL_TYPES] = +{ + "refrnce", + "virtual", + "optimzd", + "notappl", +}; + +// ----------------------------------------------------------------------------- + +char* bli_ukr_impl_string( l3ukr_t ukr, ind_t method, num_t dt ) +{ + func_t* p; + kimpl_t ki; + +//printf( "ukr method dt = %u %u %u\n", ukr, method, dt ); + // Look up the ukr func_t for the given ukr type and method. + p = bli_ukr_get_funcs( ukr, method ); + + // Check whether the ukrs func_t is NULL for the given ukr type. + // If the queried ukr func_t is NULL, return the string for not + // applicable. Otherwise, query the ukernel implementation type + // using the method provided and return the associated string. + if ( p == NULL ) ki = BLIS_NOTAPPLIC_UKERNEL; + else ki = bli_ukr_impl_type( ukr, method, dt ); + + return bli_ukr_impl_str[ ki ]; +} + +// ----------------------------------------------------------------------------- + +char* bli_ukr_avail_impl_string( l3ukr_t ukr, num_t dt ) +{ + opid_t oper; + ind_t method; + kimpl_t ki; + + // We need to decide which operation we will use to query the + // current available induced method. If the ukr type given is + // BLIS_GEMM_UKR, we use gemm. Otherwise, we use trsm (since + // the four other defined ukr types are trsm-related). + if ( ukr == BLIS_GEMM_UKR ) oper = BLIS_GEMM; + else oper = BLIS_TRSM; + + // Query the current available induced method using the + // chosen operation id type. + method = bli_ind_oper_find_avail( oper, dt ); + + // Query the ukernel implementation type using the current + // available method. + ki = bli_ukr_impl_type( ukr, method, dt ); + + return bli_ukr_impl_str[ ki ]; +} + +// ----------------------------------------------------------------------------- + +kimpl_t bli_ukr_impl_type( l3ukr_t ukr, ind_t method, num_t dt ) +{ + // If the current available induced method is not native, it + // must be virtual. + if ( method != BLIS_NAT ) return BLIS_VIRTUAL_UKERNEL; + else + { + // If the current available induced method for the gemm + // operation is native, then it might be reference or + // optimized. To determine which, we compare the + // datatype-specific function pointer within the ukrs + // object corresponding to the current available induced + // method to the typed function pointer within the known + // reference ukrs object. + func_t* funcs = bli_ukr_get_funcs( ukr, method ); + void* p = bli_func_obj_query( dt, funcs ); + func_t* ref_funcs = bli_ukr_get_ref_funcs( ukr ); + void* ref_p = bli_func_obj_query( dt, ref_funcs ); + + if ( p == ref_p ) return BLIS_REFERENCE_UKERNEL; + else return BLIS_OPTIMIZED_UKERNEL; + } +} + +// ----------------------------------------------------------------------------- + +func_t* bli_ukr_get_funcs( l3ukr_t ukr, ind_t method ) +{ + func_t** p = bli_ukrs[ method ][ ukr ]; + + // Initialize BLIS, if it isn't already initialized. This is + // needed because we have to ensure that the ukr func_t objects + // have been created (and thus contain valid function pointers). + bli_init(); + + // Avoid dereferencing NULL pointers. + if ( p == NULL ) return NULL; + else return *p; +} + +func_t* bli_ukr_get_ref_funcs( l3ukr_t ukr ) +{ + func_t** p = bli_ref_ukrs[ ukr ]; + + // Initialize BLIS, if it isn't already initialized. This is + // needed because we have to ensure that the ukr func_t objects + // have been created (and thus contain valid function pointers). + bli_init(); + + // Avoid dereferencing NULL pointers. + if ( p == NULL ) return NULL; + else return *p; +} + diff --git a/frame/3/syr2k/3mh/bli_syr2k3mh_entry.c b/frame/ind/query/bli_ukr_query.h similarity index 68% rename from frame/3/syr2k/3mh/bli_syr2k3mh_entry.c rename to frame/ind/query/bli_ukr_query.h index ab809361a..f10016a0c 100644 --- a/frame/3/syr2k/3mh/bli_syr2k3mh_entry.c +++ b/frame/ind/query/bli_ukr_query.h @@ -32,20 +32,40 @@ */ -#include "blis.h" +#ifndef BLIS_UKR_QUERY_H +#define BLIS_UKR_QUERY_H -extern gemm_t* gemm3mh_cntl_ro; -extern gemm_t* gemm3mh_cntl_io; -extern gemm_t* gemm3mh_cntl_rpi; -void bli_syr2k3mh_entry( obj_t* alpha, - obj_t* a, - obj_t* b, - obj_t* beta, - obj_t* c ) +typedef enum { - bli_syr2k_front( alpha, a, b, beta, c, gemm3mh_cntl_ro ); - bli_syr2k_front( alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_io ); - bli_syr2k_front( alpha, a, b, &BLIS_ONE, c, gemm3mh_cntl_rpi ); -} + BLIS_GEMM_UKR = 0, + BLIS_GEMMTRSM_L_UKR, + BLIS_GEMMTRSM_U_UKR, + BLIS_TRSM_L_UKR, + BLIS_TRSM_U_UKR, +} l3ukr_t; + +#define BLIS_NUM_LEVEL3_UKRS 5 + +typedef enum +{ + BLIS_REFERENCE_UKERNEL = 0, + BLIS_VIRTUAL_UKERNEL, + BLIS_OPTIMIZED_UKERNEL, + BLIS_NOTAPPLIC_UKERNEL, +} kimpl_t; + +#define BLIS_NUM_UKR_IMPL_TYPES 4 + +// ----------------------------------------------------------------------------- + +char* bli_ukr_impl_string( l3ukr_t ukr, ind_t method, num_t dt ); +char* bli_ukr_avail_impl_string( l3ukr_t ukr, num_t dt ); +kimpl_t bli_ukr_impl_type( l3ukr_t ukr, ind_t method, num_t dt ); + +func_t* bli_ukr_get_funcs( l3ukr_t ukr, ind_t method ); +func_t* bli_ukr_get_ref_funcs( l3ukr_t ukr ); + + +#endif diff --git a/frame/ind/tapi/bli_tapi_ind.c b/frame/ind/tapi/bli_tapi_ind.c new file mode 100644 index 000000000..906aef386 --- /dev/null +++ b/frame/ind/tapi/bli_tapi_ind.c @@ -0,0 +1,554 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "blis.h" + + +// -- gemm --------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + trans_t transa, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo, betao, co; \ +\ + dim_t m_a, n_a; \ + dim_t m_b, n_b; \ +\ + bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ + bli_set_dims_with_trans( transb, k, n, m_b, n_b ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ + bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_conjtrans( transa, ao ); \ + bli_obj_set_conjtrans( transb, bo ); \ +\ + PASTEMAC0(opname)( &alphao, \ + &ao, \ + &bo, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNC_BASIC0( gemm4mh ) +INSERT_GENTFUNC_BASIC0( gemm4mb ) +INSERT_GENTFUNC_BASIC0( gemm4m1 ) +INSERT_GENTFUNC_BASIC0( gemm3mh ) +INSERT_GENTFUNC_BASIC0( gemm3m1 ) + + +// -- hemm --------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + conj_t conja, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo, betao, co; \ +\ + dim_t mn_a; \ + dim_t m_b, n_b; \ +\ + bli_set_dim_with_side( side, m, n, mn_a ); \ + bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ + bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_uplo( uploa, ao ); \ + bli_obj_set_conj( conja, ao ); \ + bli_obj_set_conjtrans( transb, bo ); \ +\ + bli_obj_set_struc( BLIS_HERMITIAN, ao ); \ +\ + PASTEMAC0(opname)( side, \ + &alphao, \ + &ao, \ + &bo, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNC_BASIC0( hemm4mh ) +INSERT_GENTFUNC_BASIC0( hemm4m1 ) +INSERT_GENTFUNC_BASIC0( hemm3mh ) +INSERT_GENTFUNC_BASIC0( hemm3m1 ) + + +// -- herk --------------------------------------------------------------------- + +#undef GENTFUNCR +#define GENTFUNCR( ctype, ctype_r, ch, chr, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + dim_t m, \ + dim_t k, \ + ctype_r* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype_r* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt_r = PASTEMAC(chr,type); \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, betao, co; \ +\ + dim_t m_a, n_a; \ +\ + bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt_r, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_uplo( uploc, co ); \ + bli_obj_set_conjtrans( transa, ao ); \ +\ + bli_obj_set_struc( BLIS_HERMITIAN, co ); \ +\ + PASTEMAC0(opname)( &alphao, \ + &ao, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNCR_BASIC0( herk4mh ) +INSERT_GENTFUNCR_BASIC0( herk4m1 ) +INSERT_GENTFUNCR_BASIC0( herk3mh ) +INSERT_GENTFUNCR_BASIC0( herk3m1 ) + + +// -- her2k -------------------------------------------------------------------- + +#undef GENTFUNCR +#define GENTFUNCR( ctype, ctype_r, ch, chr, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + trans_t transb, \ + dim_t m, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype_r* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt_r = PASTEMAC(chr,type); \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo, betao, co; \ +\ + dim_t m_a, n_a; \ + dim_t m_b, n_b; \ +\ + bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ + bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt_r, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ + bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_uplo( uploc, co ); \ + bli_obj_set_conjtrans( transa, ao ); \ + bli_obj_set_conjtrans( transb, bo ); \ +\ + bli_obj_set_struc( BLIS_HERMITIAN, co ); \ +\ + PASTEMAC0(opname)( &alphao, \ + &ao, \ + &bo, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNCR_BASIC0( her2k4mh ) +INSERT_GENTFUNCR_BASIC0( her2k4m1 ) +INSERT_GENTFUNCR_BASIC0( her2k3mh ) +INSERT_GENTFUNCR_BASIC0( her2k3m1 ) + + +// -- symm --------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + conj_t conja, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo, betao, co; \ +\ + dim_t mn_a; \ + dim_t m_b, n_b; \ +\ + bli_set_dim_with_side( side, m, n, mn_a ); \ + bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ + bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_uplo( uploa, ao ); \ + bli_obj_set_conj( conja, ao ); \ + bli_obj_set_conjtrans( transb, bo ); \ +\ + bli_obj_set_struc( BLIS_SYMMETRIC, ao ); \ +\ + PASTEMAC0(opname)( side, \ + &alphao, \ + &ao, \ + &bo, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNC_BASIC0( symm4mh ) +INSERT_GENTFUNC_BASIC0( symm4m1 ) +INSERT_GENTFUNC_BASIC0( symm3mh ) +INSERT_GENTFUNC_BASIC0( symm3m1 ) + + +// -- syrk --------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + dim_t m, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, betao, co; \ +\ + dim_t m_a, n_a; \ +\ + bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_uplo( uploc, co ); \ + bli_obj_set_conjtrans( transa, ao ); \ +\ + bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ +\ + PASTEMAC0(opname)( &alphao, \ + &ao, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNC_BASIC0( syrk4mh ) +INSERT_GENTFUNC_BASIC0( syrk4m1 ) +INSERT_GENTFUNC_BASIC0( syrk3mh ) +INSERT_GENTFUNC_BASIC0( syrk3m1 ) + + +// -- syr2k -------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + trans_t transb, \ + dim_t m, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo, betao, co; \ +\ + dim_t m_a, n_a; \ + dim_t m_b, n_b; \ +\ + bli_set_dims_with_trans( transa, m, k, m_a, n_a ); \ + bli_set_dims_with_trans( transb, m, k, m_b, n_b ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, m_a, n_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ + bli_obj_create_with_attached_buffer( dt, m, m, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_uplo( uploc, co ); \ + bli_obj_set_conjtrans( transa, ao ); \ + bli_obj_set_conjtrans( transb, bo ); \ +\ + bli_obj_set_struc( BLIS_SYMMETRIC, co ); \ +\ + PASTEMAC0(opname)( &alphao, \ + &ao, \ + &bo, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNC_BASIC0( syr2k4mh ) +INSERT_GENTFUNC_BASIC0( syr2k4m1 ) +INSERT_GENTFUNC_BASIC0( syr2k3mh ) +INSERT_GENTFUNC_BASIC0( syr2k3m1 ) + + +// -- trmm3 -------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + trans_t transa, \ + diag_t diaga, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo, betao, co; \ +\ + dim_t mn_a; \ + dim_t m_b, n_b; \ +\ + bli_set_dim_with_side( side, m, n, mn_a ); \ + bli_set_dims_with_trans( transb, m, n, m_b, n_b ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ + bli_obj_create_1x1_with_attached_buffer( dt, beta, &betao ); \ +\ + bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m_b, n_b, b, rs_b, cs_b, &bo ); \ + bli_obj_create_with_attached_buffer( dt, m, n, c, rs_c, cs_c, &co ); \ +\ + bli_obj_set_uplo( uploa, ao ); \ + bli_obj_set_diag( diaga, ao ); \ + bli_obj_set_conjtrans( transa, ao ); \ + bli_obj_set_conjtrans( transb, bo ); \ +\ + bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ +\ + PASTEMAC0(opname)( side, \ + &alphao, \ + &ao, \ + &bo, \ + &betao, \ + &co ); \ +} + +INSERT_GENTFUNC_BASIC0( trmm34mh ) +INSERT_GENTFUNC_BASIC0( trmm34m1 ) +INSERT_GENTFUNC_BASIC0( trmm33mh ) +INSERT_GENTFUNC_BASIC0( trmm33m1 ) + + +// -- trmm --------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + trans_t transa, \ + diag_t diaga, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo; \ +\ + dim_t mn_a; \ +\ + bli_set_dim_with_side( side, m, n, mn_a ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ +\ + bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m, n, b, rs_b, cs_b, &bo ); \ +\ + bli_obj_set_uplo( uploa, ao ); \ + bli_obj_set_diag( diaga, ao ); \ + bli_obj_set_conjtrans( transa, ao ); \ +\ + bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ +\ + PASTEMAC0(opname)( side, \ + &alphao, \ + &ao, \ + &bo ); \ +} + +INSERT_GENTFUNC_BASIC0( trmm4m1 ) +INSERT_GENTFUNC_BASIC0( trmm3m1 ) + + +// -- trsm --------------------------------------------------------------------- + +#undef GENTFUNC +#define GENTFUNC( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + trans_t transa, \ + diag_t diaga, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b \ + ) \ +{ \ + const num_t dt = PASTEMAC(ch,type); \ +\ + obj_t alphao, ao, bo; \ +\ + dim_t mn_a; \ +\ + bli_set_dim_with_side( side, m, n, mn_a ); \ +\ + bli_obj_create_1x1_with_attached_buffer( dt, alpha, &alphao ); \ +\ + bli_obj_create_with_attached_buffer( dt, mn_a, mn_a, a, rs_a, cs_a, &ao ); \ + bli_obj_create_with_attached_buffer( dt, m, n, b, rs_b, cs_b, &bo ); \ +\ + bli_obj_set_uplo( uploa, ao ); \ + bli_obj_set_diag( diaga, ao ); \ + bli_obj_set_conjtrans( transa, ao ); \ +\ + bli_obj_set_struc( BLIS_TRIANGULAR, ao ); \ +\ + PASTEMAC0(opname)( side, \ + &alphao, \ + &ao, \ + &bo ); \ +} + +INSERT_GENTFUNC_BASIC0( trsm4m1 ) +INSERT_GENTFUNC_BASIC0( trsm3m1 ) + diff --git a/frame/ind/tapi/bli_tapi_ind.h b/frame/ind/tapi/bli_tapi_ind.h new file mode 100644 index 000000000..760ad2177 --- /dev/null +++ b/frame/ind/tapi/bli_tapi_ind.h @@ -0,0 +1,249 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas at Austin nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + trans_t transa, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROT_BASIC( gemm4mh ) +INSERT_GENTPROT_BASIC( gemm4mb ) +INSERT_GENTPROT_BASIC( gemm4m1 ) +INSERT_GENTPROT_BASIC( gemm3mh ) +INSERT_GENTPROT_BASIC( gemm3m1 ) + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + conj_t conja, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROT_BASIC( hemm4mh ) +INSERT_GENTPROT_BASIC( hemm4m1 ) +INSERT_GENTPROT_BASIC( hemm3mh ) +INSERT_GENTPROT_BASIC( hemm3m1 ) + + +#undef GENTPROTR +#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + trans_t transb, \ + dim_t m, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype_r* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROTR_BASIC( her2k4mh ) +INSERT_GENTPROTR_BASIC( her2k4m1 ) +INSERT_GENTPROTR_BASIC( her2k3mh ) +INSERT_GENTPROTR_BASIC( her2k3m1 ) + + +#undef GENTPROTR +#define GENTPROTR( ctype, ctype_r, ch, chr, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + dim_t m, \ + dim_t k, \ + ctype_r* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype_r* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROTR_BASIC( herk4mh ) +INSERT_GENTPROTR_BASIC( herk4m1 ) +INSERT_GENTPROTR_BASIC( herk3mh ) +INSERT_GENTPROTR_BASIC( herk3m1 ) + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + conj_t conja, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROT_BASIC( symm4mh ) +INSERT_GENTPROT_BASIC( symm4m1 ) +INSERT_GENTPROT_BASIC( symm3mh ) +INSERT_GENTPROT_BASIC( symm3m1 ) + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + trans_t transb, \ + dim_t m, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROT_BASIC( syr2k4mh ) +INSERT_GENTPROT_BASIC( syr2k4m1 ) +INSERT_GENTPROT_BASIC( syr2k3mh ) +INSERT_GENTPROT_BASIC( syr2k3m1 ) + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + uplo_t uploc, \ + trans_t transa, \ + dim_t m, \ + dim_t k, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROT_BASIC( syrk4mh ) +INSERT_GENTPROT_BASIC( syrk4m1 ) +INSERT_GENTPROT_BASIC( syrk3mh ) +INSERT_GENTPROT_BASIC( syrk3m1 ) + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + trans_t transa, \ + diag_t diaga, \ + trans_t transb, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b, \ + ctype* beta, \ + ctype* c, inc_t rs_c, inc_t cs_c \ + ); + +INSERT_GENTPROT_BASIC( trmm34mh ) +INSERT_GENTPROT_BASIC( trmm34m1 ) +INSERT_GENTPROT_BASIC( trmm33mh ) +INSERT_GENTPROT_BASIC( trmm33m1 ) + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + trans_t transa, \ + diag_t diaga, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b \ + ); + +INSERT_GENTPROT_BASIC( trmm4m1 ) +INSERT_GENTPROT_BASIC( trmm3m1 ) + + +#undef GENTPROT +#define GENTPROT( ctype, ch, opname ) \ +\ +void PASTEMAC(ch,opname)( \ + side_t side, \ + uplo_t uploa, \ + trans_t transa, \ + diag_t diaga, \ + dim_t m, \ + dim_t n, \ + ctype* alpha, \ + ctype* a, inc_t rs_a, inc_t cs_a, \ + ctype* b, inc_t rs_b, inc_t cs_b \ + ); + +INSERT_GENTPROT_BASIC( trsm4m1 ) +INSERT_GENTPROT_BASIC( trsm3m1 ) + diff --git a/frame/3/gemm/3m1/ukernels/bli_gemm3m1_ukr_ref.c b/frame/ind/ukernels/gemm/bli_gemm3m1_ukr_ref.c similarity index 100% rename from frame/3/gemm/3m1/ukernels/bli_gemm3m1_ukr_ref.c rename to frame/ind/ukernels/gemm/bli_gemm3m1_ukr_ref.c diff --git a/frame/3/gemm/3mh/ukernels/bli_gemm3mh_ukr_ref.c b/frame/ind/ukernels/gemm/bli_gemm3mh_ukr_ref.c similarity index 100% rename from frame/3/gemm/3mh/ukernels/bli_gemm3mh_ukr_ref.c rename to frame/ind/ukernels/gemm/bli_gemm3mh_ukr_ref.c diff --git a/frame/3/gemm/4m1/ukernels/bli_gemm4m1_ukr_ref.c b/frame/ind/ukernels/gemm/bli_gemm4m1_ukr_ref.c similarity index 100% rename from frame/3/gemm/4m1/ukernels/bli_gemm4m1_ukr_ref.c rename to frame/ind/ukernels/gemm/bli_gemm4m1_ukr_ref.c diff --git a/frame/3/gemm/4mb/ukernels/bli_gemm4mb_ukr_ref.c b/frame/ind/ukernels/gemm/bli_gemm4mb_ukr_ref.c similarity index 100% rename from frame/3/gemm/4mb/ukernels/bli_gemm4mb_ukr_ref.c rename to frame/ind/ukernels/gemm/bli_gemm4mb_ukr_ref.c diff --git a/frame/3/gemm/4mh/ukernels/bli_gemm4mh_ukr_ref.c b/frame/ind/ukernels/gemm/bli_gemm4mh_ukr_ref.c similarity index 100% rename from frame/3/gemm/4mh/ukernels/bli_gemm4mh_ukr_ref.c rename to frame/ind/ukernels/gemm/bli_gemm4mh_ukr_ref.c diff --git a/frame/3/gemm/4m1/ukernels/bli_gemm4m1_ukr_ref.h b/frame/ind/ukernels/gemm/bli_gemmind_ukr_ref.h similarity index 92% rename from frame/3/gemm/4m1/ukernels/bli_gemm4m1_ukr_ref.h rename to frame/ind/ukernels/gemm/bli_gemmind_ukr_ref.h index 28be6f7f9..8b1bdb823 100644 --- a/frame/3/gemm/4m1/ukernels/bli_gemm4m1_ukr_ref.h +++ b/frame/ind/ukernels/gemm/bli_gemmind_ukr_ref.h @@ -46,5 +46,9 @@ void PASTEMAC(ch,varname)( \ auxinfo_t* data \ ); +INSERT_GENTPROTCO_BASIC( gemm4mh_ukr_ref ) +INSERT_GENTPROTCO_BASIC( gemm4mb_ukr_ref ) INSERT_GENTPROTCO_BASIC( gemm4m1_ukr_ref ) +INSERT_GENTPROTCO_BASIC( gemm3mh_ukr_ref ) +INSERT_GENTPROTCO_BASIC( gemm3m1_ukr_ref ) diff --git a/frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_l_ukr_ref.c b/frame/ind/ukernels/trsm/bli_gemmtrsm3m1_l_ukr_ref.c similarity index 100% rename from frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_l_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_gemmtrsm3m1_l_ukr_ref.c diff --git a/frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_u_ukr_ref.c b/frame/ind/ukernels/trsm/bli_gemmtrsm3m1_u_ukr_ref.c similarity index 100% rename from frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_u_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_gemmtrsm3m1_u_ukr_ref.c diff --git a/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_l_ukr_ref.c b/frame/ind/ukernels/trsm/bli_gemmtrsm4m1_l_ukr_ref.c similarity index 100% rename from frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_l_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_gemmtrsm4m1_l_ukr_ref.c diff --git a/frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_u_ukr_ref.c b/frame/ind/ukernels/trsm/bli_gemmtrsm4m1_u_ukr_ref.c similarity index 100% rename from frame/3/trsm/4m1/ukernels/bli_gemmtrsm4m1_u_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_gemmtrsm4m1_u_ukr_ref.c diff --git a/frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_l_ukr_ref.h b/frame/ind/ukernels/trsm/bli_gemmtrsmind_x_ukr_ref.h similarity index 89% rename from frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_l_ukr_ref.h rename to frame/ind/ukernels/trsm/bli_gemmtrsmind_x_ukr_ref.h index c72c7410c..d49ac5e01 100644 --- a/frame/3/trsm/3m1/ukernels/bli_gemmtrsm3m1_l_ukr_ref.h +++ b/frame/ind/ukernels/trsm/bli_gemmtrsmind_x_ukr_ref.h @@ -39,13 +39,17 @@ void PASTEMAC(ch,varname)( \ dim_t k, \ ctype* restrict alpha, \ - ctype* restrict a10, \ + ctype* restrict a1x, \ ctype* restrict a11, \ - ctype* restrict b01, \ + ctype* restrict bx1, \ ctype* restrict b11, \ ctype* restrict c11, inc_t rs_c, inc_t cs_c, \ auxinfo_t* data \ ); -INSERT_GENTPROTCO_BASIC( gemmtrsm3m1_l_ukr_ref ) +INSERT_GENTPROTCO_BASIC( gemmtrsm4m1_l_ukr_ref ) +INSERT_GENTPROTCO_BASIC( gemmtrsm4m1_u_ukr_ref ) + +INSERT_GENTPROTCO_BASIC( gemmtrsm3m1_l_ukr_ref ) +INSERT_GENTPROTCO_BASIC( gemmtrsm3m1_u_ukr_ref ) diff --git a/frame/3/trsm/3m1/ukernels/bli_trsm3m1_l_ukr_ref.c b/frame/ind/ukernels/trsm/bli_trsm3m1_l_ukr_ref.c similarity index 100% rename from frame/3/trsm/3m1/ukernels/bli_trsm3m1_l_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_trsm3m1_l_ukr_ref.c diff --git a/frame/3/trsm/3m1/ukernels/bli_trsm3m1_u_ukr_ref.c b/frame/ind/ukernels/trsm/bli_trsm3m1_u_ukr_ref.c similarity index 100% rename from frame/3/trsm/3m1/ukernels/bli_trsm3m1_u_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_trsm3m1_u_ukr_ref.c diff --git a/frame/3/trsm/4m1/ukernels/bli_trsm4m1_l_ukr_ref.c b/frame/ind/ukernels/trsm/bli_trsm4m1_l_ukr_ref.c similarity index 100% rename from frame/3/trsm/4m1/ukernels/bli_trsm4m1_l_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_trsm4m1_l_ukr_ref.c diff --git a/frame/3/trsm/4m1/ukernels/bli_trsm4m1_u_ukr_ref.c b/frame/ind/ukernels/trsm/bli_trsm4m1_u_ukr_ref.c similarity index 100% rename from frame/3/trsm/4m1/ukernels/bli_trsm4m1_u_ukr_ref.c rename to frame/ind/ukernels/trsm/bli_trsm4m1_u_ukr_ref.c diff --git a/frame/3/trsm/3m1/ukernels/bli_trsm3m1_l_ukr_ref.h b/frame/ind/ukernels/trsm/bli_trsmind_x_ukr_ref.h similarity index 93% rename from frame/3/trsm/3m1/ukernels/bli_trsm3m1_l_ukr_ref.h rename to frame/ind/ukernels/trsm/bli_trsmind_x_ukr_ref.h index 3de325b94..1335f0961 100644 --- a/frame/3/trsm/3m1/ukernels/bli_trsm3m1_l_ukr_ref.h +++ b/frame/ind/ukernels/trsm/bli_trsmind_x_ukr_ref.h @@ -43,5 +43,9 @@ void PASTEMAC(ch,varname)( \ auxinfo_t* data \ ); -INSERT_GENTPROTCO_BASIC( trsm3m1_l_ukr_ref ) +INSERT_GENTPROTCO_BASIC( trsm4m1_l_ukr_ref ) +INSERT_GENTPROTCO_BASIC( trsm4m1_u_ukr_ref ) + +INSERT_GENTPROTCO_BASIC( trsm3m1_l_ukr_ref ) +INSERT_GENTPROTCO_BASIC( trsm3m1_u_ukr_ref ) diff --git a/testsuite/input.general b/testsuite/input.general index f409ba843..89cbd1695 100644 --- a/testsuite/input.general +++ b/testsuite/input.general @@ -23,11 +23,12 @@ sdcz # Datatype(s) to test: 100 # Problem size: first to test 400 # Problem size: maximum to test 100 # Problem size: increment between experiments - # Complex level-3 implementations -0 # 3mh ('1' = enable; '0' = disable) -0 # 3m1 ('1' = enable; '0' = disable) -0 # 4mh ('1' = enable; '0' = disable) -1 # 4m1 ('1' = enable; '0' = disable) + # Complex level-3 implementations to test +1 # 3mh ('1' = enable; '0' = disable) +1 # 3m1 ('1' = enable; '0' = disable) +1 # 4mh ('1' = enable; '0' = disable) +1 # 4m1b ('1' = enable; '0' = disable) +1 # 4m1a ('1' = enable; '0' = disable) 1 # Error-checking level: # '0' = disable error checking; '1' = full error checking i # Reaction to test failure: diff --git a/testsuite/input.operations b/testsuite/input.operations index db0297ab8..34ceb6922 100644 --- a/testsuite/input.operations +++ b/testsuite/input.operations @@ -334,7 +334,7 @@ 1 # trmm3 1 # test sequential front-end -1 -1 # dimensions: m n -????? # parameters: side uploa transa diaga transb +????n # parameters: side uploa transa diaga transb 1 # trsm 1 # test sequential front-end diff --git a/testsuite/src/test_libblis.c b/testsuite/src/test_libblis.c index d8cdf44cc..2e49f50f6 100644 --- a/testsuite/src/test_libblis.c +++ b/testsuite/src/test_libblis.c @@ -215,66 +215,66 @@ void libblis_test_read_ops_file( char* input_filename, test_ops_t* ops ) libblis_test_read_section_override( ops, input_stream, &(ops->l3_over) ); // Utility operations - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 0, &(ops->randv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 0, &(ops->randm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 0, &(ops->randv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 0, &(ops->randm) ); // Level-1v - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 1, &(ops->addv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 1, &(ops->axpyv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 1, &(ops->copyv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 2, &(ops->dotv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 2, &(ops->dotxv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 0, &(ops->normfv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 1, &(ops->scalv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 1, &(ops->scal2v) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 0, &(ops->setv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 1, &(ops->subv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 1, &(ops->addv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 1, &(ops->axpyv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 1, &(ops->copyv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 2, &(ops->dotv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 2, &(ops->dotxv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 0, &(ops->normfv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 1, &(ops->scalv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 1, &(ops->scal2v) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 0, &(ops->setv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 1, &(ops->subv) ); // Level-1m - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 1, &(ops->addm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 1, &(ops->axpym) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 1, &(ops->copym) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 0, &(ops->normfm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 1, &(ops->scalm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 1, &(ops->scal2m) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 0, &(ops->setm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 1, &(ops->subm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 1, &(ops->addm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 1, &(ops->axpym) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 1, &(ops->copym) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 0, &(ops->normfm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 1, &(ops->scalm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 1, &(ops->scal2m) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 0, &(ops->setm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 1, &(ops->subm) ); // Level-1f - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 2, &(ops->axpy2v) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 3, &(ops->dotaxpyv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MF, 2, &(ops->axpyf) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MF, 2, &(ops->dotxf) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MF, 4, &(ops->dotxaxpyf) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 2, &(ops->axpy2v) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 3, &(ops->dotaxpyv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MF, 2, &(ops->axpyf) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MF, 2, &(ops->dotxf) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MF, 4, &(ops->dotxaxpyf) ); // Level-2 - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 2, &(ops->gemv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 2, &(ops->ger) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 3, &(ops->hemv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 2, &(ops->her) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 3, &(ops->her2) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 3, &(ops->symv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 2, &(ops->syr) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 3, &(ops->syr2) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 3, &(ops->trmv) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_M, 3, &(ops->trsv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 2, &(ops->gemv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_MN, 2, &(ops->ger) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 3, &(ops->hemv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 2, &(ops->her) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 3, &(ops->her2) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 3, &(ops->symv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 2, &(ops->syr) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 3, &(ops->syr2) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 3, &(ops->trmv) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_M, 3, &(ops->trsv) ); // Level-3 micro-kernels - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_K, 0, &(ops->gemm_ukr) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_NO_DIMS, 1, &(ops->trsm_ukr) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_K, 1, &(ops->gemmtrsm_ukr) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_K, 0, &(ops->gemm_ukr) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_NO_DIMS, 1, &(ops->trsm_ukr) ); + libblis_test_read_op_info( ops, input_stream, BLIS_NOID, BLIS_TEST_DIMS_K, 1, &(ops->gemmtrsm_ukr) ); // Level-3 - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MNK, 2, &(ops->gemm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 4, &(ops->hemm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MK, 2, &(ops->herk) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MK, 3, &(ops->her2k) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 4, &(ops->symm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MK, 2, &(ops->syrk) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MK, 3, &(ops->syr2k) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 4, &(ops->trmm) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 5, &(ops->trmm3) ); - libblis_test_read_op_info( ops, input_stream, BLIS_TEST_DIMS_MN, 4, &(ops->trsm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_GEMM, BLIS_TEST_DIMS_MNK, 2, &(ops->gemm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_HEMM, BLIS_TEST_DIMS_MN, 4, &(ops->hemm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_HERK, BLIS_TEST_DIMS_MK, 2, &(ops->herk) ); + libblis_test_read_op_info( ops, input_stream, BLIS_HER2K, BLIS_TEST_DIMS_MK, 3, &(ops->her2k) ); + libblis_test_read_op_info( ops, input_stream, BLIS_SYMM, BLIS_TEST_DIMS_MN, 4, &(ops->symm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_SYRK, BLIS_TEST_DIMS_MK, 2, &(ops->syrk) ); + libblis_test_read_op_info( ops, input_stream, BLIS_SYR2K, BLIS_TEST_DIMS_MK, 3, &(ops->syr2k) ); + libblis_test_read_op_info( ops, input_stream, BLIS_TRMM, BLIS_TEST_DIMS_MN, 4, &(ops->trmm) ); + libblis_test_read_op_info( ops, input_stream, BLIS_TRMM3, BLIS_TEST_DIMS_MN, 5, &(ops->trmm3) ); + libblis_test_read_op_info( ops, input_stream, BLIS_TRSM, BLIS_TEST_DIMS_MN, 4, &(ops->trsm) ); // Output the section overrides. libblis_test_output_section_overrides( stdout, ops ); @@ -380,19 +380,25 @@ void libblis_test_read_params_file( char* input_filename, test_params_t* params // Read whether to enable 3mh. libblis_test_read_next_line( buffer, input_stream ); - sscanf( buffer, "%u ", &(params->enable_3mh) ); + sscanf( buffer, "%u ", &(params->ind_enable[ BLIS_3MH ]) ); // Read whether to enable 3m1. libblis_test_read_next_line( buffer, input_stream ); - sscanf( buffer, "%u ", &(params->enable_3m1) ); + sscanf( buffer, "%u ", &(params->ind_enable[ BLIS_3M1 ]) ); // Read whether to enable 4mh. libblis_test_read_next_line( buffer, input_stream ); - sscanf( buffer, "%u ", &(params->enable_4mh) ); + sscanf( buffer, "%u ", &(params->ind_enable[ BLIS_4MH ]) ); - // Read whether to enable 4m1. + // Read whether to enable 4m1b (4mb). libblis_test_read_next_line( buffer, input_stream ); - sscanf( buffer, "%u ", &(params->enable_4m1) ); + sscanf( buffer, "%u ", &(params->ind_enable[ BLIS_4M1B ]) ); + + // Read whether to enable 4m1a (4m1). + libblis_test_read_next_line( buffer, input_stream ); + sscanf( buffer, "%u ", &(params->ind_enable[ BLIS_4M1A ]) ); + + params->ind_enable[ BLIS_NAT ] = 1; // Read the requested error-checking level. libblis_test_read_next_line( buffer, input_stream ); @@ -421,16 +427,6 @@ void libblis_test_read_params_file( char* input_filename, test_params_t* params // Close the file. fclose( input_stream ); - // Enable/disable the alternative complex implementations. - if ( params->enable_3mh ) bli_3mh_enable(); - else bli_3mh_disable(); - if ( params->enable_3m1 ) bli_3m1_enable(); - else bli_3m1_disable(); - if ( params->enable_4mh ) bli_4mh_enable(); - else bli_4mh_disable(); - if ( params->enable_4m1 ) bli_4m1_enable(); - else bli_4m1_disable(); - // Output the parameter struct. libblis_test_output_params_struct( stdout, params ); } @@ -450,6 +446,7 @@ void libblis_test_read_section_override( test_ops_t* ops, void libblis_test_read_op_info( test_ops_t* ops, FILE* input_stream, + opid_t opid, dimset_t dimset, unsigned int n_params, test_op_t* op ) @@ -458,6 +455,9 @@ void libblis_test_read_op_info( test_ops_t* ops, char temp[ INPUT_BUFFER_SIZE ]; int i, p; + // Initialize the operation type field. + op->opid = opid; + // Read the line for the overall operation switch. libblis_test_read_next_line( buffer, input_stream ); sscanf( buffer, "%d ", &(op->op_switch) ); @@ -565,6 +565,7 @@ void libblis_test_output_params_struct( FILE* os, test_params_t* params ) int i; //char int_type_size_str[8]; gint_t int_type_size; + ind_t ind; // If bli_info_get_int_type_size() returns 32 or 64, the size is forced. // Otherwise, the size is chosen automatically. We query the result of @@ -620,146 +621,15 @@ void libblis_test_output_params_struct( FILE* os, test_params_t* params ) libblis_test_fprintf_c( os, " enabled? %d\n", ( int )bli_info_get_enable_blas2blis() ); libblis_test_fprintf_c( os, " integer type size (bits) %d\n", ( int )bli_info_get_blas2blis_int_type_size() ); libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "--- BLIS kernel header ---\n" ); - libblis_test_fprintf_c( os, "\n" ); libblis_test_fprintf_c( os, "floating-point types s d c z \n" ); libblis_test_fprintf_c( os, " sizes (bytes) %7u %7u %7u %7u\n", sizeof(float), sizeof(double), sizeof(scomplex), sizeof(dcomplex) ); libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "level-3 def cache blkszes s d c z \n" ); - libblis_test_fprintf_c( os, " m dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_default_mc_s(), - ( int )bli_info_get_default_mc_d(), - ( int )bli_info_get_default_mc_c(), - ( int )bli_info_get_default_mc_z() ); - libblis_test_fprintf_c( os, " k dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_default_kc_s(), - ( int )bli_info_get_default_kc_d(), - ( int )bli_info_get_default_kc_c(), - ( int )bli_info_get_default_kc_z() ); - libblis_test_fprintf_c( os, " n dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_default_nc_s(), - ( int )bli_info_get_default_nc_d(), - ( int )bli_info_get_default_nc_c(), - ( int )bli_info_get_default_nc_z() ); + libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "level-3 max cache blkszes s d c z \n" ); - libblis_test_fprintf_c( os, " m dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_maximum_mc_s(), - ( int )bli_info_get_maximum_mc_d(), - ( int )bli_info_get_maximum_mc_c(), - ( int )bli_info_get_maximum_mc_z() ); - libblis_test_fprintf_c( os, " k dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_maximum_kc_s(), - ( int )bli_info_get_maximum_kc_d(), - ( int )bli_info_get_maximum_kc_c(), - ( int )bli_info_get_maximum_kc_z() ); - libblis_test_fprintf_c( os, " n dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_maximum_nc_s(), - ( int )bli_info_get_maximum_nc_d(), - ( int )bli_info_get_maximum_nc_c(), - ( int )bli_info_get_maximum_nc_z() ); - libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "level-3 register blocksizes s d c z \n" ); - libblis_test_fprintf_c( os, " m dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_default_mr_s(), - ( int )bli_info_get_default_mr_d(), - ( int )bli_info_get_default_mr_c(), - ( int )bli_info_get_default_mr_z() ); - libblis_test_fprintf_c( os, " n dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_default_nr_s(), - ( int )bli_info_get_default_nr_d(), - ( int )bli_info_get_default_nr_c(), - ( int )bli_info_get_default_nr_z() ); - libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "level-3 pack register blksz s d c z \n" ); - libblis_test_fprintf_c( os, " m dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_packdim_mr_s(), - ( int )bli_info_get_packdim_mr_d(), - ( int )bli_info_get_packdim_mr_c(), - ( int )bli_info_get_packdim_mr_z() ); - libblis_test_fprintf_c( os, " n dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_packdim_nr_s(), - ( int )bli_info_get_packdim_nr_d(), - ( int )bli_info_get_packdim_nr_c(), - ( int )bli_info_get_packdim_nr_z() ); - libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "micro-panel alignment (bytes) s d c z \n" ); - libblis_test_fprintf_c( os, " A (left matrix) %7d %7d %7d %7d\n", - ( int )bli_info_get_upanel_a_align_size_s(), - ( int )bli_info_get_upanel_a_align_size_d(), - ( int )bli_info_get_upanel_a_align_size_c(), - ( int )bli_info_get_upanel_a_align_size_z() ); - libblis_test_fprintf_c( os, " B (right matrix) %7d %7d %7d %7d\n", - ( int )bli_info_get_upanel_b_align_size_s(), - ( int )bli_info_get_upanel_b_align_size_d(), - ( int )bli_info_get_upanel_b_align_size_c(), - ( int )bli_info_get_upanel_b_align_size_z() ); - libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "level-2 cache blocksizes s d c z \n" ); - libblis_test_fprintf_c( os, " m dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_default_l2_mc_s(), - ( int )bli_info_get_default_l2_mc_d(), - ( int )bli_info_get_default_l2_mc_c(), - ( int )bli_info_get_default_l2_mc_z() ); - libblis_test_fprintf_c( os, " n dimension %7d %7d %7d %7d\n", - ( int )bli_info_get_default_l2_nc_s(), - ( int )bli_info_get_default_l2_nc_d(), - ( int )bli_info_get_default_l2_nc_c(), - ( int )bli_info_get_default_l2_nc_z() ); - libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "level-1f fusing factors s d c z \n" ); - libblis_test_fprintf_c( os, " default %7d %7d %7d %7d\n", - ( int )bli_info_get_default_l1f_fuse_fac_s(), - ( int )bli_info_get_default_l1f_fuse_fac_d(), - ( int )bli_info_get_default_l1f_fuse_fac_c(), - ( int )bli_info_get_default_l1f_fuse_fac_z() ); - libblis_test_fprintf_c( os, " axpyf %7d %7d %7d %7d\n", - ( int )bli_info_get_axpyf_fuse_fac_s(), - ( int )bli_info_get_axpyf_fuse_fac_d(), - ( int )bli_info_get_axpyf_fuse_fac_c(), - ( int )bli_info_get_axpyf_fuse_fac_z() ); - libblis_test_fprintf_c( os, " dotxf %7d %7d %7d %7d\n", - ( int )bli_info_get_dotxf_fuse_fac_s(), - ( int )bli_info_get_dotxf_fuse_fac_d(), - ( int )bli_info_get_dotxf_fuse_fac_c(), - ( int )bli_info_get_dotxf_fuse_fac_z() ); - libblis_test_fprintf_c( os, " dotxaxpyf %7d %7d %7d %7d\n", - ( int )bli_info_get_dotxaxpyf_fuse_fac_s(), - ( int )bli_info_get_dotxaxpyf_fuse_fac_d(), - ( int )bli_info_get_dotxaxpyf_fuse_fac_c(), - ( int )bli_info_get_dotxaxpyf_fuse_fac_z() ); - libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "micro-kernel types s d c z\n" ); - libblis_test_fprintf_c( os, " gemm %7s %7s %7s %7s\n", - bli_info_get_gemm_ukr_type_string( BLIS_FLOAT ), - bli_info_get_gemm_ukr_type_string( BLIS_DOUBLE ), - bli_info_get_gemm_ukr_type_string( BLIS_SCOMPLEX ), - bli_info_get_gemm_ukr_type_string( BLIS_DCOMPLEX ) ); - libblis_test_fprintf_c( os, " gemmtrsm_l %7s %7s %7s %7s\n", - bli_info_get_gemmtrsm_l_ukr_type_string( BLIS_FLOAT ), - bli_info_get_gemmtrsm_l_ukr_type_string( BLIS_DOUBLE ), - bli_info_get_gemmtrsm_l_ukr_type_string( BLIS_SCOMPLEX ), - bli_info_get_gemmtrsm_l_ukr_type_string( BLIS_DCOMPLEX ) ); - libblis_test_fprintf_c( os, " gemmtrsm_u %7s %7s %7s %7s\n", - bli_info_get_gemmtrsm_u_ukr_type_string( BLIS_FLOAT ), - bli_info_get_gemmtrsm_u_ukr_type_string( BLIS_DOUBLE ), - bli_info_get_gemmtrsm_u_ukr_type_string( BLIS_SCOMPLEX ), - bli_info_get_gemmtrsm_u_ukr_type_string( BLIS_DCOMPLEX ) ); - libblis_test_fprintf_c( os, " trsm_l %7s %7s %7s %7s\n", - bli_info_get_trsm_l_ukr_type_string( BLIS_FLOAT ), - bli_info_get_trsm_l_ukr_type_string( BLIS_DOUBLE ), - bli_info_get_trsm_l_ukr_type_string( BLIS_SCOMPLEX ), - bli_info_get_trsm_l_ukr_type_string( BLIS_DCOMPLEX ) ); - libblis_test_fprintf_c( os, " trsm_u %7s %7s %7s %7s\n", - bli_info_get_trsm_u_ukr_type_string( BLIS_FLOAT ), - bli_info_get_trsm_u_ukr_type_string( BLIS_DOUBLE ), - bli_info_get_trsm_u_ukr_type_string( BLIS_SCOMPLEX ), - bli_info_get_trsm_u_ukr_type_string( BLIS_DCOMPLEX ) ); - libblis_test_fprintf_c( os, "\n" ); - libblis_test_fprintf_c( os, "--- BLIS implementation details ---\n" ); + libblis_test_fprintf_c( os, "--- BLIS default implementations ---\n" ); libblis_test_fprintf_c( os, "\n" ); libblis_test_fprintf_c( os, "level-3 implementations s d c z\n" ); libblis_test_fprintf_c( os, " gemm %7s %7s %7s %7s\n", @@ -813,6 +683,223 @@ void libblis_test_output_params_struct( FILE* os, test_params_t* params ) bli_info_get_trsm_impl_string( BLIS_SCOMPLEX ), bli_info_get_trsm_impl_string( BLIS_DCOMPLEX ) ); libblis_test_fprintf_c( os, "\n" ); + + //bli_ind_disable_all(); + + bli_ind_oper_enable_only( BLIS_GEMM, BLIS_NAT, BLIS_SCOMPLEX ); + bli_ind_oper_enable_only( BLIS_GEMM, BLIS_NAT, BLIS_DCOMPLEX ); + + libblis_test_fprintf_c( os, "--- BLIS native implementation info ---\n" ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, " c z \n" ); + libblis_test_fprintf_c( os, "complex implementation %7s %7s\n", + bli_ind_oper_get_avail_impl_string( BLIS_GEMM, BLIS_SCOMPLEX ), + bli_ind_oper_get_avail_impl_string( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "level-3 blocksizes s d c z \n" ); + libblis_test_fprintf_c( os, " mc %7d %7d %7d %7d\n", + ( int )bli_info_get_default_mc( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_default_mc( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_default_mc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_mc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " kc %7d %7d %7d %7d\n", + ( int )bli_info_get_default_kc( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_default_kc( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_default_kc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_kc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nc %7d %7d %7d %7d\n", + ( int )bli_info_get_default_nc( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_default_nc( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_default_nc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_nc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, " mc maximum %7d %7d %7d %7d\n", + ( int )bli_info_get_maximum_mc( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_maximum_mc( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_maximum_mc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_maximum_mc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " kc maximum %7d %7d %7d %7d\n", + ( int )bli_info_get_maximum_kc( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_maximum_kc( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_maximum_kc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_maximum_kc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nc maximum %7d %7d %7d %7d\n", + ( int )bli_info_get_maximum_nc( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_maximum_nc( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_maximum_nc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_maximum_nc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, " mr %7d %7d %7d %7d\n", + ( int )bli_info_get_default_mr( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_default_mr( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_default_mr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_mr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nr %7d %7d %7d %7d\n", + ( int )bli_info_get_default_nr( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_default_nr( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_default_nr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_nr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, " mr packdim %7d %7d %7d %7d\n", + ( int )bli_info_get_packdim_mr( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_packdim_mr( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_packdim_mr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_packdim_mr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nr packdim %7d %7d %7d %7d\n", + ( int )bli_info_get_packdim_nr( BLIS_GEMM, BLIS_FLOAT ), + ( int )bli_info_get_packdim_nr( BLIS_GEMM, BLIS_DOUBLE ), + ( int )bli_info_get_packdim_nr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_packdim_nr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "micro-kernel types s d c z\n" ); + libblis_test_fprintf_c( os, " gemm %7s %7s %7s %7s\n", + bli_info_get_gemm_ukr_impl_string( BLIS_NAT, BLIS_FLOAT ), + bli_info_get_gemm_ukr_impl_string( BLIS_NAT, BLIS_DOUBLE ), + bli_info_get_gemm_ukr_impl_string( BLIS_NAT, BLIS_SCOMPLEX ), + bli_info_get_gemm_ukr_impl_string( BLIS_NAT, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " gemmtrsm_l %7s %7s %7s %7s\n", + bli_info_get_gemmtrsm_l_ukr_impl_string( BLIS_NAT, BLIS_FLOAT ), + bli_info_get_gemmtrsm_l_ukr_impl_string( BLIS_NAT, BLIS_DOUBLE ), + bli_info_get_gemmtrsm_l_ukr_impl_string( BLIS_NAT, BLIS_SCOMPLEX ), + bli_info_get_gemmtrsm_l_ukr_impl_string( BLIS_NAT, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " gemmtrsm_u %7s %7s %7s %7s\n", + bli_info_get_gemmtrsm_u_ukr_impl_string( BLIS_NAT, BLIS_FLOAT ), + bli_info_get_gemmtrsm_u_ukr_impl_string( BLIS_NAT, BLIS_DOUBLE ), + bli_info_get_gemmtrsm_u_ukr_impl_string( BLIS_NAT, BLIS_SCOMPLEX ), + bli_info_get_gemmtrsm_u_ukr_impl_string( BLIS_NAT, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " trsm_l %7s %7s %7s %7s\n", + bli_info_get_trsm_l_ukr_impl_string( BLIS_NAT, BLIS_FLOAT ), + bli_info_get_trsm_l_ukr_impl_string( BLIS_NAT, BLIS_DOUBLE ), + bli_info_get_trsm_l_ukr_impl_string( BLIS_NAT, BLIS_SCOMPLEX ), + bli_info_get_trsm_l_ukr_impl_string( BLIS_NAT, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " trsm_u %7s %7s %7s %7s\n", + bli_info_get_trsm_u_ukr_impl_string( BLIS_NAT, BLIS_FLOAT ), + bli_info_get_trsm_u_ukr_impl_string( BLIS_NAT, BLIS_DOUBLE ), + bli_info_get_trsm_u_ukr_impl_string( BLIS_NAT, BLIS_SCOMPLEX ), + bli_info_get_trsm_u_ukr_impl_string( BLIS_NAT, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "\n" ); + + libblis_test_fprintf_c( os, "--- BLIS induced implementation info ---\n" ); + libblis_test_fprintf_c( os, "\n" ); + + for ( ind = 0; ind < BLIS_NAT; ++ind ) + { + if ( params->ind_enable[ ind ] == 0 ) continue; + + bli_ind_oper_enable_only( BLIS_GEMM, ind, BLIS_SCOMPLEX ); + bli_ind_oper_enable_only( BLIS_GEMM, ind, BLIS_DCOMPLEX ); + + libblis_test_fprintf_c( os, " c z \n" ); + libblis_test_fprintf_c( os, "complex implementation %7s %7s\n", + bli_ind_oper_get_avail_impl_string( BLIS_GEMM, BLIS_SCOMPLEX ), + bli_ind_oper_get_avail_impl_string( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "level-3 blocksizes c z \n" ); + libblis_test_fprintf_c( os, " mc %7d %7d\n", + ( int )bli_info_get_default_mc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_mc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " kc %7d %7d\n", + ( int )bli_info_get_default_kc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_kc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nc %7d %7d\n", + ( int )bli_info_get_default_nc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_nc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, " mc maximum %7d %7d\n", + ( int )bli_info_get_maximum_mc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_maximum_mc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " kc maximum %7d %7d\n", + ( int )bli_info_get_maximum_kc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_maximum_kc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nc maximum %7d %7d\n", + ( int )bli_info_get_maximum_nc( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_maximum_nc( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, " mr %7d %7d\n", + ( int )bli_info_get_default_mr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_mr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nr %7d %7d\n", + ( int )bli_info_get_default_nr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_default_nr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, " mr packdim %7d %7d\n", + ( int )bli_info_get_packdim_mr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_packdim_mr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " nr packdim %7d %7d\n", + ( int )bli_info_get_packdim_nr( BLIS_GEMM, BLIS_SCOMPLEX ), + ( int )bli_info_get_packdim_nr( BLIS_GEMM, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "micro-kernel types c z\n" ); + libblis_test_fprintf_c( os, " gemm %7s %7s\n", + bli_info_get_gemm_ukr_impl_string( ind, BLIS_SCOMPLEX ), + bli_info_get_gemm_ukr_impl_string( ind, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " gemmtrsm_l %7s %7s\n", + bli_info_get_gemmtrsm_l_ukr_impl_string( ind, BLIS_SCOMPLEX ), + bli_info_get_gemmtrsm_l_ukr_impl_string( ind, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " gemmtrsm_u %7s %7s\n", + bli_info_get_gemmtrsm_u_ukr_impl_string( ind, BLIS_SCOMPLEX ), + bli_info_get_gemmtrsm_u_ukr_impl_string( ind, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " trsm_l %7s %7s\n", + bli_info_get_trsm_l_ukr_impl_string( ind, BLIS_SCOMPLEX ), + bli_info_get_trsm_l_ukr_impl_string( ind, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, " trsm_u %7s %7s\n", + bli_info_get_trsm_u_ukr_impl_string( ind, BLIS_SCOMPLEX ), + bli_info_get_trsm_u_ukr_impl_string( ind, BLIS_DCOMPLEX ) ); + libblis_test_fprintf_c( os, "\n" ); + } + + bli_ind_disable_all(); + + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "--- BLIS misc. other info ---\n" ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "micro-panel alignment (bytes) s d c z \n" ); + libblis_test_fprintf_c( os, " A (left matrix) %7d %7d %7d %7d\n", + ( int )bli_info_get_upanel_a_align_size_s(), + ( int )bli_info_get_upanel_a_align_size_d(), + ( int )bli_info_get_upanel_a_align_size_c(), + ( int )bli_info_get_upanel_a_align_size_z() ); + libblis_test_fprintf_c( os, " B (right matrix) %7d %7d %7d %7d\n", + ( int )bli_info_get_upanel_b_align_size_s(), + ( int )bli_info_get_upanel_b_align_size_d(), + ( int )bli_info_get_upanel_b_align_size_c(), + ( int )bli_info_get_upanel_b_align_size_z() ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "level-2 cache blocksizes s d c z \n" ); + libblis_test_fprintf_c( os, " m dimension %7d %7d %7d %7d\n", + ( int )bli_info_get_default_l2_mc_s(), + ( int )bli_info_get_default_l2_mc_d(), + ( int )bli_info_get_default_l2_mc_c(), + ( int )bli_info_get_default_l2_mc_z() ); + libblis_test_fprintf_c( os, " n dimension %7d %7d %7d %7d\n", + ( int )bli_info_get_default_l2_nc_s(), + ( int )bli_info_get_default_l2_nc_d(), + ( int )bli_info_get_default_l2_nc_c(), + ( int )bli_info_get_default_l2_nc_z() ); + libblis_test_fprintf_c( os, "\n" ); + libblis_test_fprintf_c( os, "level-1f fusing factors s d c z \n" ); + libblis_test_fprintf_c( os, " default %7d %7d %7d %7d\n", + ( int )bli_info_get_default_l1f_fuse_fac_s(), + ( int )bli_info_get_default_l1f_fuse_fac_d(), + ( int )bli_info_get_default_l1f_fuse_fac_c(), + ( int )bli_info_get_default_l1f_fuse_fac_z() ); + libblis_test_fprintf_c( os, " axpyf %7d %7d %7d %7d\n", + ( int )bli_info_get_axpyf_fuse_fac_s(), + ( int )bli_info_get_axpyf_fuse_fac_d(), + ( int )bli_info_get_axpyf_fuse_fac_c(), + ( int )bli_info_get_axpyf_fuse_fac_z() ); + libblis_test_fprintf_c( os, " dotxf %7d %7d %7d %7d\n", + ( int )bli_info_get_dotxf_fuse_fac_s(), + ( int )bli_info_get_dotxf_fuse_fac_d(), + ( int )bli_info_get_dotxf_fuse_fac_c(), + ( int )bli_info_get_dotxf_fuse_fac_z() ); + libblis_test_fprintf_c( os, " dotxaxpyf %7d %7d %7d %7d\n", + ( int )bli_info_get_dotxaxpyf_fuse_fac_s(), + ( int )bli_info_get_dotxaxpyf_fuse_fac_d(), + ( int )bli_info_get_dotxaxpyf_fuse_fac_c(), + ( int )bli_info_get_dotxaxpyf_fuse_fac_z() ); + libblis_test_fprintf_c( os, "\n" ); libblis_test_fprintf( os, "\n" ); // Output the contents of the param struct. @@ -835,10 +922,13 @@ void libblis_test_output_params_struct( FILE* os, test_params_t* params ) libblis_test_fprintf_c( os, "problem size: first to test %u\n", params->p_first ); libblis_test_fprintf_c( os, "problem size: max to test %u\n", params->p_max ); libblis_test_fprintf_c( os, "problem size increment %u\n", params->p_inc ); - libblis_test_fprintf_c( os, "enable 3mh? %u\n", params->enable_3mh ); - libblis_test_fprintf_c( os, "enable 3m1? %u\n", params->enable_3m1 ); - libblis_test_fprintf_c( os, "enable 4mh? %u\n", params->enable_4mh ); - libblis_test_fprintf_c( os, "enable 4m1? %u\n", params->enable_4m1 ); + libblis_test_fprintf_c( os, "test induced complex \n" ); + libblis_test_fprintf_c( os, " 3mh? %u\n", params->ind_enable[ BLIS_3MH ] ); + libblis_test_fprintf_c( os, " 3m1? %u\n", params->ind_enable[ BLIS_3M1 ] ); + libblis_test_fprintf_c( os, " 4mh? %u\n", params->ind_enable[ BLIS_4MH ] ); + libblis_test_fprintf_c( os, " 4m1b (4mb)? %u\n", params->ind_enable[ BLIS_4M1B ] ); + libblis_test_fprintf_c( os, " 4m1a (4m1)? %u\n", params->ind_enable[ BLIS_4M1A ] ); + libblis_test_fprintf_c( os, "test native complex? %u\n", params->ind_enable[ BLIS_NAT ] ); libblis_test_fprintf_c( os, "error-checking level %u\n", params->error_checking_level ); libblis_test_fprintf_c( os, "reaction to failure %c\n", params->reaction_to_failure ); libblis_test_fprintf_c( os, "output in matlab format? %u\n", params->output_matlab_format ); @@ -1152,10 +1242,11 @@ void libblis_test_op_driver( test_params_t* params, char** sc_str; unsigned int p_cur, pi; - unsigned int dt, pci, sci, i, j, o; + unsigned int dt, indi, pci, sci, i, j, o; double perf, resid; char* pass_str; + char* ind_str; char blank_str[32]; char funcname_str[64]; char dims_str[64]; @@ -1357,7 +1448,6 @@ void libblis_test_op_driver( test_params_t* params, } - // Loop over the requested storage schemes. for ( sci = 0; sci < n_store_combos; ++sci ) { @@ -1378,100 +1468,132 @@ void libblis_test_op_driver( test_params_t* params, if ( output_stream ) libblis_test_fprintf( output_stream, "%s\n", label_str ); - // Loop over the requested parameter combinations. - for ( pci = 0; pci < n_param_combos; ++pci ) + // Start by assuming we will only test native execution. + ind_t ind_first = BLIS_NAT; + dim_t ind_last = BLIS_NAT; + + // If the operation is level-3, and the datatype is complex, + // then we iterate over all induced methods. + if ( bli_opid_is_level3( op->opid ) && + bli_is_complex( datatype ) ) ind_first = 0; + + // Loop over induced methods (or just BLIS_NAT). + for ( indi = ind_first; indi <= ind_last; ++indi ) { - // Loop over the requested problem sizes. - for ( p_cur = p_first, pi = 1; p_cur <= p_max; p_cur += p_inc, ++pi ) + // If the current induced method is native execution, OR + // if the current induced method is implemented (for the + // operation being tested) AND it was requested, then we + // enable ONLY that method and proceed. Otherwise, we + // skip the current method and go to the next method. + if ( indi == BLIS_NAT ) { ; } + else if ( bli_ind_oper_is_impl( op->opid, indi ) && + params->ind_enable[ indi ] == 1 ) { ; } + else { continue; } + + bli_ind_oper_enable_only( op->opid, indi, datatype ); + + // Query the implementation string associated with the + // current operation and datatype. If the operation is + // not level-3, we will always get back the native string. + ind_str = bli_ind_oper_get_avail_impl_string( op->opid, datatype ); + + // Loop over the requested parameter combinations. + for ( pci = 0; pci < n_param_combos; ++pci ) { - f_exp( params, - op, - iface, - datatype, - pc_str[pci], - sc_str[sci], - p_cur, - &perf, &resid ); - - // Remove the sign of the residual, if there is one. - resid = bli_fabs( resid ); - if ( resid == -0.0 ) resid = 0.0; - - // Query the string corresponding to the residual's - // position relative to the thresholds. - pass_str = libblis_test_get_string_for_result( resid, - datatype, - thresh ); - - // Build a string unique to the operation, datatype, - // parameter combination, and storage combination being - // tested. - libblis_test_build_function_string( BLIS_FILEDATA_PREFIX_STR, - op_str, - dt_char, - n_param_combos, - pc_str[pci], - sc_str[sci], - funcname_str ); - - // Compute the number of spaces we have left to fill given - // length of our operation's name. - n_spaces = MAX_FUNC_STRING_LENGTH - strlen( funcname_str ); - fill_string_with_n_spaces( blank_str, n_spaces ); - - // Print all dimensions to a single string. - libblis_test_build_dims_string( op, p_cur, dims_str ); - - // Count the number of dimensions that were printed to the string. - n_dims_print = libblis_test_get_n_dims_from_string( dims_str ); - - // Output the results of the test. Use matlab format if requested. - if ( params->output_matlab_format ) + // Loop over the requested problem sizes. + for ( p_cur = p_first, pi = 1; p_cur <= p_max; p_cur += p_inc, ++pi ) { - libblis_test_fprintf( stdout, - "%s%s( %3u, 1:%u ) = [%s %7.3lf %8.2le ]; %c %s\n", - funcname_str, blank_str, pi, n_dims_print + 2, - dims_str, perf, resid, - OUTPUT_COMMENT_CHAR, - pass_str ); + f_exp( params, + op, + iface, + datatype, + pc_str[pci], + sc_str[sci], + p_cur, + &perf, &resid ); - // Also output to a file if requested (and successfully opened). - if ( output_stream ) - libblis_test_fprintf( output_stream, - "%s%s( %3u, 1:%u ) = [%s %7.3lf %8.2le ]; %c %s\n", - funcname_str, blank_str, pi, n_dims_print + 2, - dims_str, perf, resid, - OUTPUT_COMMENT_CHAR, - pass_str ); - } - else - { - libblis_test_fprintf( stdout, - "%s%s %s %7.3lf %8.2le %s\n", - funcname_str, blank_str, - dims_str, perf, resid, - pass_str ); + // Remove the sign of the residual, if there is one. + resid = bli_fabs( resid ); + if ( resid == -0.0 ) resid = 0.0; - // Also output to a file if requested (and successfully opened). - if ( output_stream ) - libblis_test_fprintf( output_stream, - "%s%s %s %7.3lf %8.2le %s\n", - funcname_str, blank_str, - dims_str, perf, resid, - pass_str ); - } + // Query the string corresponding to the residual's + // position relative to the thresholds. + pass_str = libblis_test_get_string_for_result( resid, + datatype, + thresh ); - // If we need to check whether to do something on failure, - // do so now. - if ( reaction_to_failure == ON_FAILURE_SLEEP_CHAR ) - { - if ( strstr( pass_str, BLIS_TEST_FAIL_STRING ) == pass_str ) - libblis_test_sleep(); - } - else if ( reaction_to_failure == ON_FAILURE_ABORT_CHAR ) - { - if ( strstr( pass_str, BLIS_TEST_FAIL_STRING ) == pass_str ) - libblis_test_abort(); + // Build a string unique to the operation, datatype, + // parameter combination, and storage combination being + // tested. + libblis_test_build_function_string( BLIS_FILEDATA_PREFIX_STR, + indi, + ind_str, + op_str, + dt_char, + n_param_combos, + pc_str[pci], + sc_str[sci], + funcname_str ); + + // Compute the number of spaces we have left to fill given + // length of our operation's name. + n_spaces = MAX_FUNC_STRING_LENGTH - strlen( funcname_str ); + fill_string_with_n_spaces( blank_str, n_spaces ); + + // Print all dimensions to a single string. + libblis_test_build_dims_string( op, p_cur, dims_str ); + + // Count the number of dimensions that were printed to the string. + n_dims_print = libblis_test_get_n_dims_from_string( dims_str ); + + // Output the results of the test. Use matlab format if requested. + if ( params->output_matlab_format ) + { + libblis_test_fprintf( stdout, + "%s%s( %3u, 1:%u ) = [%s %7.3lf %8.2le ]; %c %s\n", + funcname_str, blank_str, pi, n_dims_print + 2, + dims_str, perf, resid, + OUTPUT_COMMENT_CHAR, + pass_str ); + + // Also output to a file if requested (and successfully opened). + if ( output_stream ) + libblis_test_fprintf( output_stream, + "%s%s( %3u, 1:%u ) = [%s %7.3lf %8.2le ]; %c %s\n", + funcname_str, blank_str, pi, n_dims_print + 2, + dims_str, perf, resid, + OUTPUT_COMMENT_CHAR, + pass_str ); + } + else + { + libblis_test_fprintf( stdout, + "%s%s %s %7.3lf %8.2le %s\n", + funcname_str, blank_str, + dims_str, perf, resid, + pass_str ); + + // Also output to a file if requested (and successfully opened). + if ( output_stream ) + libblis_test_fprintf( output_stream, + "%s%s %s %7.3lf %8.2le %s\n", + funcname_str, blank_str, + dims_str, perf, resid, + pass_str ); + } + + // If we need to check whether to do something on failure, + // do so now. + if ( reaction_to_failure == ON_FAILURE_SLEEP_CHAR ) + { + if ( strstr( pass_str, BLIS_TEST_FAIL_STRING ) == pass_str ) + libblis_test_sleep(); + } + else if ( reaction_to_failure == ON_FAILURE_ABORT_CHAR ) + { + if ( strstr( pass_str, BLIS_TEST_FAIL_STRING ) == pass_str ) + libblis_test_abort(); + } } } } @@ -1511,6 +1633,8 @@ void libblis_test_op_driver( test_params_t* params, void libblis_test_build_function_string( char* prefix_str, + ind_t method, + char* ind_str, char* op_str, char dt_char, unsigned int n_param_combos, @@ -1520,6 +1644,11 @@ void libblis_test_build_function_string( char* prefix_str, { sprintf( funcname_str, "%s_%c%s", prefix_str, dt_char, op_str ); + // If the method is non-native (ie: induced), append a string + // identifying the induced method. + if ( method != BLIS_NAT ) + sprintf( &funcname_str[strlen(funcname_str)], "%s", ind_str ); + // We check the string length of pc_str in case the user is running an // operation that has parameters (and thus generally more than one // parameter combination), but has fixed all parameters in the input @@ -1603,16 +1732,16 @@ void libblis_test_build_col_labels_string( test_op_t* op, char* l_str ) { sprintf( &l_str[strlen(l_str)], "%c %s_%s", OUTPUT_COMMENT_CHAR, BLIS_FILEDATA_PREFIX_STR, - "