1*77c1e3ccSAndroid Build Coastguard Worker/* 2*77c1e3ccSAndroid Build Coastguard Worker * Copyright (c) 2016, Alliance for Open Media. All rights reserved. 3*77c1e3ccSAndroid Build Coastguard Worker * 4*77c1e3ccSAndroid Build Coastguard Worker * This source code is subject to the terms of the BSD 2 Clause License and 5*77c1e3ccSAndroid Build Coastguard Worker * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License 6*77c1e3ccSAndroid Build Coastguard Worker * was not distributed with this source code in the LICENSE file, you can 7*77c1e3ccSAndroid Build Coastguard Worker * obtain it at www.aomedia.org/license/software. If the Alliance for Open 8*77c1e3ccSAndroid Build Coastguard Worker * Media Patent License 1.0 was not distributed with this source code in the 9*77c1e3ccSAndroid Build Coastguard Worker * PATENTS file, you can obtain it at www.aomedia.org/license/patent. 10*77c1e3ccSAndroid Build Coastguard Worker */ 11*77c1e3ccSAndroid Build Coastguard Worker 12*77c1e3ccSAndroid Build Coastguard Worker#include <assert.h> 13*77c1e3ccSAndroid Build Coastguard Worker#include <string> 14*77c1e3ccSAndroid Build Coastguard Worker 15*77c1e3ccSAndroid Build Coastguard Worker#include "config/aom_dsp_rtcd.h" 16*77c1e3ccSAndroid Build Coastguard Worker 17*77c1e3ccSAndroid Build Coastguard Worker#include "test/acm_random.h" 18*77c1e3ccSAndroid Build Coastguard Worker// Inlining not forced for the compiler due to some tests calling 19*77c1e3ccSAndroid Build Coastguard Worker// SIMD_INLINE functions via function pointers 20*77c1e3ccSAndroid Build Coastguard Worker#undef SIMD_INLINE 21*77c1e3ccSAndroid Build Coastguard Worker#define SIMD_INLINE static inline 22*77c1e3ccSAndroid Build Coastguard Worker#include "aom_dsp/aom_simd.h" 23*77c1e3ccSAndroid Build Coastguard Worker#include "aom_dsp/simd/v256_intrinsics_c.h" 24*77c1e3ccSAndroid Build Coastguard Worker 25*77c1e3ccSAndroid Build Coastguard Worker// Machine tuned code goes into this file. This file is included from 26*77c1e3ccSAndroid Build Coastguard Worker// simd_cmp_sse2.cc, simd_cmp_ssse3.cc etc which define the macros 27*77c1e3ccSAndroid Build Coastguard Worker// ARCH (=neon, sse2, ssse3, etc), SIMD_NAMESPACE and ARCH_POSTFIX(). 28*77c1e3ccSAndroid Build Coastguard Worker 29*77c1e3ccSAndroid Build Coastguard Worker#ifdef _MSC_VER 30*77c1e3ccSAndroid Build Coastguard Worker// Disable "value of intrinsic immediate argument 'value' is out of range 31*77c1e3ccSAndroid Build Coastguard Worker// 'lowerbound - upperbound'" warning. Visual Studio emits this warning though 32*77c1e3ccSAndroid Build Coastguard Worker// the parameters are conditionally checked in e.g., v256_shr_n_byte. Adding a 33*77c1e3ccSAndroid Build Coastguard Worker// mask doesn't always appear to be sufficient. 34*77c1e3ccSAndroid Build Coastguard Worker#pragma warning(disable : 4556) 35*77c1e3ccSAndroid Build Coastguard Worker#endif 36*77c1e3ccSAndroid Build Coastguard Worker 37*77c1e3ccSAndroid Build Coastguard Workerusing libaom_test::ACMRandom; 38*77c1e3ccSAndroid Build Coastguard Worker 39*77c1e3ccSAndroid Build Coastguard Workernamespace SIMD_NAMESPACE { 40*77c1e3ccSAndroid Build Coastguard Worker 41*77c1e3ccSAndroid Build Coastguard Worker// Wrap templates around intrinsics using immediate values 42*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 43*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shl_n_byte(v64 a) { 44*77c1e3ccSAndroid Build Coastguard Worker return v64_shl_n_byte(a, shift); 45*77c1e3ccSAndroid Build Coastguard Worker} 46*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 47*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shr_n_byte(v64 a) { 48*77c1e3ccSAndroid Build Coastguard Worker return v64_shr_n_byte(a, shift); 49*77c1e3ccSAndroid Build Coastguard Worker} 50*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 51*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shl_n_8(v64 a) { 52*77c1e3ccSAndroid Build Coastguard Worker return v64_shl_n_8(a, shift); 53*77c1e3ccSAndroid Build Coastguard Worker} 54*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 55*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shr_n_u8(v64 a) { 56*77c1e3ccSAndroid Build Coastguard Worker return v64_shr_n_u8(a, shift); 57*77c1e3ccSAndroid Build Coastguard Worker} 58*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 59*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shr_n_s8(v64 a) { 60*77c1e3ccSAndroid Build Coastguard Worker return v64_shr_n_s8(a, shift); 61*77c1e3ccSAndroid Build Coastguard Worker} 62*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 63*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shl_n_16(v64 a) { 64*77c1e3ccSAndroid Build Coastguard Worker return v64_shl_n_16(a, shift); 65*77c1e3ccSAndroid Build Coastguard Worker} 66*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 67*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shr_n_u16(v64 a) { 68*77c1e3ccSAndroid Build Coastguard Worker return v64_shr_n_u16(a, shift); 69*77c1e3ccSAndroid Build Coastguard Worker} 70*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 71*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shr_n_s16(v64 a) { 72*77c1e3ccSAndroid Build Coastguard Worker return v64_shr_n_s16(a, shift); 73*77c1e3ccSAndroid Build Coastguard Worker} 74*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 75*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shl_n_32(v64 a) { 76*77c1e3ccSAndroid Build Coastguard Worker return v64_shl_n_32(a, shift); 77*77c1e3ccSAndroid Build Coastguard Worker} 78*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 79*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shr_n_u32(v64 a) { 80*77c1e3ccSAndroid Build Coastguard Worker return v64_shr_n_u32(a, shift); 81*77c1e3ccSAndroid Build Coastguard Worker} 82*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 83*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_shr_n_s32(v64 a) { 84*77c1e3ccSAndroid Build Coastguard Worker return v64_shr_n_s32(a, shift); 85*77c1e3ccSAndroid Build Coastguard Worker} 86*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 87*77c1e3ccSAndroid Build Coastguard Workerv64 imm_v64_align(v64 a, v64 b) { 88*77c1e3ccSAndroid Build Coastguard Worker return v64_align(a, b, shift); 89*77c1e3ccSAndroid Build Coastguard Worker} 90*77c1e3ccSAndroid Build Coastguard Worker 91*77c1e3ccSAndroid Build Coastguard Worker// Wrap templates around corresponding C implementations of the above 92*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 93*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shl_n_byte(c_v64 a) { 94*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shl_n_byte(a, shift); 95*77c1e3ccSAndroid Build Coastguard Worker} 96*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 97*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shr_n_byte(c_v64 a) { 98*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shr_n_byte(a, shift); 99*77c1e3ccSAndroid Build Coastguard Worker} 100*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 101*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shl_n_8(c_v64 a) { 102*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shl_n_8(a, shift); 103*77c1e3ccSAndroid Build Coastguard Worker} 104*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 105*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shr_n_u8(c_v64 a) { 106*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shr_n_u8(a, shift); 107*77c1e3ccSAndroid Build Coastguard Worker} 108*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 109*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shr_n_s8(c_v64 a) { 110*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shr_n_s8(a, shift); 111*77c1e3ccSAndroid Build Coastguard Worker} 112*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 113*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shl_n_16(c_v64 a) { 114*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shl_n_16(a, shift); 115*77c1e3ccSAndroid Build Coastguard Worker} 116*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 117*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shr_n_u16(c_v64 a) { 118*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shr_n_u16(a, shift); 119*77c1e3ccSAndroid Build Coastguard Worker} 120*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 121*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shr_n_s16(c_v64 a) { 122*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shr_n_s16(a, shift); 123*77c1e3ccSAndroid Build Coastguard Worker} 124*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 125*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shl_n_32(c_v64 a) { 126*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shl_n_32(a, shift); 127*77c1e3ccSAndroid Build Coastguard Worker} 128*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 129*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shr_n_u32(c_v64 a) { 130*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shr_n_u32(a, shift); 131*77c1e3ccSAndroid Build Coastguard Worker} 132*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 133*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_shr_n_s32(c_v64 a) { 134*77c1e3ccSAndroid Build Coastguard Worker return c_v64_shr_n_s32(a, shift); 135*77c1e3ccSAndroid Build Coastguard Worker} 136*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 137*77c1e3ccSAndroid Build Coastguard Workerc_v64 c_imm_v64_align(c_v64 a, c_v64 b) { 138*77c1e3ccSAndroid Build Coastguard Worker return c_v64_align(a, b, shift); 139*77c1e3ccSAndroid Build Coastguard Worker} 140*77c1e3ccSAndroid Build Coastguard Worker 141*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 142*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shl_n_byte(v128 a) { 143*77c1e3ccSAndroid Build Coastguard Worker return v128_shl_n_byte(a, shift); 144*77c1e3ccSAndroid Build Coastguard Worker} 145*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 146*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_byte(v128 a) { 147*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_byte(a, shift); 148*77c1e3ccSAndroid Build Coastguard Worker} 149*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 150*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shl_n_8(v128 a) { 151*77c1e3ccSAndroid Build Coastguard Worker return v128_shl_n_8(a, shift); 152*77c1e3ccSAndroid Build Coastguard Worker} 153*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 154*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_u8(v128 a) { 155*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_u8(a, shift); 156*77c1e3ccSAndroid Build Coastguard Worker} 157*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 158*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_s8(v128 a) { 159*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_s8(a, shift); 160*77c1e3ccSAndroid Build Coastguard Worker} 161*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 162*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shl_n_16(v128 a) { 163*77c1e3ccSAndroid Build Coastguard Worker return v128_shl_n_16(a, shift); 164*77c1e3ccSAndroid Build Coastguard Worker} 165*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 166*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_u16(v128 a) { 167*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_u16(a, shift); 168*77c1e3ccSAndroid Build Coastguard Worker} 169*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 170*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_s16(v128 a) { 171*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_s16(a, shift); 172*77c1e3ccSAndroid Build Coastguard Worker} 173*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 174*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shl_n_32(v128 a) { 175*77c1e3ccSAndroid Build Coastguard Worker return v128_shl_n_32(a, shift); 176*77c1e3ccSAndroid Build Coastguard Worker} 177*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 178*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_u32(v128 a) { 179*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_u32(a, shift); 180*77c1e3ccSAndroid Build Coastguard Worker} 181*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 182*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_s32(v128 a) { 183*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_s32(a, shift); 184*77c1e3ccSAndroid Build Coastguard Worker} 185*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 186*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shl_n_64(v128 a) { 187*77c1e3ccSAndroid Build Coastguard Worker return v128_shl_n_64(a, shift); 188*77c1e3ccSAndroid Build Coastguard Worker} 189*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 190*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_u64(v128 a) { 191*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_u64(a, shift); 192*77c1e3ccSAndroid Build Coastguard Worker} 193*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 194*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_shr_n_s64(v128 a) { 195*77c1e3ccSAndroid Build Coastguard Worker return v128_shr_n_s64(a, shift); 196*77c1e3ccSAndroid Build Coastguard Worker} 197*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 198*77c1e3ccSAndroid Build Coastguard Workerv128 imm_v128_align(v128 a, v128 b) { 199*77c1e3ccSAndroid Build Coastguard Worker return v128_align(a, b, shift); 200*77c1e3ccSAndroid Build Coastguard Worker} 201*77c1e3ccSAndroid Build Coastguard Worker 202*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 203*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shl_n_byte(c_v128 a) { 204*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shl_n_byte(a, shift); 205*77c1e3ccSAndroid Build Coastguard Worker} 206*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 207*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_byte(c_v128 a) { 208*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_byte(a, shift); 209*77c1e3ccSAndroid Build Coastguard Worker} 210*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 211*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shl_n_8(c_v128 a) { 212*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shl_n_8(a, shift); 213*77c1e3ccSAndroid Build Coastguard Worker} 214*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 215*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_u8(c_v128 a) { 216*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_u8(a, shift); 217*77c1e3ccSAndroid Build Coastguard Worker} 218*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 219*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_s8(c_v128 a) { 220*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_s8(a, shift); 221*77c1e3ccSAndroid Build Coastguard Worker} 222*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 223*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shl_n_16(c_v128 a) { 224*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shl_n_16(a, shift); 225*77c1e3ccSAndroid Build Coastguard Worker} 226*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 227*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_u16(c_v128 a) { 228*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_u16(a, shift); 229*77c1e3ccSAndroid Build Coastguard Worker} 230*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 231*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_s16(c_v128 a) { 232*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_s16(a, shift); 233*77c1e3ccSAndroid Build Coastguard Worker} 234*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 235*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shl_n_32(c_v128 a) { 236*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shl_n_32(a, shift); 237*77c1e3ccSAndroid Build Coastguard Worker} 238*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 239*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_u32(c_v128 a) { 240*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_u32(a, shift); 241*77c1e3ccSAndroid Build Coastguard Worker} 242*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 243*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_s32(c_v128 a) { 244*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_s32(a, shift); 245*77c1e3ccSAndroid Build Coastguard Worker} 246*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 247*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shl_n_64(c_v128 a) { 248*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shl_n_64(a, shift); 249*77c1e3ccSAndroid Build Coastguard Worker} 250*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 251*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_u64(c_v128 a) { 252*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_u64(a, shift); 253*77c1e3ccSAndroid Build Coastguard Worker} 254*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 255*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_shr_n_s64(c_v128 a) { 256*77c1e3ccSAndroid Build Coastguard Worker return c_v128_shr_n_s64(a, shift); 257*77c1e3ccSAndroid Build Coastguard Worker} 258*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 259*77c1e3ccSAndroid Build Coastguard Workerc_v128 c_imm_v128_align(c_v128 a, c_v128 b) { 260*77c1e3ccSAndroid Build Coastguard Worker return c_v128_align(a, b, shift); 261*77c1e3ccSAndroid Build Coastguard Worker} 262*77c1e3ccSAndroid Build Coastguard Worker 263*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 264*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shl_n_word(v256 a) { 265*77c1e3ccSAndroid Build Coastguard Worker return v256_shl_n_word(a, shift); 266*77c1e3ccSAndroid Build Coastguard Worker} 267*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 268*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_word(v256 a) { 269*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_word(a, shift); 270*77c1e3ccSAndroid Build Coastguard Worker} 271*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 272*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shl_n_byte(v256 a) { 273*77c1e3ccSAndroid Build Coastguard Worker return v256_shl_n_byte(a, shift); 274*77c1e3ccSAndroid Build Coastguard Worker} 275*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 276*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_byte(v256 a) { 277*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_byte(a, shift); 278*77c1e3ccSAndroid Build Coastguard Worker} 279*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 280*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shl_n_8(v256 a) { 281*77c1e3ccSAndroid Build Coastguard Worker return v256_shl_n_8(a, shift); 282*77c1e3ccSAndroid Build Coastguard Worker} 283*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 284*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_u8(v256 a) { 285*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_u8(a, shift); 286*77c1e3ccSAndroid Build Coastguard Worker} 287*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 288*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_s8(v256 a) { 289*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_s8(a, shift); 290*77c1e3ccSAndroid Build Coastguard Worker} 291*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 292*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shl_n_16(v256 a) { 293*77c1e3ccSAndroid Build Coastguard Worker return v256_shl_n_16(a, shift); 294*77c1e3ccSAndroid Build Coastguard Worker} 295*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 296*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_u16(v256 a) { 297*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_u16(a, shift); 298*77c1e3ccSAndroid Build Coastguard Worker} 299*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 300*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_s16(v256 a) { 301*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_s16(a, shift); 302*77c1e3ccSAndroid Build Coastguard Worker} 303*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 304*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shl_n_32(v256 a) { 305*77c1e3ccSAndroid Build Coastguard Worker return v256_shl_n_32(a, shift); 306*77c1e3ccSAndroid Build Coastguard Worker} 307*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 308*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_u32(v256 a) { 309*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_u32(a, shift); 310*77c1e3ccSAndroid Build Coastguard Worker} 311*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 312*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_s32(v256 a) { 313*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_s32(a, shift); 314*77c1e3ccSAndroid Build Coastguard Worker} 315*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 316*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shl_n_64(v256 a) { 317*77c1e3ccSAndroid Build Coastguard Worker return v256_shl_n_64(a, shift); 318*77c1e3ccSAndroid Build Coastguard Worker} 319*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 320*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_u64(v256 a) { 321*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_u64(a, shift); 322*77c1e3ccSAndroid Build Coastguard Worker} 323*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 324*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_shr_n_s64(v256 a) { 325*77c1e3ccSAndroid Build Coastguard Worker return v256_shr_n_s64(a, shift); 326*77c1e3ccSAndroid Build Coastguard Worker} 327*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 328*77c1e3ccSAndroid Build Coastguard Workerv256 imm_v256_align(v256 a, v256 b) { 329*77c1e3ccSAndroid Build Coastguard Worker return v256_align(a, b, shift); 330*77c1e3ccSAndroid Build Coastguard Worker} 331*77c1e3ccSAndroid Build Coastguard Worker 332*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 333*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shl_n_word(c_v256 a) { 334*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shl_n_word(a, shift); 335*77c1e3ccSAndroid Build Coastguard Worker} 336*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 337*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_word(c_v256 a) { 338*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_word(a, shift); 339*77c1e3ccSAndroid Build Coastguard Worker} 340*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 341*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shl_n_byte(c_v256 a) { 342*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shl_n_byte(a, shift); 343*77c1e3ccSAndroid Build Coastguard Worker} 344*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 345*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_byte(c_v256 a) { 346*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_byte(a, shift); 347*77c1e3ccSAndroid Build Coastguard Worker} 348*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 349*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shl_n_8(c_v256 a) { 350*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shl_n_8(a, shift); 351*77c1e3ccSAndroid Build Coastguard Worker} 352*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 353*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_u8(c_v256 a) { 354*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_u8(a, shift); 355*77c1e3ccSAndroid Build Coastguard Worker} 356*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 357*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_s8(c_v256 a) { 358*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_s8(a, shift); 359*77c1e3ccSAndroid Build Coastguard Worker} 360*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 361*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shl_n_16(c_v256 a) { 362*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shl_n_16(a, shift); 363*77c1e3ccSAndroid Build Coastguard Worker} 364*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 365*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_u16(c_v256 a) { 366*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_u16(a, shift); 367*77c1e3ccSAndroid Build Coastguard Worker} 368*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 369*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_s16(c_v256 a) { 370*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_s16(a, shift); 371*77c1e3ccSAndroid Build Coastguard Worker} 372*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 373*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shl_n_32(c_v256 a) { 374*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shl_n_32(a, shift); 375*77c1e3ccSAndroid Build Coastguard Worker} 376*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 377*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_u32(c_v256 a) { 378*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_u32(a, shift); 379*77c1e3ccSAndroid Build Coastguard Worker} 380*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 381*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_s32(c_v256 a) { 382*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_s32(a, shift); 383*77c1e3ccSAndroid Build Coastguard Worker} 384*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 385*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shl_n_64(c_v256 a) { 386*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shl_n_64(a, shift); 387*77c1e3ccSAndroid Build Coastguard Worker} 388*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 389*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_u64(c_v256 a) { 390*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_u64(a, shift); 391*77c1e3ccSAndroid Build Coastguard Worker} 392*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 393*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_shr_n_s64(c_v256 a) { 394*77c1e3ccSAndroid Build Coastguard Worker return c_v256_shr_n_s64(a, shift); 395*77c1e3ccSAndroid Build Coastguard Worker} 396*77c1e3ccSAndroid Build Coastguard Workertemplate <int shift> 397*77c1e3ccSAndroid Build Coastguard Workerc_v256 c_imm_v256_align(c_v256 a, c_v256 b) { 398*77c1e3ccSAndroid Build Coastguard Worker return c_v256_align(a, b, shift); 399*77c1e3ccSAndroid Build Coastguard Worker} 400*77c1e3ccSAndroid Build Coastguard Worker 401*77c1e3ccSAndroid Build Coastguard Workernamespace { 402*77c1e3ccSAndroid Build Coastguard Worker 403*77c1e3ccSAndroid Build Coastguard Worker// Wrappers around the the SAD and SSD functions 404*77c1e3ccSAndroid Build Coastguard Workeruint32_t v64_sad_u8(v64 a, v64 b) { 405*77c1e3ccSAndroid Build Coastguard Worker return v64_sad_u8_sum(::v64_sad_u8(v64_sad_u8_init(), a, b)); 406*77c1e3ccSAndroid Build Coastguard Worker} 407*77c1e3ccSAndroid Build Coastguard Workeruint32_t v64_ssd_u8(v64 a, v64 b) { 408*77c1e3ccSAndroid Build Coastguard Worker return v64_ssd_u8_sum(::v64_ssd_u8(v64_ssd_u8_init(), a, b)); 409*77c1e3ccSAndroid Build Coastguard Worker} 410*77c1e3ccSAndroid Build Coastguard Worker 411*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v64_sad_u8(c_v64 a, c_v64 b) { 412*77c1e3ccSAndroid Build Coastguard Worker return c_v64_sad_u8_sum(::c_v64_sad_u8(c_v64_sad_u8_init(), a, b)); 413*77c1e3ccSAndroid Build Coastguard Worker} 414*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v64_ssd_u8(c_v64 a, c_v64 b) { 415*77c1e3ccSAndroid Build Coastguard Worker return c_v64_ssd_u8_sum(::c_v64_ssd_u8(c_v64_ssd_u8_init(), a, b)); 416*77c1e3ccSAndroid Build Coastguard Worker} 417*77c1e3ccSAndroid Build Coastguard Workeruint32_t v128_sad_u8(v128 a, v128 b) { 418*77c1e3ccSAndroid Build Coastguard Worker return v128_sad_u8_sum(::v128_sad_u8(v128_sad_u8_init(), a, b)); 419*77c1e3ccSAndroid Build Coastguard Worker} 420*77c1e3ccSAndroid Build Coastguard Workeruint32_t v128_ssd_u8(v128 a, v128 b) { 421*77c1e3ccSAndroid Build Coastguard Worker return v128_ssd_u8_sum(::v128_ssd_u8(v128_ssd_u8_init(), a, b)); 422*77c1e3ccSAndroid Build Coastguard Worker} 423*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v128_sad_u8(c_v128 a, c_v128 b) { 424*77c1e3ccSAndroid Build Coastguard Worker return c_v128_sad_u8_sum(::c_v128_sad_u8(c_v128_sad_u8_init(), a, b)); 425*77c1e3ccSAndroid Build Coastguard Worker} 426*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v128_ssd_u8(c_v128 a, c_v128 b) { 427*77c1e3ccSAndroid Build Coastguard Worker return c_v128_ssd_u8_sum(::c_v128_ssd_u8(c_v128_ssd_u8_init(), a, b)); 428*77c1e3ccSAndroid Build Coastguard Worker} 429*77c1e3ccSAndroid Build Coastguard Workeruint32_t v128_sad_u16(v128 a, v128 b) { 430*77c1e3ccSAndroid Build Coastguard Worker return v128_sad_u16_sum(::v128_sad_u16(v128_sad_u16_init(), a, b)); 431*77c1e3ccSAndroid Build Coastguard Worker} 432*77c1e3ccSAndroid Build Coastguard Workeruint64_t v128_ssd_s16(v128 a, v128 b) { 433*77c1e3ccSAndroid Build Coastguard Worker return v128_ssd_s16_sum(::v128_ssd_s16(v128_ssd_s16_init(), a, b)); 434*77c1e3ccSAndroid Build Coastguard Worker} 435*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v128_sad_u16(c_v128 a, c_v128 b) { 436*77c1e3ccSAndroid Build Coastguard Worker return c_v128_sad_u16_sum(::c_v128_sad_u16(c_v128_sad_u16_init(), a, b)); 437*77c1e3ccSAndroid Build Coastguard Worker} 438*77c1e3ccSAndroid Build Coastguard Workeruint64_t c_v128_ssd_s16(c_v128 a, c_v128 b) { 439*77c1e3ccSAndroid Build Coastguard Worker return c_v128_ssd_s16_sum(::c_v128_ssd_s16(c_v128_ssd_s16_init(), a, b)); 440*77c1e3ccSAndroid Build Coastguard Worker} 441*77c1e3ccSAndroid Build Coastguard Workeruint32_t v256_sad_u8(v256 a, v256 b) { 442*77c1e3ccSAndroid Build Coastguard Worker return v256_sad_u8_sum(::v256_sad_u8(v256_sad_u8_init(), a, b)); 443*77c1e3ccSAndroid Build Coastguard Worker} 444*77c1e3ccSAndroid Build Coastguard Workeruint32_t v256_ssd_u8(v256 a, v256 b) { 445*77c1e3ccSAndroid Build Coastguard Worker return v256_ssd_u8_sum(::v256_ssd_u8(v256_ssd_u8_init(), a, b)); 446*77c1e3ccSAndroid Build Coastguard Worker} 447*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v256_sad_u8(c_v256 a, c_v256 b) { 448*77c1e3ccSAndroid Build Coastguard Worker return c_v256_sad_u8_sum(::c_v256_sad_u8(c_v256_sad_u8_init(), a, b)); 449*77c1e3ccSAndroid Build Coastguard Worker} 450*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v256_ssd_u8(c_v256 a, c_v256 b) { 451*77c1e3ccSAndroid Build Coastguard Worker return c_v256_ssd_u8_sum(::c_v256_ssd_u8(c_v256_ssd_u8_init(), a, b)); 452*77c1e3ccSAndroid Build Coastguard Worker} 453*77c1e3ccSAndroid Build Coastguard Workeruint32_t v256_sad_u16(v256 a, v256 b) { 454*77c1e3ccSAndroid Build Coastguard Worker return v256_sad_u16_sum(::v256_sad_u16(v256_sad_u16_init(), a, b)); 455*77c1e3ccSAndroid Build Coastguard Worker} 456*77c1e3ccSAndroid Build Coastguard Workeruint64_t v256_ssd_s16(v256 a, v256 b) { 457*77c1e3ccSAndroid Build Coastguard Worker return v256_ssd_s16_sum(::v256_ssd_s16(v256_ssd_s16_init(), a, b)); 458*77c1e3ccSAndroid Build Coastguard Worker} 459*77c1e3ccSAndroid Build Coastguard Workeruint32_t c_v256_sad_u16(c_v256 a, c_v256 b) { 460*77c1e3ccSAndroid Build Coastguard Worker return c_v256_sad_u16_sum(::c_v256_sad_u16(c_v256_sad_u16_init(), a, b)); 461*77c1e3ccSAndroid Build Coastguard Worker} 462*77c1e3ccSAndroid Build Coastguard Workeruint64_t c_v256_ssd_s16(c_v256 a, c_v256 b) { 463*77c1e3ccSAndroid Build Coastguard Worker return c_v256_ssd_s16_sum(::c_v256_ssd_s16(c_v256_ssd_s16_init(), a, b)); 464*77c1e3ccSAndroid Build Coastguard Worker} 465*77c1e3ccSAndroid Build Coastguard Worker 466*77c1e3ccSAndroid Build Coastguard Workertypedef void (*fptr)(); 467*77c1e3ccSAndroid Build Coastguard Worker 468*77c1e3ccSAndroid Build Coastguard Workertypedef struct { 469*77c1e3ccSAndroid Build Coastguard Worker const char *name; 470*77c1e3ccSAndroid Build Coastguard Worker fptr ref; 471*77c1e3ccSAndroid Build Coastguard Worker fptr simd; 472*77c1e3ccSAndroid Build Coastguard Worker} mapping; 473*77c1e3ccSAndroid Build Coastguard Worker 474*77c1e3ccSAndroid Build Coastguard Worker#define MAP(name) \ 475*77c1e3ccSAndroid Build Coastguard Worker { #name, reinterpret_cast < fptr>(c_##name), reinterpret_cast < fptr>(name) } 476*77c1e3ccSAndroid Build Coastguard Worker 477*77c1e3ccSAndroid Build Coastguard Workerconst mapping m[] = { MAP(v64_sad_u8), 478*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ssd_u8), 479*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_add_8), 480*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_add_16), 481*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_sadd_s8), 482*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_sadd_u8), 483*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_sadd_s16), 484*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_add_32), 485*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_sub_8), 486*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ssub_u8), 487*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ssub_s8), 488*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_sub_16), 489*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ssub_s16), 490*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ssub_u16), 491*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_sub_32), 492*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ziplo_8), 493*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ziphi_8), 494*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ziplo_16), 495*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ziphi_16), 496*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ziplo_32), 497*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_ziphi_32), 498*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_pack_s32_u16), 499*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_pack_s32_s16), 500*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_pack_s16_u8), 501*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_pack_s16_s8), 502*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unziphi_8), 503*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unziplo_8), 504*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unziphi_16), 505*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unziplo_16), 506*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_or), 507*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_xor), 508*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_and), 509*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_andn), 510*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_mullo_s16), 511*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_mulhi_s16), 512*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_mullo_s32), 513*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_madd_s16), 514*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_madd_us8), 515*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_avg_u8), 516*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_rdavg_u8), 517*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_rdavg_u16), 518*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_avg_u16), 519*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_min_u8), 520*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_max_u8), 521*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_min_s8), 522*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_max_s8), 523*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_min_s16), 524*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_max_s16), 525*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_cmpgt_s8), 526*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_cmplt_s8), 527*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_cmpeq_8), 528*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_cmpgt_s16), 529*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_cmplt_s16), 530*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_cmpeq_16), 531*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shuffle_8), 532*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_align<1>), 533*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_align<2>), 534*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_align<3>), 535*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_align<4>), 536*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_align<5>), 537*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_align<6>), 538*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_align<7>), 539*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_abs_s8), 540*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_abs_s16), 541*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpacklo_u8_s16), 542*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpackhi_u8_s16), 543*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpacklo_s8_s16), 544*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpackhi_s8_s16), 545*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpacklo_u16_s32), 546*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpacklo_s16_s32), 547*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpackhi_u16_s32), 548*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_unpackhi_s16_s32), 549*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_byte<1>), 550*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_byte<2>), 551*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_byte<3>), 552*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_byte<4>), 553*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_byte<5>), 554*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_byte<6>), 555*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_byte<7>), 556*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_byte<1>), 557*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_byte<2>), 558*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_byte<3>), 559*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_byte<4>), 560*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_byte<5>), 561*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_byte<6>), 562*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_byte<7>), 563*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_8<1>), 564*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_8<2>), 565*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_8<3>), 566*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_8<4>), 567*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_8<5>), 568*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_8<6>), 569*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_8<7>), 570*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u8<1>), 571*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u8<2>), 572*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u8<3>), 573*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u8<4>), 574*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u8<5>), 575*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u8<6>), 576*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u8<7>), 577*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s8<1>), 578*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s8<2>), 579*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s8<3>), 580*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s8<4>), 581*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s8<5>), 582*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s8<6>), 583*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s8<7>), 584*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<1>), 585*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<2>), 586*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<4>), 587*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<6>), 588*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<8>), 589*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<10>), 590*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<12>), 591*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_16<14>), 592*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<1>), 593*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<2>), 594*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<4>), 595*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<6>), 596*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<8>), 597*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<10>), 598*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<12>), 599*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u16<14>), 600*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<1>), 601*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<2>), 602*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<4>), 603*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<6>), 604*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<8>), 605*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<10>), 606*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<12>), 607*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s16<14>), 608*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<1>), 609*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<4>), 610*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<8>), 611*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<12>), 612*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<16>), 613*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<20>), 614*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<24>), 615*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shl_n_32<28>), 616*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<1>), 617*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<4>), 618*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<8>), 619*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<12>), 620*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<16>), 621*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<20>), 622*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<24>), 623*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_u32<28>), 624*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<1>), 625*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<4>), 626*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<8>), 627*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<12>), 628*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<16>), 629*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<20>), 630*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<24>), 631*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v64_shr_n_s32<28>), 632*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shl_8), 633*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shr_u8), 634*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shr_s8), 635*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shl_16), 636*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shr_u16), 637*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shr_s16), 638*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shl_32), 639*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shr_u32), 640*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_shr_s32), 641*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_hadd_u8), 642*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_hadd_s16), 643*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_dotp_s16), 644*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_dotp_su8), 645*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_u64), 646*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_low_u32), 647*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_high_u32), 648*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_low_s32), 649*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_high_s32), 650*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_dup_8), 651*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_dup_16), 652*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_dup_32), 653*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_from_32), 654*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_zero), 655*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_from_16), 656*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sad_u8), 657*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ssd_u8), 658*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sad_u16), 659*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ssd_s16), 660*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_add_8), 661*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_add_16), 662*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sadd_s8), 663*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sadd_u8), 664*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sadd_s16), 665*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_add_32), 666*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_add_64), 667*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sub_8), 668*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ssub_u8), 669*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ssub_s8), 670*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sub_16), 671*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ssub_s16), 672*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ssub_u16), 673*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sub_32), 674*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_sub_64), 675*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziplo_8), 676*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziphi_8), 677*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziplo_16), 678*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziphi_16), 679*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziplo_32), 680*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziphi_32), 681*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziplo_64), 682*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_ziphi_64), 683*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unziphi_8), 684*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unziplo_8), 685*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unziphi_16), 686*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unziplo_16), 687*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unziphi_32), 688*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unziplo_32), 689*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_pack_s32_u16), 690*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_pack_s32_s16), 691*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_pack_s16_u8), 692*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_pack_s16_s8), 693*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_or), 694*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_xor), 695*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_and), 696*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_andn), 697*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_mullo_s16), 698*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_mulhi_s16), 699*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_mullo_s32), 700*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_madd_s16), 701*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_madd_us8), 702*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_avg_u8), 703*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_rdavg_u8), 704*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_rdavg_u16), 705*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_avg_u16), 706*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_min_u8), 707*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_max_u8), 708*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_min_s8), 709*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_max_s8), 710*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_min_s16), 711*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_max_s16), 712*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_min_s32), 713*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_max_s32), 714*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmpgt_s8), 715*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmplt_s8), 716*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmpeq_8), 717*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmpgt_s16), 718*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmpeq_16), 719*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmplt_s16), 720*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmpgt_s32), 721*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmpeq_32), 722*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_cmplt_s32), 723*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shuffle_8), 724*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<1>), 725*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<2>), 726*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<3>), 727*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<4>), 728*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<5>), 729*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<6>), 730*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<7>), 731*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<8>), 732*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<9>), 733*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<10>), 734*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<11>), 735*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<12>), 736*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<13>), 737*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<14>), 738*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_align<15>), 739*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_abs_s8), 740*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_abs_s16), 741*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_padd_u8), 742*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_padd_s16), 743*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpacklo_u16_s32), 744*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpacklo_s16_s32), 745*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpackhi_u16_s32), 746*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpackhi_s16_s32), 747*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<1>), 748*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<2>), 749*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<3>), 750*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<4>), 751*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<5>), 752*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<6>), 753*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<7>), 754*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<8>), 755*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<9>), 756*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<10>), 757*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<11>), 758*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<12>), 759*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<13>), 760*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<14>), 761*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_byte<15>), 762*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<1>), 763*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<2>), 764*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<3>), 765*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<4>), 766*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<5>), 767*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<6>), 768*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<7>), 769*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<8>), 770*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<9>), 771*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<10>), 772*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<11>), 773*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<12>), 774*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<13>), 775*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<14>), 776*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_byte<15>), 777*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_8<1>), 778*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_8<2>), 779*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_8<3>), 780*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_8<4>), 781*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_8<5>), 782*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_8<6>), 783*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_8<7>), 784*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u8<1>), 785*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u8<2>), 786*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u8<3>), 787*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u8<4>), 788*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u8<5>), 789*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u8<6>), 790*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u8<7>), 791*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s8<1>), 792*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s8<2>), 793*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s8<3>), 794*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s8<4>), 795*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s8<5>), 796*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s8<6>), 797*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s8<7>), 798*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<1>), 799*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<2>), 800*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<4>), 801*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<6>), 802*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<8>), 803*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<10>), 804*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<12>), 805*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_16<14>), 806*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<1>), 807*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<2>), 808*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<4>), 809*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<6>), 810*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<8>), 811*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<10>), 812*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<12>), 813*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u16<14>), 814*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<1>), 815*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<2>), 816*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<4>), 817*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<6>), 818*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<8>), 819*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<10>), 820*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<12>), 821*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s16<14>), 822*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<1>), 823*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<4>), 824*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<8>), 825*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<12>), 826*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<16>), 827*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<20>), 828*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<24>), 829*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_32<28>), 830*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<1>), 831*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<4>), 832*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<8>), 833*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<12>), 834*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<16>), 835*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<20>), 836*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<24>), 837*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u32<28>), 838*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<1>), 839*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<4>), 840*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<8>), 841*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<12>), 842*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<16>), 843*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<20>), 844*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<24>), 845*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s32<28>), 846*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<1>), 847*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<4>), 848*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<8>), 849*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<12>), 850*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<16>), 851*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<20>), 852*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<24>), 853*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<28>), 854*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<32>), 855*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<36>), 856*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<40>), 857*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<44>), 858*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<48>), 859*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<52>), 860*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<56>), 861*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shl_n_64<60>), 862*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<1>), 863*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<4>), 864*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<8>), 865*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<12>), 866*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<16>), 867*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<20>), 868*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<24>), 869*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<28>), 870*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<32>), 871*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<36>), 872*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<40>), 873*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<44>), 874*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<48>), 875*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<52>), 876*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<56>), 877*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_u64<60>), 878*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<1>), 879*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<4>), 880*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<8>), 881*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<12>), 882*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<16>), 883*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<20>), 884*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<24>), 885*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<28>), 886*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<32>), 887*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<36>), 888*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<40>), 889*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<44>), 890*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<48>), 891*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<52>), 892*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<56>), 893*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v128_shr_n_s64<60>), 894*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_from_v64), 895*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_zip_8), 896*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_zip_16), 897*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_zip_32), 898*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_mul_s16), 899*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpack_u8_s16), 900*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpack_s8_s16), 901*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpack_u16_s32), 902*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpack_s16_s32), 903*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shl_8), 904*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_u8), 905*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_s8), 906*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shl_16), 907*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_u16), 908*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_s16), 909*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shl_32), 910*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_u32), 911*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_s32), 912*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shl_64), 913*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_u64), 914*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_shr_s64), 915*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_hadd_u8), 916*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_dotp_su8), 917*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_dotp_s16), 918*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_dotp_s32), 919*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_low_u32), 920*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_low_v64), 921*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_high_v64), 922*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_from_64), 923*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_from_32), 924*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_movemask_8), 925*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_zero), 926*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_dup_8), 927*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_dup_16), 928*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_dup_32), 929*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_dup_64), 930*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpacklo_u8_s16), 931*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpackhi_u8_s16), 932*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpacklo_s8_s16), 933*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_unpackhi_s8_s16), 934*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_blend_8), 935*77c1e3ccSAndroid Build Coastguard Worker MAP(u32_load_unaligned), 936*77c1e3ccSAndroid Build Coastguard Worker MAP(u32_store_unaligned), 937*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_load_unaligned), 938*77c1e3ccSAndroid Build Coastguard Worker MAP(v64_store_unaligned), 939*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_load_unaligned), 940*77c1e3ccSAndroid Build Coastguard Worker MAP(v128_store_unaligned), 941*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sad_u8), 942*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ssd_u8), 943*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sad_u16), 944*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ssd_s16), 945*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_hadd_u8), 946*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_low_u64), 947*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_dotp_su8), 948*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_dotp_s16), 949*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_dotp_s32), 950*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_add_8), 951*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_add_16), 952*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sadd_s8), 953*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sadd_u8), 954*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sadd_s16), 955*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_add_32), 956*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_add_64), 957*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sub_8), 958*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ssub_u8), 959*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ssub_s8), 960*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sub_16), 961*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ssub_u16), 962*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ssub_s16), 963*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sub_32), 964*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_sub_64), 965*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziplo_8), 966*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziphi_8), 967*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziplo_16), 968*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziphi_16), 969*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziplo_32), 970*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziphi_32), 971*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziplo_64), 972*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziphi_64), 973*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziphi_8), 974*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziplo_8), 975*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziphi_16), 976*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziplo_16), 977*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziphi_32), 978*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziplo_32), 979*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziphi_64), 980*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unziplo_64), 981*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_pack_s32_u16), 982*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_pack_s32_s16), 983*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_pack_s16_u8), 984*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_pack_s16_s8), 985*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_or), 986*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_xor), 987*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_and), 988*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_andn), 989*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_mullo_s16), 990*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_mulhi_s16), 991*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_mullo_s32), 992*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_madd_s16), 993*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_madd_us8), 994*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_avg_u8), 995*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_rdavg_u8), 996*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_rdavg_u16), 997*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_avg_u16), 998*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_min_u8), 999*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_max_u8), 1000*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_min_s8), 1001*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_max_s8), 1002*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_min_s16), 1003*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_max_s16), 1004*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_min_s32), 1005*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_max_s32), 1006*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmpgt_s8), 1007*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmplt_s8), 1008*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmpeq_8), 1009*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmpgt_s16), 1010*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmplt_s16), 1011*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmpeq_16), 1012*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmpgt_s32), 1013*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmplt_s32), 1014*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_cmpeq_32), 1015*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shuffle_8), 1016*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_pshuffle_8), 1017*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_wideshuffle_8), 1018*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<1>), 1019*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<2>), 1020*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<3>), 1021*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<4>), 1022*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<5>), 1023*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<6>), 1024*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<7>), 1025*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<8>), 1026*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<9>), 1027*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<10>), 1028*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<11>), 1029*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<12>), 1030*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<13>), 1031*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<14>), 1032*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<15>), 1033*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<16>), 1034*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<17>), 1035*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<18>), 1036*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<19>), 1037*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<20>), 1038*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<21>), 1039*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<22>), 1040*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<23>), 1041*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<24>), 1042*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<25>), 1043*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<26>), 1044*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<27>), 1045*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<28>), 1046*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<29>), 1047*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<30>), 1048*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_align<31>), 1049*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_from_v128), 1050*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_zip_8), 1051*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_zip_16), 1052*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_zip_32), 1053*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_mul_s16), 1054*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpack_u8_s16), 1055*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpack_s8_s16), 1056*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpack_u16_s32), 1057*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpack_s16_s32), 1058*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shl_8), 1059*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_u8), 1060*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_s8), 1061*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shl_16), 1062*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_u16), 1063*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_s16), 1064*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shl_32), 1065*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_u32), 1066*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_s32), 1067*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shl_64), 1068*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_u64), 1069*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_shr_s64), 1070*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_abs_s8), 1071*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_abs_s16), 1072*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_padd_u8), 1073*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_padd_s16), 1074*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpacklo_u16_s32), 1075*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpacklo_s16_s32), 1076*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpackhi_u16_s32), 1077*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpackhi_s16_s32), 1078*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<1>), 1079*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<2>), 1080*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<3>), 1081*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<4>), 1082*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<5>), 1083*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<6>), 1084*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<7>), 1085*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<8>), 1086*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<9>), 1087*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<10>), 1088*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<11>), 1089*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<12>), 1090*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<13>), 1091*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<14>), 1092*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_word<15>), 1093*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<1>), 1094*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<2>), 1095*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<3>), 1096*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<4>), 1097*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<5>), 1098*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<6>), 1099*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<7>), 1100*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<8>), 1101*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<9>), 1102*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<10>), 1103*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<11>), 1104*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<12>), 1105*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<13>), 1106*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<14>), 1107*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_word<15>), 1108*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<1>), 1109*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<2>), 1110*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<3>), 1111*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<4>), 1112*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<5>), 1113*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<6>), 1114*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<7>), 1115*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<8>), 1116*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<9>), 1117*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<10>), 1118*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<11>), 1119*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<12>), 1120*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<13>), 1121*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<14>), 1122*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<15>), 1123*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<16>), 1124*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<17>), 1125*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<18>), 1126*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<19>), 1127*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<20>), 1128*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<21>), 1129*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<22>), 1130*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<23>), 1131*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<24>), 1132*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<25>), 1133*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<26>), 1134*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<27>), 1135*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<28>), 1136*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<29>), 1137*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<30>), 1138*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_byte<31>), 1139*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<1>), 1140*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<2>), 1141*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<3>), 1142*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<4>), 1143*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<5>), 1144*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<6>), 1145*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<7>), 1146*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<8>), 1147*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<9>), 1148*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<10>), 1149*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<11>), 1150*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<12>), 1151*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<13>), 1152*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<14>), 1153*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<15>), 1154*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<16>), 1155*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<17>), 1156*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<18>), 1157*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<19>), 1158*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<20>), 1159*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<21>), 1160*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<22>), 1161*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<23>), 1162*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<24>), 1163*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<25>), 1164*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<26>), 1165*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<27>), 1166*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<28>), 1167*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<29>), 1168*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<30>), 1169*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_byte<31>), 1170*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_8<1>), 1171*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_8<2>), 1172*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_8<3>), 1173*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_8<4>), 1174*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_8<5>), 1175*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_8<6>), 1176*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_8<7>), 1177*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u8<1>), 1178*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u8<2>), 1179*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u8<3>), 1180*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u8<4>), 1181*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u8<5>), 1182*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u8<6>), 1183*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u8<7>), 1184*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s8<1>), 1185*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s8<2>), 1186*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s8<3>), 1187*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s8<4>), 1188*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s8<5>), 1189*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s8<6>), 1190*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s8<7>), 1191*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<1>), 1192*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<2>), 1193*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<4>), 1194*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<6>), 1195*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<8>), 1196*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<10>), 1197*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<12>), 1198*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_16<14>), 1199*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<1>), 1200*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<2>), 1201*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<4>), 1202*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<6>), 1203*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<8>), 1204*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<10>), 1205*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<12>), 1206*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u16<14>), 1207*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<1>), 1208*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<2>), 1209*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<4>), 1210*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<6>), 1211*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<8>), 1212*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<10>), 1213*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<12>), 1214*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s16<14>), 1215*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<1>), 1216*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<4>), 1217*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<8>), 1218*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<12>), 1219*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<16>), 1220*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<20>), 1221*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<24>), 1222*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_32<28>), 1223*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<1>), 1224*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<4>), 1225*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<8>), 1226*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<12>), 1227*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<16>), 1228*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<20>), 1229*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<24>), 1230*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u32<28>), 1231*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<1>), 1232*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<4>), 1233*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<8>), 1234*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<12>), 1235*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<16>), 1236*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<20>), 1237*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<24>), 1238*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s32<28>), 1239*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<1>), 1240*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<4>), 1241*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<8>), 1242*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<12>), 1243*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<16>), 1244*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<20>), 1245*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<24>), 1246*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<28>), 1247*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<32>), 1248*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<36>), 1249*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<40>), 1250*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<44>), 1251*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<48>), 1252*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<52>), 1253*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<56>), 1254*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shl_n_64<60>), 1255*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<1>), 1256*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<4>), 1257*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<8>), 1258*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<12>), 1259*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<16>), 1260*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<20>), 1261*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<24>), 1262*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<28>), 1263*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<32>), 1264*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<36>), 1265*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<40>), 1266*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<44>), 1267*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<48>), 1268*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<52>), 1269*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<56>), 1270*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_u64<60>), 1271*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<1>), 1272*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<4>), 1273*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<8>), 1274*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<12>), 1275*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<16>), 1276*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<20>), 1277*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<24>), 1278*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<28>), 1279*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<32>), 1280*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<36>), 1281*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<40>), 1282*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<44>), 1283*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<48>), 1284*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<52>), 1285*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<56>), 1286*77c1e3ccSAndroid Build Coastguard Worker MAP(imm_v256_shr_n_s64<60>), 1287*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_movemask_8), 1288*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_zero), 1289*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_dup_8), 1290*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_dup_16), 1291*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_dup_32), 1292*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_dup_64), 1293*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_low_u32), 1294*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_low_v64), 1295*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_from_64), 1296*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_from_v64), 1297*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziplo_128), 1298*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_ziphi_128), 1299*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpacklo_u8_s16), 1300*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpackhi_u8_s16), 1301*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpacklo_s8_s16), 1302*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_unpackhi_s8_s16), 1303*77c1e3ccSAndroid Build Coastguard Worker MAP(v256_blend_8), 1304*77c1e3ccSAndroid Build Coastguard Worker { nullptr, nullptr, nullptr } }; 1305*77c1e3ccSAndroid Build Coastguard Worker#undef MAP 1306*77c1e3ccSAndroid Build Coastguard Worker 1307*77c1e3ccSAndroid Build Coastguard Worker// Map reference functions to machine tuned functions. Since the 1308*77c1e3ccSAndroid Build Coastguard Worker// functions depend on machine tuned types, the non-machine tuned 1309*77c1e3ccSAndroid Build Coastguard Worker// instantiations of the test can't refer to these functions directly, 1310*77c1e3ccSAndroid Build Coastguard Worker// so we refer to them by name and do the mapping here. 1311*77c1e3ccSAndroid Build Coastguard Workervoid Map(const char *name, fptr *ref, fptr *simd) { 1312*77c1e3ccSAndroid Build Coastguard Worker unsigned int i; 1313*77c1e3ccSAndroid Build Coastguard Worker for (i = 0; m[i].name && strcmp(name, m[i].name); i++) { 1314*77c1e3ccSAndroid Build Coastguard Worker } 1315*77c1e3ccSAndroid Build Coastguard Worker 1316*77c1e3ccSAndroid Build Coastguard Worker *ref = m[i].ref; 1317*77c1e3ccSAndroid Build Coastguard Worker *simd = m[i].simd; 1318*77c1e3ccSAndroid Build Coastguard Worker} 1319*77c1e3ccSAndroid Build Coastguard Worker 1320*77c1e3ccSAndroid Build Coastguard Worker// Used for printing errors in TestSimd1Arg, TestSimd2Args and TestSimd3Args 1321*77c1e3ccSAndroid Build Coastguard Workerstd::string Print(const uint8_t *a, int size) { 1322*77c1e3ccSAndroid Build Coastguard Worker std::string text = "0x"; 1323*77c1e3ccSAndroid Build Coastguard Worker for (int i = 0; i < size; i++) { 1324*77c1e3ccSAndroid Build Coastguard Worker const uint8_t c = a[!CONFIG_BIG_ENDIAN ? size - 1 - i : i]; 1325*77c1e3ccSAndroid Build Coastguard Worker // Same as snprintf(..., ..., "%02x", c) 1326*77c1e3ccSAndroid Build Coastguard Worker text += (c >> 4) + '0' + ((c >> 4) > 9) * ('a' - '0' - 10); 1327*77c1e3ccSAndroid Build Coastguard Worker text += (c & 15) + '0' + ((c & 15) > 9) * ('a' - '0' - 10); 1328*77c1e3ccSAndroid Build Coastguard Worker } 1329*77c1e3ccSAndroid Build Coastguard Worker 1330*77c1e3ccSAndroid Build Coastguard Worker return text; 1331*77c1e3ccSAndroid Build Coastguard Worker} 1332*77c1e3ccSAndroid Build Coastguard Worker 1333*77c1e3ccSAndroid Build Coastguard Worker// Used in TestSimd1Arg, TestSimd2Args and TestSimd3Args to restrict argument 1334*77c1e3ccSAndroid Build Coastguard Worker// ranges 1335*77c1e3ccSAndroid Build Coastguard Workervoid SetMask(uint8_t *s, int size, uint32_t mask, uint32_t maskwidth) { 1336*77c1e3ccSAndroid Build Coastguard Worker switch (maskwidth) { 1337*77c1e3ccSAndroid Build Coastguard Worker case 0: { 1338*77c1e3ccSAndroid Build Coastguard Worker break; 1339*77c1e3ccSAndroid Build Coastguard Worker } 1340*77c1e3ccSAndroid Build Coastguard Worker case 8: { 1341*77c1e3ccSAndroid Build Coastguard Worker for (int i = 0; i < size; i++) s[i] &= mask; 1342*77c1e3ccSAndroid Build Coastguard Worker break; 1343*77c1e3ccSAndroid Build Coastguard Worker } 1344*77c1e3ccSAndroid Build Coastguard Worker case 16: { 1345*77c1e3ccSAndroid Build Coastguard Worker uint16_t *t = reinterpret_cast<uint16_t *>(s); 1346*77c1e3ccSAndroid Build Coastguard Worker assert(!(reinterpret_cast<uintptr_t>(s) & 1)); 1347*77c1e3ccSAndroid Build Coastguard Worker for (int i = 0; i < size / 2; i++) t[i] &= mask; 1348*77c1e3ccSAndroid Build Coastguard Worker break; 1349*77c1e3ccSAndroid Build Coastguard Worker } 1350*77c1e3ccSAndroid Build Coastguard Worker case 32: { 1351*77c1e3ccSAndroid Build Coastguard Worker uint32_t *t = reinterpret_cast<uint32_t *>(s); 1352*77c1e3ccSAndroid Build Coastguard Worker assert(!(reinterpret_cast<uintptr_t>(s) & 3)); 1353*77c1e3ccSAndroid Build Coastguard Worker for (int i = 0; i < size / 4; i++) t[i] &= mask; 1354*77c1e3ccSAndroid Build Coastguard Worker break; 1355*77c1e3ccSAndroid Build Coastguard Worker } 1356*77c1e3ccSAndroid Build Coastguard Worker case 64: { 1357*77c1e3ccSAndroid Build Coastguard Worker uint64_t *t = reinterpret_cast<uint64_t *>(s); 1358*77c1e3ccSAndroid Build Coastguard Worker assert(!(reinterpret_cast<uintptr_t>(s) & 7)); 1359*77c1e3ccSAndroid Build Coastguard Worker for (int i = 0; i < size / 8; i++) t[i] &= mask; 1360*77c1e3ccSAndroid Build Coastguard Worker break; 1361*77c1e3ccSAndroid Build Coastguard Worker } 1362*77c1e3ccSAndroid Build Coastguard Worker default: { 1363*77c1e3ccSAndroid Build Coastguard Worker FAIL() << "Unsupported mask width"; 1364*77c1e3ccSAndroid Build Coastguard Worker break; 1365*77c1e3ccSAndroid Build Coastguard Worker } 1366*77c1e3ccSAndroid Build Coastguard Worker } 1367*77c1e3ccSAndroid Build Coastguard Worker} 1368*77c1e3ccSAndroid Build Coastguard Worker 1369*77c1e3ccSAndroid Build Coastguard Worker// We need some extra load/store functions 1370*77c1e3ccSAndroid Build Coastguard Workervoid u64_store_aligned(void *p, uint64_t a) { 1371*77c1e3ccSAndroid Build Coastguard Worker v64_store_aligned(p, v64_from_64(a)); 1372*77c1e3ccSAndroid Build Coastguard Worker} 1373*77c1e3ccSAndroid Build Coastguard Workervoid s32_store_aligned(void *p, int32_t a) { 1374*77c1e3ccSAndroid Build Coastguard Worker u32_store_aligned(p, static_cast<uint32_t>(a)); 1375*77c1e3ccSAndroid Build Coastguard Worker} 1376*77c1e3ccSAndroid Build Coastguard Workervoid s64_store_aligned(void *p, int64_t a) { 1377*77c1e3ccSAndroid Build Coastguard Worker v64_store_aligned(p, v64_from_64(static_cast<uint64_t>(a))); 1378*77c1e3ccSAndroid Build Coastguard Worker} 1379*77c1e3ccSAndroid Build Coastguard Worker 1380*77c1e3ccSAndroid Build Coastguard Workervoid c_u64_store_aligned(void *p, uint64_t a) { 1381*77c1e3ccSAndroid Build Coastguard Worker c_v64_store_aligned(p, c_v64_from_64(a)); 1382*77c1e3ccSAndroid Build Coastguard Worker} 1383*77c1e3ccSAndroid Build Coastguard Worker 1384*77c1e3ccSAndroid Build Coastguard Workervoid c_s32_store_aligned(void *p, int32_t a) { 1385*77c1e3ccSAndroid Build Coastguard Worker c_u32_store_aligned(p, static_cast<uint32_t>(a)); 1386*77c1e3ccSAndroid Build Coastguard Worker} 1387*77c1e3ccSAndroid Build Coastguard Worker 1388*77c1e3ccSAndroid Build Coastguard Workervoid c_s64_store_aligned(void *p, int64_t a) { 1389*77c1e3ccSAndroid Build Coastguard Worker c_v64_store_aligned(p, c_v64_from_64(static_cast<uint64_t>(a))); 1390*77c1e3ccSAndroid Build Coastguard Worker} 1391*77c1e3ccSAndroid Build Coastguard Worker 1392*77c1e3ccSAndroid Build Coastguard Workeruint64_t u64_load_aligned(const void *p) { 1393*77c1e3ccSAndroid Build Coastguard Worker return v64_u64(v64_load_aligned(p)); 1394*77c1e3ccSAndroid Build Coastguard Worker} 1395*77c1e3ccSAndroid Build Coastguard Workeruint16_t u16_load_aligned(const void *p) { 1396*77c1e3ccSAndroid Build Coastguard Worker return *(reinterpret_cast<const uint16_t *>(p)); 1397*77c1e3ccSAndroid Build Coastguard Worker} 1398*77c1e3ccSAndroid Build Coastguard Workeruint8_t u8_load_aligned(const void *p) { 1399*77c1e3ccSAndroid Build Coastguard Worker return *(reinterpret_cast<const uint8_t *>(p)); 1400*77c1e3ccSAndroid Build Coastguard Worker} 1401*77c1e3ccSAndroid Build Coastguard Worker 1402*77c1e3ccSAndroid Build Coastguard Workeruint64_t c_u64_load_aligned(const void *p) { 1403*77c1e3ccSAndroid Build Coastguard Worker return c_v64_u64(c_v64_load_aligned(p)); 1404*77c1e3ccSAndroid Build Coastguard Worker} 1405*77c1e3ccSAndroid Build Coastguard Workeruint16_t c_u16_load_aligned(const void *p) { 1406*77c1e3ccSAndroid Build Coastguard Worker return *(reinterpret_cast<const uint16_t *>(p)); 1407*77c1e3ccSAndroid Build Coastguard Worker} 1408*77c1e3ccSAndroid Build Coastguard Workeruint8_t c_u8_load_aligned(const void *p) { 1409*77c1e3ccSAndroid Build Coastguard Worker return *(reinterpret_cast<const uint8_t *>(p)); 1410*77c1e3ccSAndroid Build Coastguard Worker} 1411*77c1e3ccSAndroid Build Coastguard Worker 1412*77c1e3ccSAndroid Build Coastguard Worker// CompareSimd1Arg, CompareSimd2Args and CompareSimd3Args compare 1413*77c1e3ccSAndroid Build Coastguard Worker// intrinsics taking 1, 2 or 3 arguments respectively with their 1414*77c1e3ccSAndroid Build Coastguard Worker// corresponding C reference. Ideally, the loads and stores should 1415*77c1e3ccSAndroid Build Coastguard Worker// have gone into the template parameter list, but v64 and v128 could 1416*77c1e3ccSAndroid Build Coastguard Worker// be typedef'ed to the same type (which is the case on x86) and then 1417*77c1e3ccSAndroid Build Coastguard Worker// we can't instantiate both v64 and v128, so the function return and 1418*77c1e3ccSAndroid Build Coastguard Worker// argument types, including the always differing types in the C 1419*77c1e3ccSAndroid Build Coastguard Worker// equivalent are used instead. The function arguments must be void 1420*77c1e3ccSAndroid Build Coastguard Worker// pointers and then go through a cast to avoid matching errors in the 1421*77c1e3ccSAndroid Build Coastguard Worker// branches eliminated by the typeid tests in the calling function. 1422*77c1e3ccSAndroid Build Coastguard Workertemplate <typename Ret, typename Arg, typename CRet, typename CArg> 1423*77c1e3ccSAndroid Build Coastguard Workerint CompareSimd1Arg(fptr store, fptr load, fptr simd, void *d, fptr c_store, 1424*77c1e3ccSAndroid Build Coastguard Worker fptr c_load, fptr c_simd, void *ref_d, const void *a) { 1425*77c1e3ccSAndroid Build Coastguard Worker void (*const my_store)(void *, Ret) = (void (*const)(void *, Ret))store; 1426*77c1e3ccSAndroid Build Coastguard Worker Arg (*const my_load)(const void *) = (Arg(*const)(const void *))load; 1427*77c1e3ccSAndroid Build Coastguard Worker Ret (*const my_simd)(Arg) = (Ret(*const)(Arg))simd; 1428*77c1e3ccSAndroid Build Coastguard Worker void (*const my_c_store)(void *, CRet) = (void (*const)(void *, CRet))c_store; 1429*77c1e3ccSAndroid Build Coastguard Worker CArg (*const my_c_load)(const void *) = (CArg(*const)(const void *))c_load; 1430*77c1e3ccSAndroid Build Coastguard Worker CRet (*const my_c_simd)(CArg) = (CRet(*const)(CArg))c_simd; 1431*77c1e3ccSAndroid Build Coastguard Worker 1432*77c1e3ccSAndroid Build Coastguard Worker // Call reference and intrinsic 1433*77c1e3ccSAndroid Build Coastguard Worker my_c_store(ref_d, my_c_simd(my_c_load(a))); 1434*77c1e3ccSAndroid Build Coastguard Worker my_store(d, my_simd(my_load(a))); 1435*77c1e3ccSAndroid Build Coastguard Worker 1436*77c1e3ccSAndroid Build Coastguard Worker // Compare results 1437*77c1e3ccSAndroid Build Coastguard Worker return memcmp(ref_d, d, sizeof(CRet)); 1438*77c1e3ccSAndroid Build Coastguard Worker} 1439*77c1e3ccSAndroid Build Coastguard Worker 1440*77c1e3ccSAndroid Build Coastguard Workertemplate <typename Ret, typename Arg1, typename Arg2, typename CRet, 1441*77c1e3ccSAndroid Build Coastguard Worker typename CArg1, typename CArg2> 1442*77c1e3ccSAndroid Build Coastguard Workerint CompareSimd2Args(fptr store, fptr load1, fptr load2, fptr simd, void *d, 1443*77c1e3ccSAndroid Build Coastguard Worker fptr c_store, fptr c_load1, fptr c_load2, fptr c_simd, 1444*77c1e3ccSAndroid Build Coastguard Worker void *ref_d, const void *a, const void *b) { 1445*77c1e3ccSAndroid Build Coastguard Worker void (*const my_store)(void *, Ret) = (void (*const)(void *, Ret))store; 1446*77c1e3ccSAndroid Build Coastguard Worker Arg1 (*const my_load1)(const void *) = (Arg1(*const)(const void *))load1; 1447*77c1e3ccSAndroid Build Coastguard Worker Arg2 (*const my_load2)(const void *) = (Arg2(*const)(const void *))load2; 1448*77c1e3ccSAndroid Build Coastguard Worker Ret (*const my_simd)(Arg1, Arg2) = (Ret(*const)(Arg1, Arg2))simd; 1449*77c1e3ccSAndroid Build Coastguard Worker void (*const my_c_store)(void *, CRet) = (void (*const)(void *, CRet))c_store; 1450*77c1e3ccSAndroid Build Coastguard Worker CArg1 (*const my_c_load1)(const void *) = 1451*77c1e3ccSAndroid Build Coastguard Worker (CArg1(*const)(const void *))c_load1; 1452*77c1e3ccSAndroid Build Coastguard Worker CArg2 (*const my_c_load2)(const void *) = 1453*77c1e3ccSAndroid Build Coastguard Worker (CArg2(*const)(const void *))c_load2; 1454*77c1e3ccSAndroid Build Coastguard Worker CRet (*const my_c_simd)(CArg1, CArg2) = (CRet(*const)(CArg1, CArg2))c_simd; 1455*77c1e3ccSAndroid Build Coastguard Worker 1456*77c1e3ccSAndroid Build Coastguard Worker // Call reference and intrinsic 1457*77c1e3ccSAndroid Build Coastguard Worker my_c_store(ref_d, my_c_simd(my_c_load1(a), my_c_load2(b))); 1458*77c1e3ccSAndroid Build Coastguard Worker my_store(d, my_simd(my_load1(a), my_load2(b))); 1459*77c1e3ccSAndroid Build Coastguard Worker 1460*77c1e3ccSAndroid Build Coastguard Worker // Compare results 1461*77c1e3ccSAndroid Build Coastguard Worker return memcmp(ref_d, d, sizeof(CRet)); 1462*77c1e3ccSAndroid Build Coastguard Worker} 1463*77c1e3ccSAndroid Build Coastguard Worker 1464*77c1e3ccSAndroid Build Coastguard Workertemplate <typename Ret, typename Arg1, typename Arg2, typename Arg3, 1465*77c1e3ccSAndroid Build Coastguard Worker typename CRet, typename CArg1, typename CArg2, typename CArg3> 1466*77c1e3ccSAndroid Build Coastguard Workerint CompareSimd3Args(fptr store, fptr load1, fptr load2, fptr load3, fptr simd, 1467*77c1e3ccSAndroid Build Coastguard Worker void *d, fptr c_store, fptr c_load1, fptr c_load2, 1468*77c1e3ccSAndroid Build Coastguard Worker fptr c_load3, fptr c_simd, void *ref_d, const void *a, 1469*77c1e3ccSAndroid Build Coastguard Worker const void *b, const void *c) { 1470*77c1e3ccSAndroid Build Coastguard Worker void (*const my_store)(void *, Ret) = (void (*const)(void *, Ret))store; 1471*77c1e3ccSAndroid Build Coastguard Worker Arg1 (*const my_load1)(const void *) = (Arg1(*const)(const void *))load1; 1472*77c1e3ccSAndroid Build Coastguard Worker Arg2 (*const my_load2)(const void *) = (Arg2(*const)(const void *))load2; 1473*77c1e3ccSAndroid Build Coastguard Worker Arg3 (*const my_load3)(const void *) = (Arg3(*const)(const void *))load3; 1474*77c1e3ccSAndroid Build Coastguard Worker Ret (*const my_simd)(Arg1, Arg2, Arg3) = (Ret(*const)(Arg1, Arg2, Arg3))simd; 1475*77c1e3ccSAndroid Build Coastguard Worker void (*const my_c_store)(void *, CRet) = (void (*const)(void *, CRet))c_store; 1476*77c1e3ccSAndroid Build Coastguard Worker CArg1 (*const my_c_load1)(const void *) = 1477*77c1e3ccSAndroid Build Coastguard Worker (CArg1(*const)(const void *))c_load1; 1478*77c1e3ccSAndroid Build Coastguard Worker CArg2 (*const my_c_load2)(const void *) = 1479*77c1e3ccSAndroid Build Coastguard Worker (CArg2(*const)(const void *))c_load2; 1480*77c1e3ccSAndroid Build Coastguard Worker CArg3 (*const my_c_load3)(const void *) = 1481*77c1e3ccSAndroid Build Coastguard Worker (CArg3(*const)(const void *))c_load3; 1482*77c1e3ccSAndroid Build Coastguard Worker CRet (*const my_c_simd)(CArg1, CArg2, CArg3) = 1483*77c1e3ccSAndroid Build Coastguard Worker (CRet(*const)(CArg1, CArg2, CArg3))c_simd; 1484*77c1e3ccSAndroid Build Coastguard Worker 1485*77c1e3ccSAndroid Build Coastguard Worker // Call reference and intrinsic 1486*77c1e3ccSAndroid Build Coastguard Worker my_c_store(ref_d, my_c_simd(my_c_load1(a), my_c_load2(b), my_c_load3(c))); 1487*77c1e3ccSAndroid Build Coastguard Worker my_store(d, my_simd(my_load1(a), my_load2(b), my_load3(c))); 1488*77c1e3ccSAndroid Build Coastguard Worker 1489*77c1e3ccSAndroid Build Coastguard Worker // Compare results 1490*77c1e3ccSAndroid Build Coastguard Worker return memcmp(ref_d, d, sizeof(CRet)); 1491*77c1e3ccSAndroid Build Coastguard Worker} 1492*77c1e3ccSAndroid Build Coastguard Worker 1493*77c1e3ccSAndroid Build Coastguard Worker} // namespace 1494*77c1e3ccSAndroid Build Coastguard Worker 1495*77c1e3ccSAndroid Build Coastguard Workertemplate <typename CRet, typename CArg> 1496*77c1e3ccSAndroid Build Coastguard Workervoid TestSimd1Arg(uint32_t iterations, uint32_t mask, uint32_t maskwidth, 1497*77c1e3ccSAndroid Build Coastguard Worker const char *name) { 1498*77c1e3ccSAndroid Build Coastguard Worker ACMRandom rnd(ACMRandom::DeterministicSeed()); 1499*77c1e3ccSAndroid Build Coastguard Worker fptr ref_simd; 1500*77c1e3ccSAndroid Build Coastguard Worker fptr simd; 1501*77c1e3ccSAndroid Build Coastguard Worker int error = 0; 1502*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, s[32]); 1503*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, d[32]); 1504*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, ref_d[32]); 1505*77c1e3ccSAndroid Build Coastguard Worker assert(sizeof(CArg) <= 32 && sizeof(CRet) <= 32); 1506*77c1e3ccSAndroid Build Coastguard Worker memset(ref_d, 0, sizeof(ref_d)); 1507*77c1e3ccSAndroid Build Coastguard Worker memset(d, 0, sizeof(d)); 1508*77c1e3ccSAndroid Build Coastguard Worker 1509*77c1e3ccSAndroid Build Coastguard Worker Map(name, &ref_simd, &simd); 1510*77c1e3ccSAndroid Build Coastguard Worker if (simd == nullptr || ref_simd == nullptr) { 1511*77c1e3ccSAndroid Build Coastguard Worker FAIL() << "Internal error: Unknown intrinsic function " << name; 1512*77c1e3ccSAndroid Build Coastguard Worker } 1513*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int count = 0; 1514*77c1e3ccSAndroid Build Coastguard Worker count < iterations && !error && !testing::Test::HasFailure(); count++) { 1515*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int c = 0; c < sizeof(CArg); c++) s[c] = rnd.Rand8(); 1516*77c1e3ccSAndroid Build Coastguard Worker 1517*77c1e3ccSAndroid Build Coastguard Worker if (maskwidth) { 1518*77c1e3ccSAndroid Build Coastguard Worker SetMask(s, sizeof(CArg), mask, maskwidth); 1519*77c1e3ccSAndroid Build Coastguard Worker } 1520*77c1e3ccSAndroid Build Coastguard Worker 1521*77c1e3ccSAndroid Build Coastguard Worker if (typeid(CRet) == typeid(c_v64) && typeid(CArg) == typeid(c_v64)) { 1522*77c1e3ccSAndroid Build Coastguard Worker // V64_V64 1523*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v64, v64, c_v64, c_v64>( 1524*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1525*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1526*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1527*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), ref_simd, ref_d, s); 1528*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v64) && 1529*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint8_t)) { 1530*77c1e3ccSAndroid Build Coastguard Worker // V64_U8 1531*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v64, uint8_t, c_v64, uint8_t>( 1532*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1533*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u8_load_aligned), simd, d, 1534*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1535*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u8_load_aligned), ref_simd, ref_d, s); 1536*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v64) && 1537*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint16_t)) { 1538*77c1e3ccSAndroid Build Coastguard Worker // V64_U16 1539*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v64, uint16_t, c_v64, uint16_t>( 1540*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1541*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u16_load_aligned), simd, d, 1542*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1543*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u16_load_aligned), ref_simd, ref_d, s); 1544*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v64) && 1545*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint32_t)) { 1546*77c1e3ccSAndroid Build Coastguard Worker // V64_U32 1547*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v64, uint32_t, c_v64, uint32_t>( 1548*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1549*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), simd, d, 1550*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1551*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), ref_simd, ref_d, s); 1552*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint64_t) && 1553*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v64)) { 1554*77c1e3ccSAndroid Build Coastguard Worker // U64_V64 1555*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<uint64_t, v64, uint64_t, c_v64>( 1556*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_store_aligned), 1557*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1558*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_store_aligned), 1559*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), ref_simd, ref_d, s); 1560*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(int64_t) && 1561*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v64)) { 1562*77c1e3ccSAndroid Build Coastguard Worker // S64_V64 1563*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<int64_t, v64, int64_t, c_v64>( 1564*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(s64_store_aligned), 1565*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1566*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_s64_store_aligned), 1567*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), ref_simd, ref_d, s); 1568*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint32_t) && 1569*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v64)) { 1570*77c1e3ccSAndroid Build Coastguard Worker // U32_V64 1571*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<uint32_t, v64, uint32_t, c_v64>( 1572*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_store_aligned), 1573*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1574*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_store_aligned), 1575*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), ref_simd, ref_d, s); 1576*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(int32_t) && 1577*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v64)) { 1578*77c1e3ccSAndroid Build Coastguard Worker // S32_V64 1579*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<int32_t, v64, int32_t, c_v64>( 1580*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(s32_store_aligned), 1581*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1582*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_s32_store_aligned), 1583*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), ref_simd, ref_d, s); 1584*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint32_t) && 1585*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v128)) { 1586*77c1e3ccSAndroid Build Coastguard Worker // U32_V128 1587*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<uint32_t, v128, uint32_t, c_v128>( 1588*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_store_aligned), 1589*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1590*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_store_aligned), 1591*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), ref_simd, ref_d, s); 1592*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint64_t) && 1593*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v128)) { 1594*77c1e3ccSAndroid Build Coastguard Worker // U64_V128 1595*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<uint64_t, v128, uint64_t, c_v128>( 1596*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_store_aligned), 1597*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1598*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_store_aligned), 1599*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), ref_simd, ref_d, s); 1600*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint64_t) && 1601*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v256)) { 1602*77c1e3ccSAndroid Build Coastguard Worker // U64_V256 1603*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<uint64_t, v256, uint64_t, c_v256>( 1604*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_store_aligned), 1605*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1606*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_store_aligned), 1607*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), ref_simd, ref_d, s); 1608*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v64) && 1609*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v128)) { 1610*77c1e3ccSAndroid Build Coastguard Worker // V64_V128 1611*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v64, v128, c_v64, c_v128>( 1612*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1613*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1614*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1615*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), ref_simd, ref_d, s); 1616*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1617*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v128)) { 1618*77c1e3ccSAndroid Build Coastguard Worker // V128_V128 1619*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v128, v128, c_v128, c_v128>( 1620*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1621*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1622*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1623*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), ref_simd, ref_d, s); 1624*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1625*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v64)) { 1626*77c1e3ccSAndroid Build Coastguard Worker // V128_V64 1627*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v128, v64, c_v128, c_v64>( 1628*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1629*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1630*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1631*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), ref_simd, ref_d, s); 1632*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1633*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint8_t)) { 1634*77c1e3ccSAndroid Build Coastguard Worker // V128_U8 1635*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v128, uint8_t, c_v128, uint8_t>( 1636*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1637*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u8_load_aligned), simd, d, 1638*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1639*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u8_load_aligned), ref_simd, ref_d, s); 1640*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1641*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint16_t)) { 1642*77c1e3ccSAndroid Build Coastguard Worker // V128_U16 1643*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v128, uint16_t, c_v128, uint16_t>( 1644*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1645*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u16_load_aligned), simd, d, 1646*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1647*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u16_load_aligned), ref_simd, ref_d, s); 1648*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1649*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint32_t)) { 1650*77c1e3ccSAndroid Build Coastguard Worker // V128_U32 1651*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v128, uint32_t, c_v128, uint32_t>( 1652*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1653*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), simd, d, 1654*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1655*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), ref_simd, ref_d, s); 1656*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1657*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint64_t)) { 1658*77c1e3ccSAndroid Build Coastguard Worker // V128_U64 1659*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v128, uint64_t, c_v128, uint64_t>( 1660*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1661*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_load_aligned), simd, d, 1662*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1663*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_load_aligned), ref_simd, ref_d, s); 1664*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1665*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v256)) { 1666*77c1e3ccSAndroid Build Coastguard Worker // V256_V256 1667*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v256, v256, c_v256, c_v256>( 1668*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1669*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1670*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1671*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), ref_simd, ref_d, s); 1672*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1673*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v128)) { 1674*77c1e3ccSAndroid Build Coastguard Worker // V256_V128 1675*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v256, v128, c_v256, c_v128>( 1676*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1677*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1678*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1679*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), ref_simd, ref_d, s); 1680*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1681*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint8_t)) { 1682*77c1e3ccSAndroid Build Coastguard Worker // V256_U8 1683*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v256, uint8_t, c_v256, uint8_t>( 1684*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1685*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u8_load_aligned), simd, d, 1686*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1687*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u8_load_aligned), ref_simd, ref_d, s); 1688*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1689*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint16_t)) { 1690*77c1e3ccSAndroid Build Coastguard Worker // V256_U16 1691*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v256, uint16_t, c_v256, uint16_t>( 1692*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1693*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u16_load_aligned), simd, d, 1694*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1695*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u16_load_aligned), ref_simd, ref_d, s); 1696*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1697*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint32_t)) { 1698*77c1e3ccSAndroid Build Coastguard Worker // V256_U32 1699*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v256, uint32_t, c_v256, uint32_t>( 1700*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1701*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), simd, d, 1702*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1703*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), ref_simd, ref_d, s); 1704*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1705*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(uint64_t)) { 1706*77c1e3ccSAndroid Build Coastguard Worker // V256_U64 1707*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v256, uint64_t, c_v256, uint64_t>( 1708*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1709*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_load_aligned), simd, d, 1710*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1711*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_load_aligned), ref_simd, ref_d, s); 1712*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint32_t) && 1713*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v256)) { 1714*77c1e3ccSAndroid Build Coastguard Worker // U32_V256 1715*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<uint32_t, v256, uint32_t, c_v256>( 1716*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_store_aligned), 1717*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1718*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_store_aligned), 1719*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), ref_simd, ref_d, s); 1720*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v64) && 1721*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg) == typeid(c_v256)) { 1722*77c1e3ccSAndroid Build Coastguard Worker // V64_V256 1723*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd1Arg<v64, v256, c_v64, c_v256>( 1724*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1725*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1726*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1727*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), ref_simd, ref_d, s); 1728*77c1e3ccSAndroid Build Coastguard Worker } else { 1729*77c1e3ccSAndroid Build Coastguard Worker FAIL() << "Internal error: Unknown intrinsic function " 1730*77c1e3ccSAndroid Build Coastguard Worker << typeid(CRet).name() << " " << name << "(" << typeid(CArg).name() 1731*77c1e3ccSAndroid Build Coastguard Worker << ")"; 1732*77c1e3ccSAndroid Build Coastguard Worker } 1733*77c1e3ccSAndroid Build Coastguard Worker } 1734*77c1e3ccSAndroid Build Coastguard Worker 1735*77c1e3ccSAndroid Build Coastguard Worker EXPECT_EQ(0, error) << "Error: mismatch for " << name << "(" 1736*77c1e3ccSAndroid Build Coastguard Worker << Print(s, sizeof(CArg)) << ") -> " 1737*77c1e3ccSAndroid Build Coastguard Worker << Print(d, sizeof(CRet)) << " (simd), " 1738*77c1e3ccSAndroid Build Coastguard Worker << Print(ref_d, sizeof(CRet)) << " (ref)"; 1739*77c1e3ccSAndroid Build Coastguard Worker} 1740*77c1e3ccSAndroid Build Coastguard Worker 1741*77c1e3ccSAndroid Build Coastguard Workertemplate <typename CRet, typename CArg1, typename CArg2> 1742*77c1e3ccSAndroid Build Coastguard Workervoid TestSimd2Args(uint32_t iterations, uint32_t mask, uint32_t maskwidth, 1743*77c1e3ccSAndroid Build Coastguard Worker const char *name) { 1744*77c1e3ccSAndroid Build Coastguard Worker ACMRandom rnd(ACMRandom::DeterministicSeed()); 1745*77c1e3ccSAndroid Build Coastguard Worker fptr ref_simd; 1746*77c1e3ccSAndroid Build Coastguard Worker fptr simd; 1747*77c1e3ccSAndroid Build Coastguard Worker int error = 0; 1748*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, s1[32]); 1749*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, s2[32]); 1750*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, d[32]); 1751*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, ref_d[32]); 1752*77c1e3ccSAndroid Build Coastguard Worker assert(sizeof(CArg1) <= 32 && sizeof(CArg2) <= 32 && sizeof(CRet) <= 32); 1753*77c1e3ccSAndroid Build Coastguard Worker memset(ref_d, 0, sizeof(ref_d)); 1754*77c1e3ccSAndroid Build Coastguard Worker memset(d, 0, sizeof(d)); 1755*77c1e3ccSAndroid Build Coastguard Worker 1756*77c1e3ccSAndroid Build Coastguard Worker Map(name, &ref_simd, &simd); 1757*77c1e3ccSAndroid Build Coastguard Worker if (simd == nullptr || ref_simd == nullptr) { 1758*77c1e3ccSAndroid Build Coastguard Worker FAIL() << "Internal error: Unknown intrinsic function " << name; 1759*77c1e3ccSAndroid Build Coastguard Worker } 1760*77c1e3ccSAndroid Build Coastguard Worker 1761*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int count = 0; 1762*77c1e3ccSAndroid Build Coastguard Worker count < iterations && !error && !testing::Test::HasFailure(); count++) { 1763*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int c = 0; c < sizeof(CArg1); c++) s1[c] = rnd.Rand8(); 1764*77c1e3ccSAndroid Build Coastguard Worker 1765*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int c = 0; c < sizeof(CArg2); c++) s2[c] = rnd.Rand8(); 1766*77c1e3ccSAndroid Build Coastguard Worker 1767*77c1e3ccSAndroid Build Coastguard Worker if (maskwidth) SetMask(s2, sizeof(CArg2), mask, maskwidth); 1768*77c1e3ccSAndroid Build Coastguard Worker 1769*77c1e3ccSAndroid Build Coastguard Worker if (typeid(CRet) == typeid(c_v64) && typeid(CArg1) == typeid(c_v64) && 1770*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v64)) { 1771*77c1e3ccSAndroid Build Coastguard Worker // V64_V64V64 1772*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v64, v64, v64, c_v64, c_v64, c_v64>( 1773*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1774*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), 1775*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1776*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1777*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1778*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1779*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1780*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v64) && 1781*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(uint32_t) && 1782*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(uint32_t)) { 1783*77c1e3ccSAndroid Build Coastguard Worker // V64_U32U32 1784*77c1e3ccSAndroid Build Coastguard Worker error = 1785*77c1e3ccSAndroid Build Coastguard Worker CompareSimd2Args<v64, uint32_t, uint32_t, c_v64, uint32_t, uint32_t>( 1786*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1787*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), 1788*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), simd, d, 1789*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1790*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), 1791*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), 1792*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1793*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint32_t) && 1794*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v64) && 1795*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v64)) { 1796*77c1e3ccSAndroid Build Coastguard Worker // U32_V64V64 1797*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<uint32_t, v64, v64, uint32_t, c_v64, c_v64>( 1798*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_store_aligned), 1799*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), 1800*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1801*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_store_aligned), 1802*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1803*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1804*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1805*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(int64_t) && 1806*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v64) && 1807*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v64)) { 1808*77c1e3ccSAndroid Build Coastguard Worker // S64_V64V64 1809*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<int64_t, v64, v64, int64_t, c_v64, c_v64>( 1810*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(s64_store_aligned), 1811*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), 1812*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1813*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_s64_store_aligned), 1814*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1815*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1816*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1817*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v64) && 1818*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v64) && 1819*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(uint32_t)) { 1820*77c1e3ccSAndroid Build Coastguard Worker // V64_V64U32 1821*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v64, v64, uint32_t, c_v64, c_v64, uint32_t>( 1822*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_store_aligned), 1823*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), 1824*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), simd, d, 1825*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_store_aligned), 1826*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1827*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), 1828*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1829*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1830*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v128) && 1831*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v128)) { 1832*77c1e3ccSAndroid Build Coastguard Worker // V128_V128V128 1833*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v128, v128, v128, c_v128, c_v128, c_v128>( 1834*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1835*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 1836*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1837*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1838*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1839*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1840*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1841*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint32_t) && 1842*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v128) && 1843*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v128)) { 1844*77c1e3ccSAndroid Build Coastguard Worker // U32_V128V128 1845*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<uint32_t, v128, v128, uint32_t, c_v128, c_v128>( 1846*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_store_aligned), 1847*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 1848*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1849*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_store_aligned), 1850*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1851*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1852*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1853*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint64_t) && 1854*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v128) && 1855*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v128)) { 1856*77c1e3ccSAndroid Build Coastguard Worker // U64_V128V128 1857*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<uint64_t, v128, v128, uint64_t, c_v128, c_v128>( 1858*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_store_aligned), 1859*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 1860*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1861*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_store_aligned), 1862*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1863*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1864*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1865*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(int64_t) && 1866*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v128) && 1867*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v128)) { 1868*77c1e3ccSAndroid Build Coastguard Worker // S64_V128V128 1869*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<int64_t, v128, v128, int64_t, c_v128, c_v128>( 1870*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(s64_store_aligned), 1871*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 1872*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1873*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_s64_store_aligned), 1874*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1875*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1876*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1877*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1878*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(uint64_t) && 1879*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(uint64_t)) { 1880*77c1e3ccSAndroid Build Coastguard Worker // V128_U64U64 1881*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v128, uint64_t, uint64_t, c_v128, uint64_t, 1882*77c1e3ccSAndroid Build Coastguard Worker uint64_t>( 1883*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1884*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_load_aligned), 1885*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_load_aligned), simd, d, 1886*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1887*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_load_aligned), 1888*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_load_aligned), 1889*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1890*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1891*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v64) && 1892*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v64)) { 1893*77c1e3ccSAndroid Build Coastguard Worker // V128_V64V64 1894*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v128, v64, v64, c_v128, c_v64, c_v64>( 1895*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1896*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), 1897*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v64_load_aligned), simd, d, 1898*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1899*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1900*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v64_load_aligned), 1901*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1902*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v128) && 1903*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v128) && 1904*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(uint32_t)) { 1905*77c1e3ccSAndroid Build Coastguard Worker // V128_V128U32 1906*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v128, v128, uint32_t, c_v128, c_v128, uint32_t>( 1907*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 1908*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 1909*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), simd, d, 1910*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 1911*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1912*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), 1913*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1914*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1915*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v256) && 1916*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v256)) { 1917*77c1e3ccSAndroid Build Coastguard Worker // V256_V256V256 1918*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v256, v256, v256, c_v256, c_v256, c_v256>( 1919*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1920*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), 1921*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1922*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1923*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1924*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1925*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1926*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint64_t) && 1927*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v256) && 1928*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v256)) { 1929*77c1e3ccSAndroid Build Coastguard Worker // U64_V256V256 1930*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<uint64_t, v256, v256, uint64_t, c_v256, c_v256>( 1931*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u64_store_aligned), 1932*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), 1933*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1934*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u64_store_aligned), 1935*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1936*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1937*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1938*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(int64_t) && 1939*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v256) && 1940*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v256)) { 1941*77c1e3ccSAndroid Build Coastguard Worker // S64_V256V256 1942*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<int64_t, v256, v256, int64_t, c_v256, c_v256>( 1943*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(s64_store_aligned), 1944*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), 1945*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1946*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_s64_store_aligned), 1947*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1948*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1949*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1950*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(uint32_t) && 1951*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v256) && 1952*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v256)) { 1953*77c1e3ccSAndroid Build Coastguard Worker // U32_V256V256 1954*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<uint32_t, v256, v256, uint32_t, c_v256, c_v256>( 1955*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_store_aligned), 1956*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), 1957*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 1958*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_store_aligned), 1959*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1960*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1961*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1962*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1963*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v128) && 1964*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v128)) { 1965*77c1e3ccSAndroid Build Coastguard Worker // V256_V128V128 1966*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v256, v128, v128, c_v256, c_v128, c_v128>( 1967*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1968*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 1969*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 1970*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1971*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1972*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 1973*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1974*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 1975*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v256) && 1976*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(uint32_t)) { 1977*77c1e3ccSAndroid Build Coastguard Worker // V256_V256U32 1978*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd2Args<v256, v256, uint32_t, c_v256, c_v256, uint32_t>( 1979*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 1980*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), 1981*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(u32_load_aligned), simd, d, 1982*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 1983*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 1984*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_u32_load_aligned), 1985*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2); 1986*77c1e3ccSAndroid Build Coastguard Worker 1987*77c1e3ccSAndroid Build Coastguard Worker } else { 1988*77c1e3ccSAndroid Build Coastguard Worker FAIL() << "Internal error: Unknown intrinsic function " 1989*77c1e3ccSAndroid Build Coastguard Worker << typeid(CRet).name() << " " << name << "(" 1990*77c1e3ccSAndroid Build Coastguard Worker << typeid(CArg1).name() << ", " << typeid(CArg2).name() << ")"; 1991*77c1e3ccSAndroid Build Coastguard Worker } 1992*77c1e3ccSAndroid Build Coastguard Worker } 1993*77c1e3ccSAndroid Build Coastguard Worker 1994*77c1e3ccSAndroid Build Coastguard Worker EXPECT_EQ(0, error) << "Error: mismatch for " << name << "(" 1995*77c1e3ccSAndroid Build Coastguard Worker << Print(s1, sizeof(CArg1)) << ", " 1996*77c1e3ccSAndroid Build Coastguard Worker << Print(s2, sizeof(CArg2)) << ") -> " 1997*77c1e3ccSAndroid Build Coastguard Worker << Print(d, sizeof(CRet)) << " (simd), " 1998*77c1e3ccSAndroid Build Coastguard Worker << Print(ref_d, sizeof(CRet)) << " (ref)"; 1999*77c1e3ccSAndroid Build Coastguard Worker} 2000*77c1e3ccSAndroid Build Coastguard Worker 2001*77c1e3ccSAndroid Build Coastguard Workertemplate <typename CRet, typename CArg1, typename CArg2, typename CArg3> 2002*77c1e3ccSAndroid Build Coastguard Workervoid TestSimd3Args(uint32_t iterations, uint32_t mask, uint32_t maskwidth, 2003*77c1e3ccSAndroid Build Coastguard Worker const char *name) { 2004*77c1e3ccSAndroid Build Coastguard Worker ACMRandom rnd(ACMRandom::DeterministicSeed()); 2005*77c1e3ccSAndroid Build Coastguard Worker fptr ref_simd; 2006*77c1e3ccSAndroid Build Coastguard Worker fptr simd; 2007*77c1e3ccSAndroid Build Coastguard Worker int error = 0; 2008*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, s1[32]); 2009*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, s2[32]); 2010*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, s3[32]); 2011*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, d[32]); 2012*77c1e3ccSAndroid Build Coastguard Worker DECLARE_ALIGNED(32, uint8_t, ref_d[32]); 2013*77c1e3ccSAndroid Build Coastguard Worker assert(sizeof(CArg1) <= 32 && sizeof(CArg2) <= 32 && sizeof(CArg3) <= 32 && 2014*77c1e3ccSAndroid Build Coastguard Worker sizeof(CRet) <= 32); 2015*77c1e3ccSAndroid Build Coastguard Worker memset(ref_d, 0, sizeof(ref_d)); 2016*77c1e3ccSAndroid Build Coastguard Worker memset(d, 0, sizeof(d)); 2017*77c1e3ccSAndroid Build Coastguard Worker 2018*77c1e3ccSAndroid Build Coastguard Worker Map(name, &ref_simd, &simd); 2019*77c1e3ccSAndroid Build Coastguard Worker if (simd == nullptr || ref_simd == nullptr) { 2020*77c1e3ccSAndroid Build Coastguard Worker FAIL() << "Internal error: Unknown intrinsic function " << name; 2021*77c1e3ccSAndroid Build Coastguard Worker } 2022*77c1e3ccSAndroid Build Coastguard Worker 2023*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int count = 0; 2024*77c1e3ccSAndroid Build Coastguard Worker count < iterations && !error && !testing::Test::HasFailure(); count++) { 2025*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int c = 0; c < sizeof(CArg1); c++) s1[c] = rnd.Rand8(); 2026*77c1e3ccSAndroid Build Coastguard Worker 2027*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int c = 0; c < sizeof(CArg2); c++) s2[c] = rnd.Rand8(); 2028*77c1e3ccSAndroid Build Coastguard Worker 2029*77c1e3ccSAndroid Build Coastguard Worker for (unsigned int c = 0; c < sizeof(CArg3); c++) s3[c] = rnd.Rand8(); 2030*77c1e3ccSAndroid Build Coastguard Worker 2031*77c1e3ccSAndroid Build Coastguard Worker if (maskwidth) SetMask(s3, sizeof(CArg3), mask, maskwidth); 2032*77c1e3ccSAndroid Build Coastguard Worker 2033*77c1e3ccSAndroid Build Coastguard Worker if (typeid(CRet) == typeid(c_v128) && typeid(CArg1) == typeid(c_v128) && 2034*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v128) && typeid(CArg3) == typeid(c_v128)) { 2035*77c1e3ccSAndroid Build Coastguard Worker // V128_V128V128V128 2036*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd3Args<v128, v128, v128, v128, c_v128, c_v128, c_v128, 2037*77c1e3ccSAndroid Build Coastguard Worker c_v128>( 2038*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_store_aligned), 2039*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 2040*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), 2041*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v128_load_aligned), simd, d, 2042*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_store_aligned), 2043*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 2044*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 2045*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v128_load_aligned), 2046*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2, s3); 2047*77c1e3ccSAndroid Build Coastguard Worker } else if (typeid(CRet) == typeid(c_v256) && 2048*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg1) == typeid(c_v256) && 2049*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg2) == typeid(c_v256) && 2050*77c1e3ccSAndroid Build Coastguard Worker typeid(CArg3) == typeid(c_v256)) { 2051*77c1e3ccSAndroid Build Coastguard Worker // V256_V256V256V256 2052*77c1e3ccSAndroid Build Coastguard Worker error = CompareSimd3Args<v256, v256, v256, v256, c_v256, c_v256, c_v256, 2053*77c1e3ccSAndroid Build Coastguard Worker c_v256>( 2054*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_store_aligned), 2055*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), 2056*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), 2057*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(v256_load_aligned), simd, d, 2058*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_store_aligned), 2059*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 2060*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 2061*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(c_v256_load_aligned), 2062*77c1e3ccSAndroid Build Coastguard Worker reinterpret_cast<fptr>(ref_simd), ref_d, s1, s2, s3); 2063*77c1e3ccSAndroid Build Coastguard Worker } else { 2064*77c1e3ccSAndroid Build Coastguard Worker FAIL() << "Internal error: Unknown intrinsic function " 2065*77c1e3ccSAndroid Build Coastguard Worker << typeid(CRet).name() << " " << name << "(" 2066*77c1e3ccSAndroid Build Coastguard Worker << typeid(CArg1).name() << ", " << typeid(CArg2).name() << ", " 2067*77c1e3ccSAndroid Build Coastguard Worker << typeid(CArg3).name() << ")"; 2068*77c1e3ccSAndroid Build Coastguard Worker } 2069*77c1e3ccSAndroid Build Coastguard Worker } 2070*77c1e3ccSAndroid Build Coastguard Worker 2071*77c1e3ccSAndroid Build Coastguard Worker EXPECT_EQ(0, error) << "Error: mismatch for " << name << "(" 2072*77c1e3ccSAndroid Build Coastguard Worker << Print(s1, sizeof(CArg1)) << ", " 2073*77c1e3ccSAndroid Build Coastguard Worker << Print(s2, sizeof(CArg2)) << ", " 2074*77c1e3ccSAndroid Build Coastguard Worker << Print(s3, sizeof(CArg3)) << ") -> " 2075*77c1e3ccSAndroid Build Coastguard Worker << Print(d, sizeof(CRet)) << " (simd), " 2076*77c1e3ccSAndroid Build Coastguard Worker << Print(ref_d, sizeof(CRet)) << " (ref)"; 2077*77c1e3ccSAndroid Build Coastguard Worker} 2078*77c1e3ccSAndroid Build Coastguard Worker 2079*77c1e3ccSAndroid Build Coastguard Worker// Instantiations to make the functions callable from another files 2080*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v64, uint8_t>(uint32_t, uint32_t, uint32_t, 2081*77c1e3ccSAndroid Build Coastguard Worker const char *); 2082*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v64, uint16_t>(uint32_t, uint32_t, uint32_t, 2083*77c1e3ccSAndroid Build Coastguard Worker const char *); 2084*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v64, uint32_t>(uint32_t, uint32_t, uint32_t, 2085*77c1e3ccSAndroid Build Coastguard Worker const char *); 2086*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v64, c_v64>(uint32_t, uint32_t, uint32_t, 2087*77c1e3ccSAndroid Build Coastguard Worker const char *); 2088*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<uint32_t, c_v64>(uint32_t, uint32_t, uint32_t, 2089*77c1e3ccSAndroid Build Coastguard Worker const char *); 2090*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<int32_t, c_v64>(uint32_t, uint32_t, uint32_t, 2091*77c1e3ccSAndroid Build Coastguard Worker const char *); 2092*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<uint64_t, c_v64>(uint32_t, uint32_t, uint32_t, 2093*77c1e3ccSAndroid Build Coastguard Worker const char *); 2094*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<int64_t, c_v64>(uint32_t, uint32_t, uint32_t, 2095*77c1e3ccSAndroid Build Coastguard Worker const char *); 2096*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v64, uint32_t, uint32_t>(uint32_t, uint32_t, 2097*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2098*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v64, c_v64, c_v64>(uint32_t, uint32_t, uint32_t, 2099*77c1e3ccSAndroid Build Coastguard Worker const char *); 2100*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v64, c_v64, uint32_t>(uint32_t, uint32_t, 2101*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2102*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<int64_t, c_v64, c_v64>(uint32_t, uint32_t, uint32_t, 2103*77c1e3ccSAndroid Build Coastguard Worker const char *); 2104*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<uint32_t, c_v64, c_v64>(uint32_t, uint32_t, 2105*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2106*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v128, c_v128>(uint32_t, uint32_t, uint32_t, 2107*77c1e3ccSAndroid Build Coastguard Worker const char *); 2108*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v128, uint8_t>(uint32_t, uint32_t, uint32_t, 2109*77c1e3ccSAndroid Build Coastguard Worker const char *); 2110*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v128, uint16_t>(uint32_t, uint32_t, uint32_t, 2111*77c1e3ccSAndroid Build Coastguard Worker const char *); 2112*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v128, uint32_t>(uint32_t, uint32_t, uint32_t, 2113*77c1e3ccSAndroid Build Coastguard Worker const char *); 2114*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v128, uint64_t>(uint32_t, uint32_t, uint32_t, 2115*77c1e3ccSAndroid Build Coastguard Worker const char *); 2116*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v128, c_v64>(uint32_t, uint32_t, uint32_t, 2117*77c1e3ccSAndroid Build Coastguard Worker const char *); 2118*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<uint32_t, c_v128>(uint32_t, uint32_t, uint32_t, 2119*77c1e3ccSAndroid Build Coastguard Worker const char *); 2120*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<uint64_t, c_v128>(uint32_t, uint32_t, uint32_t, 2121*77c1e3ccSAndroid Build Coastguard Worker const char *); 2122*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v64, c_v128>(uint32_t, uint32_t, uint32_t, 2123*77c1e3ccSAndroid Build Coastguard Worker const char *); 2124*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v128, c_v128, c_v128>(uint32_t, uint32_t, 2125*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2126*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v128, c_v128, uint32_t>(uint32_t, uint32_t, 2127*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2128*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v128, uint64_t, uint64_t>(uint32_t, uint32_t, 2129*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2130*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v128, c_v64, c_v64>(uint32_t, uint32_t, uint32_t, 2131*77c1e3ccSAndroid Build Coastguard Worker const char *); 2132*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<uint64_t, c_v128, c_v128>(uint32_t, uint32_t, 2133*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2134*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<int64_t, c_v128, c_v128>(uint32_t, uint32_t, 2135*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2136*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<uint32_t, c_v128, c_v128>(uint32_t, uint32_t, 2137*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2138*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd3Args<c_v128, c_v128, c_v128, c_v128>(uint32_t, uint32_t, 2139*77c1e3ccSAndroid Build Coastguard Worker uint32_t, 2140*77c1e3ccSAndroid Build Coastguard Worker const char *); 2141*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v256, c_v128>(uint32_t, uint32_t, uint32_t, 2142*77c1e3ccSAndroid Build Coastguard Worker const char *); 2143*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v256, c_v256>(uint32_t, uint32_t, uint32_t, 2144*77c1e3ccSAndroid Build Coastguard Worker const char *); 2145*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<uint64_t, c_v256>(uint32_t, uint32_t, uint32_t, 2146*77c1e3ccSAndroid Build Coastguard Worker const char *); 2147*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v256, uint8_t>(uint32_t, uint32_t, uint32_t, 2148*77c1e3ccSAndroid Build Coastguard Worker const char *); 2149*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v256, uint16_t>(uint32_t, uint32_t, uint32_t, 2150*77c1e3ccSAndroid Build Coastguard Worker const char *); 2151*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v256, uint32_t>(uint32_t, uint32_t, uint32_t, 2152*77c1e3ccSAndroid Build Coastguard Worker const char *); 2153*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v256, uint64_t>(uint32_t, uint32_t, uint32_t, 2154*77c1e3ccSAndroid Build Coastguard Worker const char *); 2155*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<uint32_t, c_v256>(uint32_t, uint32_t, uint32_t, 2156*77c1e3ccSAndroid Build Coastguard Worker const char *); 2157*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd1Arg<c_v64, c_v256>(uint32_t, uint32_t, uint32_t, 2158*77c1e3ccSAndroid Build Coastguard Worker const char *); 2159*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v256, c_v128, c_v128>(uint32_t, uint32_t, 2160*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2161*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v256, c_v256, c_v256>(uint32_t, uint32_t, 2162*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2163*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<c_v256, c_v256, uint32_t>(uint32_t, uint32_t, 2164*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2165*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<uint64_t, c_v256, c_v256>(uint32_t, uint32_t, 2166*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2167*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<int64_t, c_v256, c_v256>(uint32_t, uint32_t, 2168*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2169*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd2Args<uint32_t, c_v256, c_v256>(uint32_t, uint32_t, 2170*77c1e3ccSAndroid Build Coastguard Worker uint32_t, const char *); 2171*77c1e3ccSAndroid Build Coastguard Workertemplate void TestSimd3Args<c_v256, c_v256, c_v256, c_v256>(uint32_t, uint32_t, 2172*77c1e3ccSAndroid Build Coastguard Worker uint32_t, 2173*77c1e3ccSAndroid Build Coastguard Worker const char *); 2174*77c1e3ccSAndroid Build Coastguard Worker 2175*77c1e3ccSAndroid Build Coastguard Worker} // namespace SIMD_NAMESPACE 2176