1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*---------------------------------------------------------------*/ 3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--- begin host_generic_simd256.c ---*/ 4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*---------------------------------------------------------------*/ 5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* 7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov This file is part of Valgrind, a dynamic binary instrumentation 8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov framework. 9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov Copyright (C) 2012-2013 OpenWorks GbR 11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov info@open-works.net 12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov This program is free software; you can redistribute it and/or 14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov modify it under the terms of the GNU General Public License as 15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov published by the Free Software Foundation; either version 2 of the 16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov License, or (at your option) any later version. 17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov This program is distributed in the hope that it will be useful, but 19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov WITHOUT ANY WARRANTY; without even the implied warranty of 20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov General Public License for more details. 22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov You should have received a copy of the GNU General Public License 24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov along with this program; if not, write to the Free Software 25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 02110-1301, USA. 27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov The GNU General Public License is contained in the file COPYING. 29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov*/ 30436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 31436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* Generic helper functions for doing 256-bit SIMD arithmetic in cases 32436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov where the instruction selectors cannot generate code in-line. 33436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov These are purely back-end entities and cannot be seen/referenced 34436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov from IR. */ 35436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 36436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include "libvex_basictypes.h" 37436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include "host_generic_simd256.h" 38436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 39436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 40436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovvoid VEX_REGPARM(3) 41436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov h_generic_calc_Perm32x8 ( /*OUT*/V256* res, 42436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov V256* argL, V256* argR ) 43436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{ 44436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[0] = argL->w32[ argR->w32[0] & 7 ]; 45436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[1] = argL->w32[ argR->w32[1] & 7 ]; 46436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[2] = argL->w32[ argR->w32[2] & 7 ]; 47436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[3] = argL->w32[ argR->w32[3] & 7 ]; 48436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[4] = argL->w32[ argR->w32[4] & 7 ]; 49436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[5] = argL->w32[ argR->w32[5] & 7 ]; 50436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[6] = argL->w32[ argR->w32[6] & 7 ]; 51436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov res->w32[7] = argL->w32[ argR->w32[7] & 7 ]; 52436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} 53436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 54436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 55436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*---------------------------------------------------------------*/ 56436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--- end host_generic_simd256.c ---*/ 57436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*---------------------------------------------------------------*/ 58