1 /* -*- mode: C; c-basic-offset: 3; -*- */ 2 3 /* 4 This file is part of MemCheck, a heavyweight Valgrind tool for 5 detecting memory errors. 6 7 Copyright (C) 2012-2015 Florian Krohm 8 9 This program is free software; you can redistribute it and/or 10 modify it under the terms of the GNU General Public License as 11 published by the Free Software Foundation; either version 2 of the 12 License, or (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, but 15 WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program; if not, write to the Free Software 21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 22 02111-1307, USA. 23 24 The GNU General Public License is contained in the file COPYING. 25 */ 26 27 #include <stdio.h> // fprintf 28 #include <stdlib.h> // exit 29 #include "pub_tool_basics.h" // STATIC_ASSERT 30 #include "vtest.h" 31 32 #define DEFOP(op,ukind) op, #op, ukind 33 34 /* The opcodes appear in the same order here as in libvex_ir.h 35 That is not necessary but helpful when supporting a new architecture. 36 */ 37 static irop_t irops[] = { 38 { DEFOP(Iop_Add8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 39 { DEFOP(Iop_Add16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 40 { DEFOP(Iop_Add32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 41 { DEFOP(Iop_Add64, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // mips asserts 42 { DEFOP(Iop_Sub8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 43 { DEFOP(Iop_Sub16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 44 { DEFOP(Iop_Sub32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 45 { DEFOP(Iop_Sub64, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 46 { DEFOP(Iop_Mul8, UNDEF_LEFT), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 47 { DEFOP(Iop_Mul16, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 48 { DEFOP(Iop_Mul32, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 49 { DEFOP(Iop_Mul64, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // ppc32, mips assert 50 { DEFOP(Iop_Or8, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 51 { DEFOP(Iop_Or16, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 52 { DEFOP(Iop_Or32, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 53 { DEFOP(Iop_Or64, UNDEF_OR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // mips asserts 54 { DEFOP(Iop_And8, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 55 { DEFOP(Iop_And16, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 56 { DEFOP(Iop_And32, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 57 { DEFOP(Iop_And64, UNDEF_AND), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 58 { DEFOP(Iop_Xor8, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 59 { DEFOP(Iop_Xor16, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 60 { DEFOP(Iop_Xor32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 61 { DEFOP(Iop_Xor64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 62 { DEFOP(Iop_Shl8, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 63 { DEFOP(Iop_Shl16, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 64 { DEFOP(Iop_Shl32, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 65 { DEFOP(Iop_Shl64, UNDEF_SHL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32 asserts 66 { DEFOP(Iop_Shr8, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32/64 assert 67 { DEFOP(Iop_Shr16, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32/64 assert 68 { DEFOP(Iop_Shr32, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 69 { DEFOP(Iop_Shr64, UNDEF_SHR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32 asserts 70 { DEFOP(Iop_Sar8, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32/64 assert 71 { DEFOP(Iop_Sar16, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32/64 assert 72 { DEFOP(Iop_Sar32, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 73 { DEFOP(Iop_Sar64, UNDEF_SAR), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32 asserts 74 { DEFOP(Iop_CmpEQ8, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 75 { DEFOP(Iop_CmpEQ16, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 76 { DEFOP(Iop_CmpEQ32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 77 { DEFOP(Iop_CmpEQ64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 78 { DEFOP(Iop_CmpNE8, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 79 { DEFOP(Iop_CmpNE16, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 80 { DEFOP(Iop_CmpNE32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 81 { DEFOP(Iop_CmpNE64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 82 { DEFOP(Iop_Not8, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 83 { DEFOP(Iop_Not16, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 84 { DEFOP(Iop_Not32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 85 { DEFOP(Iop_Not64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 1 }, 86 { DEFOP(Iop_CasCmpEQ8, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 87 { DEFOP(Iop_CasCmpEQ16, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 88 { DEFOP(Iop_CasCmpEQ32, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 89 { DEFOP(Iop_CasCmpEQ64, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 90 91 { DEFOP(Iop_CasCmpNE8, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 92 { DEFOP(Iop_CasCmpNE16, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 93 { DEFOP(Iop_CasCmpNE32, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 94 { DEFOP(Iop_CasCmpNE64, UNDEF_NONE), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 95 { DEFOP(Iop_ExpCmpNE8, UNDEF_UNKNOWN), }, // exact (expensive) equality 96 { DEFOP(Iop_ExpCmpNE16, UNDEF_UNKNOWN), }, // exact (expensive) equality 97 { DEFOP(Iop_ExpCmpNE32, UNDEF_UNKNOWN), }, // exact (expensive) equality 98 { DEFOP(Iop_ExpCmpNE64, UNDEF_UNKNOWN), }, // exact (expensive) equality 99 { DEFOP(Iop_MullS8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 100 { DEFOP(Iop_MullS16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 101 { DEFOP(Iop_MullS32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // mips asserts 102 // s390 has signed multiplication of 64-bit values but the result 103 // is 64-bit (not 128-bit). So we cannot test this op standalone. 104 { DEFOP(Iop_MullS64, UNDEF_LEFT), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .tilegx = 0 }, // ppc32, mips assert 105 { DEFOP(Iop_MullU8, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .tilegx = 0 }, 106 { DEFOP(Iop_MullU16, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .tilegx = 0 }, 107 { DEFOP(Iop_MullU32, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =0, .mips64 = 1, .tilegx = 1 }, // mips asserts 108 { DEFOP(Iop_MullU64, UNDEF_LEFT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .tilegx = 0 }, // ppc32, mips assert 109 { DEFOP(Iop_Clz64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .tilegx = 1 }, // ppc32 asserts 110 { DEFOP(Iop_Clz32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .tilegx = 0 }, 111 { DEFOP(Iop_Ctz64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .tilegx = 1 }, 112 { DEFOP(Iop_Ctz32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 0, .tilegx = 0 }, 113 { DEFOP(Iop_CmpLT32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .tilegx = 1 }, 114 { DEFOP(Iop_CmpLT64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 1, .tilegx = 1 }, // ppc, mips assert 115 { DEFOP(Iop_CmpLE32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .tilegx = 1 }, 116 { DEFOP(Iop_CmpLE64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 =0, .mips64 = 1, .tilegx = 1 }, // ppc, mips assert 117 { DEFOP(Iop_CmpLT32U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .tilegx = 1 }, 118 { DEFOP(Iop_CmpLT64U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 1, .tilegx = 1}, // ppc32, mips assert 119 { DEFOP(Iop_CmpLE32U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 =1, .mips64 = 1, .tilegx = 0 }, 120 { DEFOP(Iop_CmpLE64U, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 =0, .mips64 = 0, .tilegx = 0 }, // ppc32 asserts 121 { DEFOP(Iop_CmpNEZ8, UNDEF_ALL), }, // not supported by mc_translate 122 { DEFOP(Iop_CmpNEZ16, UNDEF_ALL), }, // not supported by mc_translate 123 { DEFOP(Iop_CmpNEZ32, UNDEF_ALL), }, // not supported by mc_translate 124 { DEFOP(Iop_CmpNEZ64, UNDEF_ALL), }, // not supported by mc_translate 125 { DEFOP(Iop_CmpwNEZ32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 126 { DEFOP(Iop_CmpwNEZ64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // mips asserts 127 { DEFOP(Iop_Left8, UNDEF_UNKNOWN), }, // not supported by mc_translate 128 { DEFOP(Iop_Left16, UNDEF_UNKNOWN), }, // not supported by mc_translate 129 { DEFOP(Iop_Left32, UNDEF_UNKNOWN), }, // not supported by mc_translate 130 { DEFOP(Iop_Left64, UNDEF_UNKNOWN), }, // not supported by mc_translate 131 { DEFOP(Iop_Max32U, UNDEF_UNKNOWN), }, // not supported by mc_translate 132 { DEFOP(Iop_CmpORD32U, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // support added in vbit-test 133 { DEFOP(Iop_CmpORD64U, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // support added in vbit-test 134 { DEFOP(Iop_CmpORD32S, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // support added in vbit-test 135 { DEFOP(Iop_CmpORD64S, UNDEF_ORD), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // support added in vbit-test 136 { DEFOP(Iop_DivU32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 137 { DEFOP(Iop_DivS32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 138 { DEFOP(Iop_DivU64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32 asserts 139 { DEFOP(Iop_DivS64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32 asserts 140 { DEFOP(Iop_DivU64E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32 asserts 141 { DEFOP(Iop_DivS64E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // ppc32 asserts 142 { DEFOP(Iop_DivU32E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 143 { DEFOP(Iop_DivS32E, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 144 // On s390 the DivMod operations always appear in a certain context 145 // So they cannot be tested in isolation on that platform. 146 { DEFOP(Iop_DivModU64to32, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 147 { DEFOP(Iop_DivModS64to32, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 148 { DEFOP(Iop_DivModU128to64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 149 { DEFOP(Iop_DivModS128to64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 150 { DEFOP(Iop_DivModS64to64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // mips asserts 151 { DEFOP(Iop_8Uto16, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 152 { DEFOP(Iop_8Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 153 { DEFOP(Iop_8Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32 assert 154 { DEFOP(Iop_16Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 155 { DEFOP(Iop_16Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32 assert 156 { DEFOP(Iop_32Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // mips asserts 157 { DEFOP(Iop_8Sto16, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 158 { DEFOP(Iop_8Sto32, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 159 { DEFOP(Iop_8Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 160 { DEFOP(Iop_16Sto32, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 161 { DEFOP(Iop_16Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 162 { DEFOP(Iop_32Sto64, UNDEF_SEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // mips asserts 163 { DEFOP(Iop_64to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 164 { DEFOP(Iop_32to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 165 { DEFOP(Iop_64to16, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 166 { DEFOP(Iop_16to8, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 167 { DEFOP(Iop_16HIto8, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 168 { DEFOP(Iop_8HLto16, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, // ppc isel 169 { DEFOP(Iop_32to16, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 170 { DEFOP(Iop_32HIto16, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 171 { DEFOP(Iop_16HLto32, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, // ppc isel 172 { DEFOP(Iop_64to32, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 173 { DEFOP(Iop_64HIto32, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 174 { DEFOP(Iop_32HLto64, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // mips asserts 175 { DEFOP(Iop_128to64, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 176 { DEFOP(Iop_128HIto64, UNDEF_UPPER), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 177 { DEFOP(Iop_64HLto128, UNDEF_CONCAT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 178 { DEFOP(Iop_Not1, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 179 { DEFOP(Iop_32to1, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 180 { DEFOP(Iop_64to1, UNDEF_TRUNC), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32, mips assert 181 { DEFOP(Iop_1Uto8, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 182 { DEFOP(Iop_1Uto32, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 183 { DEFOP(Iop_1Uto64, UNDEF_ZEXT), .s390x = 1, .amd64 = 1, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 1 }, // ppc32 assert 184 { DEFOP(Iop_1Sto8, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 185 { DEFOP(Iop_1Sto16, UNDEF_ALL), }, // not handled by mc_translate 186 { DEFOP(Iop_1Sto32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 187 { DEFOP(Iop_1Sto64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 1 }, 188 { DEFOP(Iop_AddF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 189 { DEFOP(Iop_SubF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 190 { DEFOP(Iop_MulF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 191 { DEFOP(Iop_DivF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 192 { DEFOP(Iop_AddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 193 { DEFOP(Iop_SubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 194 { DEFOP(Iop_MulF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 195 { DEFOP(Iop_DivF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 196 { DEFOP(Iop_AddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 197 { DEFOP(Iop_SubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 198 { DEFOP(Iop_MulF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 199 { DEFOP(Iop_DivF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 200 { DEFOP(Iop_NegF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 201 { DEFOP(Iop_AbsF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 202 { DEFOP(Iop_NegF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 203 { DEFOP(Iop_AbsF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 204 { DEFOP(Iop_SqrtF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 205 { DEFOP(Iop_SqrtF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 206 { DEFOP(Iop_CmpF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 207 { DEFOP(Iop_CmpF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // mips asserts 208 { DEFOP(Iop_CmpF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 209 { DEFOP(Iop_F64toI16S, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 210 { DEFOP(Iop_F64toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 211 { DEFOP(Iop_F64toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 212 { DEFOP(Iop_F64toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 213 { DEFOP(Iop_F64toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 214 { DEFOP(Iop_I32StoF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 215 { DEFOP(Iop_I64StoF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 216 { DEFOP(Iop_I64UtoF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, // mips asserts 217 { DEFOP(Iop_I64UtoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 218 { DEFOP(Iop_I32UtoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 219 { DEFOP(Iop_I32UtoF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 220 { DEFOP(Iop_F32toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 221 { DEFOP(Iop_F32toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 222 { DEFOP(Iop_F32toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 223 { DEFOP(Iop_F32toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 224 { DEFOP(Iop_I32StoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 225 { DEFOP(Iop_I64StoF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 226 { DEFOP(Iop_F32toF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 227 { DEFOP(Iop_F64toF32, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 228 { DEFOP(Iop_ReinterpF64asI64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 229 { DEFOP(Iop_ReinterpI64asF64, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 230 { DEFOP(Iop_ReinterpF32asI32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 231 // ppc requires this op to show up in a specific context. So it cannot be 232 // tested standalone on that platform. 233 { DEFOP(Iop_ReinterpI32asF32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 234 { DEFOP(Iop_F64HLtoF128, UNDEF_CONCAT), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 235 { DEFOP(Iop_F128HItoF64, UNDEF_UPPER), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 236 { DEFOP(Iop_F128LOtoF64, UNDEF_TRUNC), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 237 { DEFOP(Iop_AddF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 238 { DEFOP(Iop_SubF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 239 { DEFOP(Iop_MulF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 240 { DEFOP(Iop_DivF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 241 { DEFOP(Iop_NegF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 242 { DEFOP(Iop_AbsF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 243 { DEFOP(Iop_SqrtF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 244 { DEFOP(Iop_I32StoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 245 { DEFOP(Iop_I64StoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 246 { DEFOP(Iop_I32UtoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 247 { DEFOP(Iop_I64UtoF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 248 { DEFOP(Iop_F32toF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 249 { DEFOP(Iop_F64toF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 250 { DEFOP(Iop_F128toI32S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 251 { DEFOP(Iop_F128toI64S, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 252 { DEFOP(Iop_F128toI32U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 253 { DEFOP(Iop_F128toI64U, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 254 { DEFOP(Iop_F128toF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 255 { DEFOP(Iop_F128toF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 256 { DEFOP(Iop_AtanF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 257 { DEFOP(Iop_Yl2xF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 258 { DEFOP(Iop_Yl2xp1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 259 { DEFOP(Iop_PRemF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 260 { DEFOP(Iop_PRemC3210F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 261 { DEFOP(Iop_PRem1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 262 { DEFOP(Iop_PRem1C3210F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 263 { DEFOP(Iop_ScaleF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 264 { DEFOP(Iop_SinF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 265 { DEFOP(Iop_CosF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 266 { DEFOP(Iop_TanF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 267 { DEFOP(Iop_2xm1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 268 { DEFOP(Iop_RoundF128toInt, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 269 { DEFOP(Iop_RoundF64toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 270 { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 }, 271 { DEFOP(Iop_MAddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 272 { DEFOP(Iop_MSubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 273 { DEFOP(Iop_MAddF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 274 { DEFOP(Iop_MSubF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 275 { DEFOP(Iop_MAddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 276 { DEFOP(Iop_MSubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 277 { DEFOP(Iop_RSqrtEst5GoodF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 278 { DEFOP(Iop_RoundF64toF64_NEAREST, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 279 { DEFOP(Iop_RoundF64toF64_NegINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 280 { DEFOP(Iop_RoundF64toF64_PosINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 281 { DEFOP(Iop_RoundF64toF64_ZERO, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, 282 { DEFOP(Iop_TruncF64asF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 }, // mips asserts 283 { DEFOP(Iop_RoundF64toF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0, .tilegx = 0 }, 284 { DEFOP(Iop_RecpExpF64, UNDEF_UNKNOWN), }, 285 { DEFOP(Iop_RecpExpF32, UNDEF_UNKNOWN), }, 286 287 /* ------------------ 16-bit scalar FP ------------------ */ 288 { DEFOP(Iop_F16toF64, UNDEF_ALL), .arm64 = 1 }, 289 { DEFOP(Iop_F64toF16, UNDEF_ALL), .arm64 = 1 }, 290 { DEFOP(Iop_F16toF32, UNDEF_ALL), .arm64 = 1 }, 291 { DEFOP(Iop_F32toF16, UNDEF_ALL), .arm64 = 1 }, 292 293 /* ------------------ 32-bit SIMD Integer ------------------ */ 294 { DEFOP(Iop_QAdd32S, UNDEF_UNKNOWN), }, 295 { DEFOP(Iop_QSub32S, UNDEF_UNKNOWN), }, 296 { DEFOP(Iop_Add16x2, UNDEF_UNKNOWN), }, 297 { DEFOP(Iop_Sub16x2, UNDEF_UNKNOWN), }, 298 { DEFOP(Iop_QAdd16Sx2, UNDEF_UNKNOWN), }, 299 { DEFOP(Iop_QAdd16Ux2, UNDEF_UNKNOWN), }, 300 { DEFOP(Iop_QSub16Sx2, UNDEF_UNKNOWN), }, 301 { DEFOP(Iop_QSub16Ux2, UNDEF_UNKNOWN), }, 302 { DEFOP(Iop_HAdd16Ux2, UNDEF_UNKNOWN), }, 303 { DEFOP(Iop_HAdd16Sx2, UNDEF_UNKNOWN), }, 304 { DEFOP(Iop_HSub16Ux2, UNDEF_UNKNOWN), }, 305 { DEFOP(Iop_HSub16Sx2, UNDEF_UNKNOWN), }, 306 { DEFOP(Iop_Add8x4, UNDEF_UNKNOWN), }, 307 { DEFOP(Iop_Sub8x4, UNDEF_UNKNOWN), }, 308 { DEFOP(Iop_QAdd8Sx4, UNDEF_UNKNOWN), }, 309 { DEFOP(Iop_QAdd8Ux4, UNDEF_UNKNOWN), }, 310 { DEFOP(Iop_QSub8Sx4, UNDEF_UNKNOWN), }, 311 { DEFOP(Iop_QSub8Ux4, UNDEF_UNKNOWN), }, 312 { DEFOP(Iop_HAdd8Ux4, UNDEF_UNKNOWN), }, 313 { DEFOP(Iop_HAdd8Sx4, UNDEF_UNKNOWN), }, 314 { DEFOP(Iop_HSub8Ux4, UNDEF_UNKNOWN), }, 315 { DEFOP(Iop_HSub8Sx4, UNDEF_UNKNOWN), }, 316 { DEFOP(Iop_Sad8Ux4, UNDEF_UNKNOWN), }, 317 { DEFOP(Iop_CmpNEZ16x2, UNDEF_UNKNOWN), }, 318 { DEFOP(Iop_CmpNEZ8x4, UNDEF_UNKNOWN), }, 319 /* ------------------ 64-bit SIMD FP ------------------------ */ 320 { DEFOP(Iop_I32UtoFx2, UNDEF_UNKNOWN), }, 321 { DEFOP(Iop_I32StoFx2, UNDEF_UNKNOWN), }, 322 { DEFOP(Iop_FtoI32Ux2_RZ, UNDEF_UNKNOWN), }, 323 { DEFOP(Iop_FtoI32Sx2_RZ, UNDEF_UNKNOWN), }, 324 { DEFOP(Iop_F32ToFixed32Ux2_RZ, UNDEF_UNKNOWN), }, 325 { DEFOP(Iop_F32ToFixed32Sx2_RZ, UNDEF_UNKNOWN), }, 326 { DEFOP(Iop_Fixed32UToF32x2_RN, UNDEF_UNKNOWN), }, 327 { DEFOP(Iop_Fixed32SToF32x2_RN, UNDEF_UNKNOWN), }, 328 { DEFOP(Iop_Max32Fx2, UNDEF_UNKNOWN), }, 329 { DEFOP(Iop_Min32Fx2, UNDEF_UNKNOWN), }, 330 { DEFOP(Iop_PwMax32Fx2, UNDEF_UNKNOWN), }, 331 { DEFOP(Iop_PwMin32Fx2, UNDEF_UNKNOWN), }, 332 { DEFOP(Iop_CmpEQ32Fx2, UNDEF_UNKNOWN), }, 333 { DEFOP(Iop_CmpGT32Fx2, UNDEF_UNKNOWN), }, 334 { DEFOP(Iop_CmpGE32Fx2, UNDEF_UNKNOWN), }, 335 { DEFOP(Iop_RecipEst32Fx2, UNDEF_UNKNOWN), }, 336 { DEFOP(Iop_RecipStep32Fx2, UNDEF_UNKNOWN), }, 337 { DEFOP(Iop_RSqrtEst32Fx2, UNDEF_UNKNOWN), }, 338 { DEFOP(Iop_RSqrtStep32Fx2, UNDEF_UNKNOWN), }, 339 { DEFOP(Iop_Neg32Fx2, UNDEF_UNKNOWN), }, 340 { DEFOP(Iop_Abs32Fx2, UNDEF_UNKNOWN), }, 341 /* ------------------ 64-bit SIMD Integer. ------------------ */ 342 { DEFOP(Iop_CmpNEZ8x8, UNDEF_UNKNOWN), }, 343 { DEFOP(Iop_CmpNEZ16x4, UNDEF_UNKNOWN), }, 344 { DEFOP(Iop_CmpNEZ32x2, UNDEF_UNKNOWN), }, 345 { DEFOP(Iop_Add8x8, UNDEF_UNKNOWN), }, 346 { DEFOP(Iop_Add16x4, UNDEF_UNKNOWN), }, 347 { DEFOP(Iop_Add32x2, UNDEF_UNKNOWN), }, 348 { DEFOP(Iop_QAdd8Ux8, UNDEF_UNKNOWN), }, 349 { DEFOP(Iop_QAdd16Ux4, UNDEF_UNKNOWN), }, 350 { DEFOP(Iop_QAdd32Ux2, UNDEF_UNKNOWN), }, 351 { DEFOP(Iop_QAdd64Ux1, UNDEF_UNKNOWN), }, 352 { DEFOP(Iop_QAdd8Sx8, UNDEF_UNKNOWN), }, 353 { DEFOP(Iop_QAdd16Sx4, UNDEF_UNKNOWN), }, 354 { DEFOP(Iop_QAdd32Sx2, UNDEF_UNKNOWN), }, 355 { DEFOP(Iop_QAdd64Sx1, UNDEF_UNKNOWN), }, 356 { DEFOP(Iop_PwAdd8x8, UNDEF_UNKNOWN), }, 357 { DEFOP(Iop_PwAdd16x4, UNDEF_UNKNOWN), }, 358 { DEFOP(Iop_PwAdd32x2, UNDEF_UNKNOWN), }, 359 { DEFOP(Iop_PwMax8Sx8, UNDEF_UNKNOWN), }, 360 { DEFOP(Iop_PwMax16Sx4, UNDEF_UNKNOWN), }, 361 { DEFOP(Iop_PwMax32Sx2, UNDEF_UNKNOWN), }, 362 { DEFOP(Iop_PwMax8Ux8, UNDEF_UNKNOWN), }, 363 { DEFOP(Iop_PwMax16Ux4, UNDEF_UNKNOWN), }, 364 { DEFOP(Iop_PwMax32Ux2, UNDEF_UNKNOWN), }, 365 { DEFOP(Iop_PwMin8Sx8, UNDEF_UNKNOWN), }, 366 { DEFOP(Iop_PwMin16Sx4, UNDEF_UNKNOWN), }, 367 { DEFOP(Iop_PwMin32Sx2, UNDEF_UNKNOWN), }, 368 { DEFOP(Iop_PwMin8Ux8, UNDEF_UNKNOWN), }, 369 { DEFOP(Iop_PwMin16Ux4, UNDEF_UNKNOWN), }, 370 { DEFOP(Iop_PwMin32Ux2, UNDEF_UNKNOWN), }, 371 { DEFOP(Iop_PwAddL8Ux8, UNDEF_UNKNOWN), }, 372 { DEFOP(Iop_PwAddL16Ux4, UNDEF_UNKNOWN), }, 373 { DEFOP(Iop_PwAddL32Ux2, UNDEF_UNKNOWN), }, 374 { DEFOP(Iop_PwAddL8Sx8, UNDEF_UNKNOWN), }, 375 { DEFOP(Iop_PwAddL16Sx4, UNDEF_UNKNOWN), }, 376 { DEFOP(Iop_PwAddL32Sx2, UNDEF_UNKNOWN), }, 377 { DEFOP(Iop_Sub8x8, UNDEF_UNKNOWN), }, 378 { DEFOP(Iop_Sub16x4, UNDEF_UNKNOWN), }, 379 { DEFOP(Iop_Sub32x2, UNDEF_UNKNOWN), }, 380 { DEFOP(Iop_QSub8Ux8, UNDEF_UNKNOWN), }, 381 { DEFOP(Iop_QSub16Ux4, UNDEF_UNKNOWN), }, 382 { DEFOP(Iop_QSub32Ux2, UNDEF_UNKNOWN), }, 383 { DEFOP(Iop_QSub64Ux1, UNDEF_UNKNOWN), }, 384 { DEFOP(Iop_QSub8Sx8, UNDEF_UNKNOWN), }, 385 { DEFOP(Iop_QSub16Sx4, UNDEF_UNKNOWN), }, 386 { DEFOP(Iop_QSub32Sx2, UNDEF_UNKNOWN), }, 387 { DEFOP(Iop_QSub64Sx1, UNDEF_UNKNOWN), }, 388 { DEFOP(Iop_Abs8x8, UNDEF_UNKNOWN), }, 389 { DEFOP(Iop_Abs16x4, UNDEF_UNKNOWN), }, 390 { DEFOP(Iop_Abs32x2, UNDEF_UNKNOWN), }, 391 { DEFOP(Iop_Mul8x8, UNDEF_UNKNOWN), }, 392 { DEFOP(Iop_Mul16x4, UNDEF_UNKNOWN), }, 393 { DEFOP(Iop_Mul32x2, UNDEF_UNKNOWN), }, 394 { DEFOP(Iop_Mul32Fx2, UNDEF_UNKNOWN), }, 395 { DEFOP(Iop_MulHi16Ux4, UNDEF_UNKNOWN), }, 396 { DEFOP(Iop_MulHi16Sx4, UNDEF_UNKNOWN), }, 397 { DEFOP(Iop_PolynomialMul8x8, UNDEF_UNKNOWN), }, 398 { DEFOP(Iop_QDMulHi16Sx4, UNDEF_UNKNOWN), }, 399 { DEFOP(Iop_QDMulHi32Sx2, UNDEF_UNKNOWN), }, 400 { DEFOP(Iop_QRDMulHi16Sx4, UNDEF_UNKNOWN), }, 401 { DEFOP(Iop_QRDMulHi32Sx2, UNDEF_UNKNOWN), }, 402 { DEFOP(Iop_Avg8Ux8, UNDEF_UNKNOWN), }, 403 { DEFOP(Iop_Avg16Ux4, UNDEF_UNKNOWN), }, 404 { DEFOP(Iop_Max8Sx8, UNDEF_UNKNOWN), }, 405 { DEFOP(Iop_Max16Sx4, UNDEF_UNKNOWN), }, 406 { DEFOP(Iop_Max32Sx2, UNDEF_UNKNOWN), }, 407 { DEFOP(Iop_Max8Ux8, UNDEF_UNKNOWN), }, 408 { DEFOP(Iop_Max16Ux4, UNDEF_UNKNOWN), }, 409 { DEFOP(Iop_Max32Ux2, UNDEF_UNKNOWN), }, 410 { DEFOP(Iop_Min8Sx8, UNDEF_UNKNOWN), }, 411 { DEFOP(Iop_Min16Sx4, UNDEF_UNKNOWN), }, 412 { DEFOP(Iop_Min32Sx2, UNDEF_UNKNOWN), }, 413 { DEFOP(Iop_Min8Ux8, UNDEF_UNKNOWN), }, 414 { DEFOP(Iop_Min16Ux4, UNDEF_UNKNOWN), }, 415 { DEFOP(Iop_Min32Ux2, UNDEF_UNKNOWN), }, 416 { DEFOP(Iop_CmpEQ8x8, UNDEF_UNKNOWN), }, 417 { DEFOP(Iop_CmpEQ16x4, UNDEF_UNKNOWN), }, 418 { DEFOP(Iop_CmpEQ32x2, UNDEF_UNKNOWN), }, 419 { DEFOP(Iop_CmpGT8Ux8, UNDEF_UNKNOWN), }, 420 { DEFOP(Iop_CmpGT16Ux4, UNDEF_UNKNOWN), }, 421 { DEFOP(Iop_CmpGT32Ux2, UNDEF_UNKNOWN), }, 422 { DEFOP(Iop_CmpGT8Sx8, UNDEF_UNKNOWN), }, 423 { DEFOP(Iop_CmpGT16Sx4, UNDEF_UNKNOWN), }, 424 { DEFOP(Iop_CmpGT32Sx2, UNDEF_UNKNOWN), }, 425 { DEFOP(Iop_Cnt8x8, UNDEF_UNKNOWN), }, 426 { DEFOP(Iop_Clz8x8, UNDEF_UNKNOWN), }, 427 { DEFOP(Iop_Clz16x4, UNDEF_UNKNOWN), }, 428 { DEFOP(Iop_Clz32x2, UNDEF_UNKNOWN), }, 429 { DEFOP(Iop_Cls8x8, UNDEF_UNKNOWN), }, 430 { DEFOP(Iop_Cls16x4, UNDEF_UNKNOWN), }, 431 { DEFOP(Iop_Cls32x2, UNDEF_UNKNOWN), }, 432 { DEFOP(Iop_Shl8x8, UNDEF_UNKNOWN), }, 433 { DEFOP(Iop_Shl16x4, UNDEF_UNKNOWN), }, 434 { DEFOP(Iop_Shl32x2, UNDEF_UNKNOWN), }, 435 { DEFOP(Iop_Shr8x8, UNDEF_UNKNOWN), }, 436 { DEFOP(Iop_Shr16x4, UNDEF_UNKNOWN), }, 437 { DEFOP(Iop_Shr32x2, UNDEF_UNKNOWN), }, 438 { DEFOP(Iop_Sar8x8, UNDEF_UNKNOWN), }, 439 { DEFOP(Iop_Sar16x4, UNDEF_UNKNOWN), }, 440 { DEFOP(Iop_Sar32x2, UNDEF_UNKNOWN), }, 441 { DEFOP(Iop_Sal8x8, UNDEF_UNKNOWN), }, 442 { DEFOP(Iop_Sal16x4, UNDEF_UNKNOWN), }, 443 { DEFOP(Iop_Sal32x2, UNDEF_UNKNOWN), }, 444 { DEFOP(Iop_Sal64x1, UNDEF_UNKNOWN), }, 445 { DEFOP(Iop_ShlN8x8, UNDEF_UNKNOWN), }, 446 { DEFOP(Iop_ShlN16x4, UNDEF_UNKNOWN), }, 447 { DEFOP(Iop_ShlN32x2, UNDEF_UNKNOWN), }, 448 { DEFOP(Iop_ShrN8x8, UNDEF_UNKNOWN), }, 449 { DEFOP(Iop_ShrN16x4, UNDEF_UNKNOWN), }, 450 { DEFOP(Iop_ShrN32x2, UNDEF_UNKNOWN), }, 451 { DEFOP(Iop_SarN8x8, UNDEF_UNKNOWN), }, 452 { DEFOP(Iop_SarN16x4, UNDEF_UNKNOWN), }, 453 { DEFOP(Iop_SarN32x2, UNDEF_UNKNOWN), }, 454 { DEFOP(Iop_QShl8x8, UNDEF_UNKNOWN), }, 455 { DEFOP(Iop_QShl16x4, UNDEF_UNKNOWN), }, 456 { DEFOP(Iop_QShl32x2, UNDEF_UNKNOWN), }, 457 { DEFOP(Iop_QShl64x1, UNDEF_UNKNOWN), }, 458 { DEFOP(Iop_QSal8x8, UNDEF_UNKNOWN), }, 459 { DEFOP(Iop_QSal16x4, UNDEF_UNKNOWN), }, 460 { DEFOP(Iop_QSal32x2, UNDEF_UNKNOWN), }, 461 { DEFOP(Iop_QSal64x1, UNDEF_UNKNOWN), }, 462 { DEFOP(Iop_QShlNsatSU8x8, UNDEF_UNKNOWN), }, 463 { DEFOP(Iop_QShlNsatSU16x4, UNDEF_UNKNOWN), }, 464 { DEFOP(Iop_QShlNsatSU32x2, UNDEF_UNKNOWN), }, 465 { DEFOP(Iop_QShlNsatSU64x1, UNDEF_UNKNOWN), }, 466 { DEFOP(Iop_QShlNsatUU8x8, UNDEF_UNKNOWN), }, 467 { DEFOP(Iop_QShlNsatUU16x4, UNDEF_UNKNOWN), }, 468 { DEFOP(Iop_QShlNsatUU32x2, UNDEF_UNKNOWN), }, 469 { DEFOP(Iop_QShlNsatUU64x1, UNDEF_UNKNOWN), }, 470 { DEFOP(Iop_QShlNsatSS8x8, UNDEF_UNKNOWN), }, 471 { DEFOP(Iop_QShlNsatSS16x4, UNDEF_UNKNOWN), }, 472 { DEFOP(Iop_QShlNsatSS32x2, UNDEF_UNKNOWN), }, 473 { DEFOP(Iop_QShlNsatSS64x1, UNDEF_UNKNOWN), }, 474 { DEFOP(Iop_QNarrowBin16Sto8Ux8, UNDEF_UNKNOWN), }, 475 { DEFOP(Iop_QNarrowBin16Sto8Sx8, UNDEF_UNKNOWN), }, 476 { DEFOP(Iop_QNarrowBin32Sto16Sx4, UNDEF_UNKNOWN), }, 477 { DEFOP(Iop_NarrowBin16to8x8, UNDEF_UNKNOWN), }, 478 { DEFOP(Iop_NarrowBin32to16x4, UNDEF_UNKNOWN), }, 479 { DEFOP(Iop_InterleaveHI8x8, UNDEF_UNKNOWN), }, 480 { DEFOP(Iop_InterleaveHI16x4, UNDEF_UNKNOWN), }, 481 { DEFOP(Iop_InterleaveHI32x2, UNDEF_UNKNOWN), }, 482 { DEFOP(Iop_InterleaveLO8x8, UNDEF_UNKNOWN), }, 483 { DEFOP(Iop_InterleaveLO16x4, UNDEF_UNKNOWN), }, 484 { DEFOP(Iop_InterleaveLO32x2, UNDEF_UNKNOWN), }, 485 { DEFOP(Iop_InterleaveOddLanes8x8, UNDEF_UNKNOWN), }, 486 { DEFOP(Iop_InterleaveEvenLanes8x8, UNDEF_UNKNOWN), }, 487 { DEFOP(Iop_InterleaveOddLanes16x4, UNDEF_UNKNOWN), }, 488 { DEFOP(Iop_InterleaveEvenLanes16x4, UNDEF_UNKNOWN), }, 489 { DEFOP(Iop_CatOddLanes8x8, UNDEF_UNKNOWN), }, 490 { DEFOP(Iop_CatOddLanes16x4, UNDEF_UNKNOWN), }, 491 { DEFOP(Iop_CatEvenLanes8x8, UNDEF_UNKNOWN), }, 492 { DEFOP(Iop_CatEvenLanes16x4, UNDEF_UNKNOWN), }, 493 { DEFOP(Iop_GetElem8x8, UNDEF_UNKNOWN), }, 494 { DEFOP(Iop_GetElem16x4, UNDEF_UNKNOWN), }, 495 { DEFOP(Iop_GetElem32x2, UNDEF_UNKNOWN), }, 496 { DEFOP(Iop_SetElem8x8, UNDEF_UNKNOWN), }, 497 { DEFOP(Iop_SetElem16x4, UNDEF_UNKNOWN), }, 498 { DEFOP(Iop_SetElem32x2, UNDEF_UNKNOWN), }, 499 { DEFOP(Iop_Dup8x8, UNDEF_UNKNOWN), }, 500 { DEFOP(Iop_Dup16x4, UNDEF_UNKNOWN), }, 501 { DEFOP(Iop_Dup32x2, UNDEF_UNKNOWN), }, 502 { DEFOP(Iop_Slice64, UNDEF_UNKNOWN), }, 503 { DEFOP(Iop_Reverse8sIn16_x4, UNDEF_UNKNOWN), }, 504 { DEFOP(Iop_Reverse8sIn32_x2, UNDEF_UNKNOWN), }, 505 { DEFOP(Iop_Reverse16sIn32_x2, UNDEF_UNKNOWN), }, 506 { DEFOP(Iop_Reverse8sIn64_x1, UNDEF_UNKNOWN), }, 507 { DEFOP(Iop_Reverse16sIn64_x1, UNDEF_UNKNOWN), }, 508 { DEFOP(Iop_Reverse32sIn64_x1, UNDEF_UNKNOWN), }, 509 { DEFOP(Iop_Perm8x8, UNDEF_UNKNOWN), }, 510 { DEFOP(Iop_GetMSBs8x8, UNDEF_UNKNOWN), }, 511 { DEFOP(Iop_RecipEst32Ux2, UNDEF_UNKNOWN), }, 512 { DEFOP(Iop_RSqrtEst32Ux2, UNDEF_UNKNOWN), }, 513 /* ------------------ Decimal Floating Point ------------------ */ 514 { DEFOP(Iop_AddD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 515 { DEFOP(Iop_SubD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 516 { DEFOP(Iop_MulD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 517 { DEFOP(Iop_DivD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 518 { DEFOP(Iop_AddD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 519 { DEFOP(Iop_SubD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 520 { DEFOP(Iop_MulD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 521 { DEFOP(Iop_DivD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 522 { DEFOP(Iop_ShlD64, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 523 { DEFOP(Iop_ShrD64, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 524 { DEFOP(Iop_ShlD128, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 525 { DEFOP(Iop_ShrD128, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 526 { DEFOP(Iop_D32toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 527 { DEFOP(Iop_D64toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 528 { DEFOP(Iop_I32StoD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 529 { DEFOP(Iop_I32UtoD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 530 { DEFOP(Iop_I64StoD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 531 { DEFOP(Iop_I64UtoD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 532 { DEFOP(Iop_D64toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 533 { DEFOP(Iop_D128toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 534 { DEFOP(Iop_I32StoD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 535 { DEFOP(Iop_I32UtoD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 536 { DEFOP(Iop_I64StoD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 537 { DEFOP(Iop_I64UtoD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 538 { DEFOP(Iop_D64toI32S, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 539 { DEFOP(Iop_D64toI32U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 540 { DEFOP(Iop_D64toI64S, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 541 { DEFOP(Iop_D64toI64U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 542 { DEFOP(Iop_D128toI64S, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 543 { DEFOP(Iop_D128toI64U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 544 { DEFOP(Iop_D128toI32S, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 545 { DEFOP(Iop_D128toI32U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 546 { DEFOP(Iop_F32toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 547 { DEFOP(Iop_F32toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 548 { DEFOP(Iop_F32toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 549 { DEFOP(Iop_F64toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 550 { DEFOP(Iop_F64toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 551 { DEFOP(Iop_F64toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 552 { DEFOP(Iop_F128toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 553 { DEFOP(Iop_F128toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 554 { DEFOP(Iop_F128toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 555 { DEFOP(Iop_D32toF32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 556 { DEFOP(Iop_D32toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 557 { DEFOP(Iop_D32toF128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 558 { DEFOP(Iop_D64toF32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 559 { DEFOP(Iop_D64toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 560 { DEFOP(Iop_D64toF128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 561 { DEFOP(Iop_D128toF32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 562 { DEFOP(Iop_D128toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 563 { DEFOP(Iop_D128toF128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 564 { DEFOP(Iop_RoundD64toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 565 { DEFOP(Iop_RoundD128toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 566 { DEFOP(Iop_CmpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 567 { DEFOP(Iop_CmpD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 568 { DEFOP(Iop_CmpExpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 569 { DEFOP(Iop_CmpExpD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 570 { DEFOP(Iop_QuantizeD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 571 { DEFOP(Iop_QuantizeD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 572 { DEFOP(Iop_SignificanceRoundD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 573 { DEFOP(Iop_SignificanceRoundD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 574 { DEFOP(Iop_ExtractExpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 575 { DEFOP(Iop_ExtractExpD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 576 { DEFOP(Iop_ExtractSigD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 577 { DEFOP(Iop_ExtractSigD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 }, 578 { DEFOP(Iop_InsertExpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 579 { DEFOP(Iop_InsertExpD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 580 { DEFOP(Iop_D64HLtoD128, UNDEF_CONCAT), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 581 { DEFOP(Iop_D128HItoD64, UNDEF_UPPER), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 582 { DEFOP(Iop_D128LOtoD64, UNDEF_TRUNC), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 583 { DEFOP(Iop_DPBtoBCD, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 584 { DEFOP(Iop_BCDtoDPB, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 }, 585 { DEFOP(Iop_ReinterpI64asD64, UNDEF_SAME), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 586 { DEFOP(Iop_ReinterpD64asI64, UNDEF_SAME), .s390x = 1, .ppc64 = 1, .ppc32 = 1 }, 587 /* ------------------ 128-bit SIMD FP. ------------------ */ 588 { DEFOP(Iop_Add32Fx4, UNDEF_UNKNOWN), }, 589 { DEFOP(Iop_Sub32Fx4, UNDEF_UNKNOWN), }, 590 { DEFOP(Iop_Mul32Fx4, UNDEF_UNKNOWN), }, 591 { DEFOP(Iop_Div32Fx4, UNDEF_UNKNOWN), }, 592 { DEFOP(Iop_Max32Fx4, UNDEF_UNKNOWN), }, 593 { DEFOP(Iop_Min32Fx4, UNDEF_UNKNOWN), }, 594 { DEFOP(Iop_Add32Fx2, UNDEF_UNKNOWN), }, 595 { DEFOP(Iop_Sub32Fx2, UNDEF_UNKNOWN), }, 596 { DEFOP(Iop_CmpEQ32Fx4, UNDEF_UNKNOWN), }, 597 { DEFOP(Iop_CmpLT32Fx4, UNDEF_UNKNOWN), }, 598 { DEFOP(Iop_CmpLE32Fx4, UNDEF_UNKNOWN), }, 599 { DEFOP(Iop_CmpUN32Fx4, UNDEF_UNKNOWN), }, 600 { DEFOP(Iop_CmpGT32Fx4, UNDEF_UNKNOWN), }, 601 { DEFOP(Iop_CmpGE32Fx4, UNDEF_UNKNOWN), }, 602 { DEFOP(Iop_PwMax32Fx4, UNDEF_UNKNOWN), }, 603 { DEFOP(Iop_PwMin32Fx4, UNDEF_UNKNOWN), }, 604 { DEFOP(Iop_Abs32Fx4, UNDEF_UNKNOWN), }, 605 { DEFOP(Iop_Sqrt32Fx4, UNDEF_UNKNOWN), }, 606 { DEFOP(Iop_Neg32Fx4, UNDEF_UNKNOWN), }, 607 { DEFOP(Iop_RecipEst32Fx4, UNDEF_UNKNOWN), }, 608 { DEFOP(Iop_RecipStep32Fx4, UNDEF_UNKNOWN), }, 609 { DEFOP(Iop_RSqrtEst32Fx4, UNDEF_UNKNOWN), }, 610 { DEFOP(Iop_RSqrtStep32Fx4, UNDEF_UNKNOWN), }, 611 { DEFOP(Iop_I32UtoFx4, UNDEF_UNKNOWN), }, 612 { DEFOP(Iop_I32StoFx4, UNDEF_UNKNOWN), }, 613 { DEFOP(Iop_FtoI32Ux4_RZ, UNDEF_UNKNOWN), }, 614 { DEFOP(Iop_FtoI32Sx4_RZ, UNDEF_UNKNOWN), }, 615 { DEFOP(Iop_QFtoI32Ux4_RZ, UNDEF_UNKNOWN), }, 616 { DEFOP(Iop_QFtoI32Sx4_RZ, UNDEF_UNKNOWN), }, 617 { DEFOP(Iop_RoundF32x4_RM, UNDEF_UNKNOWN), }, 618 { DEFOP(Iop_RoundF32x4_RP, UNDEF_UNKNOWN), }, 619 { DEFOP(Iop_RoundF32x4_RN, UNDEF_UNKNOWN), }, 620 { DEFOP(Iop_RoundF32x4_RZ, UNDEF_UNKNOWN), }, 621 { DEFOP(Iop_F32ToFixed32Ux4_RZ, UNDEF_UNKNOWN), }, 622 { DEFOP(Iop_F32ToFixed32Sx4_RZ, UNDEF_UNKNOWN), }, 623 { DEFOP(Iop_Fixed32UToF32x4_RN, UNDEF_UNKNOWN), }, 624 { DEFOP(Iop_Fixed32SToF32x4_RN, UNDEF_UNKNOWN), }, 625 { DEFOP(Iop_F32toF16x4, UNDEF_UNKNOWN), }, 626 { DEFOP(Iop_F16toF32x4, UNDEF_UNKNOWN), }, 627 { DEFOP(Iop_Add32F0x4, UNDEF_UNKNOWN), }, 628 { DEFOP(Iop_Sub32F0x4, UNDEF_UNKNOWN), }, 629 { DEFOP(Iop_Mul32F0x4, UNDEF_UNKNOWN), }, 630 { DEFOP(Iop_Div32F0x4, UNDEF_UNKNOWN), }, 631 { DEFOP(Iop_Max32F0x4, UNDEF_UNKNOWN), }, 632 { DEFOP(Iop_Min32F0x4, UNDEF_UNKNOWN), }, 633 { DEFOP(Iop_CmpEQ32F0x4, UNDEF_UNKNOWN), }, 634 { DEFOP(Iop_CmpLT32F0x4, UNDEF_UNKNOWN), }, 635 { DEFOP(Iop_CmpLE32F0x4, UNDEF_UNKNOWN), }, 636 { DEFOP(Iop_CmpUN32F0x4, UNDEF_UNKNOWN), }, 637 { DEFOP(Iop_RecipEst32F0x4, UNDEF_UNKNOWN), }, 638 { DEFOP(Iop_Sqrt32F0x4, UNDEF_UNKNOWN), }, 639 { DEFOP(Iop_RSqrtEst32F0x4, UNDEF_UNKNOWN), }, 640 { DEFOP(Iop_Add64Fx2, UNDEF_UNKNOWN), }, 641 { DEFOP(Iop_Sub64Fx2, UNDEF_UNKNOWN), }, 642 { DEFOP(Iop_Mul64Fx2, UNDEF_UNKNOWN), }, 643 { DEFOP(Iop_Div64Fx2, UNDEF_UNKNOWN), }, 644 { DEFOP(Iop_Max64Fx2, UNDEF_UNKNOWN), }, 645 { DEFOP(Iop_Min64Fx2, UNDEF_UNKNOWN), }, 646 { DEFOP(Iop_CmpEQ64Fx2, UNDEF_UNKNOWN), }, 647 { DEFOP(Iop_CmpLT64Fx2, UNDEF_UNKNOWN), }, 648 { DEFOP(Iop_CmpLE64Fx2, UNDEF_UNKNOWN), }, 649 { DEFOP(Iop_CmpUN64Fx2, UNDEF_UNKNOWN), }, 650 { DEFOP(Iop_Abs64Fx2, UNDEF_UNKNOWN), }, 651 { DEFOP(Iop_Sqrt64Fx2, UNDEF_UNKNOWN), }, 652 { DEFOP(Iop_Neg64Fx2, UNDEF_UNKNOWN), }, 653 { DEFOP(Iop_RecipEst64Fx2, UNDEF_UNKNOWN), }, 654 { DEFOP(Iop_RecipStep64Fx2, UNDEF_UNKNOWN), }, 655 { DEFOP(Iop_RSqrtEst64Fx2, UNDEF_UNKNOWN), }, 656 { DEFOP(Iop_RSqrtStep64Fx2, UNDEF_UNKNOWN), }, 657 { DEFOP(Iop_Add64F0x2, UNDEF_UNKNOWN), }, 658 { DEFOP(Iop_Sub64F0x2, UNDEF_UNKNOWN), }, 659 { DEFOP(Iop_Mul64F0x2, UNDEF_UNKNOWN), }, 660 { DEFOP(Iop_Div64F0x2, UNDEF_UNKNOWN), }, 661 { DEFOP(Iop_Max64F0x2, UNDEF_UNKNOWN), }, 662 { DEFOP(Iop_Min64F0x2, UNDEF_UNKNOWN), }, 663 { DEFOP(Iop_CmpEQ64F0x2, UNDEF_UNKNOWN), }, 664 { DEFOP(Iop_CmpLT64F0x2, UNDEF_UNKNOWN), }, 665 { DEFOP(Iop_CmpLE64F0x2, UNDEF_UNKNOWN), }, 666 { DEFOP(Iop_CmpUN64F0x2, UNDEF_UNKNOWN), }, 667 { DEFOP(Iop_Sqrt64F0x2, UNDEF_UNKNOWN), }, 668 { DEFOP(Iop_V128to64, UNDEF_UNKNOWN), }, 669 { DEFOP(Iop_V128HIto64, UNDEF_UNKNOWN), }, 670 { DEFOP(Iop_64HLtoV128, UNDEF_UNKNOWN), }, 671 { DEFOP(Iop_64UtoV128, UNDEF_UNKNOWN), }, 672 { DEFOP(Iop_SetV128lo64, UNDEF_UNKNOWN), }, 673 { DEFOP(Iop_ZeroHI64ofV128, UNDEF_UNKNOWN) }, 674 { DEFOP(Iop_ZeroHI96ofV128, UNDEF_UNKNOWN) }, 675 { DEFOP(Iop_ZeroHI112ofV128, UNDEF_UNKNOWN) }, 676 { DEFOP(Iop_ZeroHI120ofV128, UNDEF_UNKNOWN) }, 677 { DEFOP(Iop_32UtoV128, UNDEF_UNKNOWN), }, 678 { DEFOP(Iop_V128to32, UNDEF_UNKNOWN), }, 679 { DEFOP(Iop_SetV128lo32, UNDEF_UNKNOWN), }, 680 /* ------------------ 128-bit SIMD Integer. ------------------ */ 681 { DEFOP(Iop_NotV128, UNDEF_UNKNOWN), }, 682 { DEFOP(Iop_AndV128, UNDEF_UNKNOWN), }, 683 { DEFOP(Iop_OrV128, UNDEF_UNKNOWN), }, 684 { DEFOP(Iop_XorV128, UNDEF_UNKNOWN), }, 685 { DEFOP(Iop_ShlV128, UNDEF_UNKNOWN), }, 686 { DEFOP(Iop_ShrV128, UNDEF_UNKNOWN), }, 687 { DEFOP(Iop_CmpNEZ8x16, UNDEF_UNKNOWN), }, 688 { DEFOP(Iop_CmpNEZ16x8, UNDEF_UNKNOWN), }, 689 { DEFOP(Iop_CmpNEZ32x4, UNDEF_UNKNOWN), }, 690 { DEFOP(Iop_CmpNEZ64x2, UNDEF_UNKNOWN), }, 691 { DEFOP(Iop_Add8x16, UNDEF_UNKNOWN), }, 692 { DEFOP(Iop_Add16x8, UNDEF_UNKNOWN), }, 693 { DEFOP(Iop_Add32x4, UNDEF_UNKNOWN), }, 694 { DEFOP(Iop_Add64x2, UNDEF_UNKNOWN), }, 695 { DEFOP(Iop_QAdd8Ux16, UNDEF_UNKNOWN), }, 696 { DEFOP(Iop_QAdd16Ux8, UNDEF_UNKNOWN), }, 697 { DEFOP(Iop_QAdd32Ux4, UNDEF_UNKNOWN), }, 698 { DEFOP(Iop_QAdd64Ux2, UNDEF_UNKNOWN), }, 699 { DEFOP(Iop_QAdd8Sx16, UNDEF_UNKNOWN), }, 700 { DEFOP(Iop_QAdd16Sx8, UNDEF_UNKNOWN), }, 701 { DEFOP(Iop_QAdd32Sx4, UNDEF_UNKNOWN), }, 702 { DEFOP(Iop_QAdd64Sx2, UNDEF_UNKNOWN), }, 703 704 { DEFOP(Iop_QAddExtUSsatSS8x16, UNDEF_UNKNOWN), }, 705 { DEFOP(Iop_QAddExtUSsatSS16x8, UNDEF_UNKNOWN), }, 706 { DEFOP(Iop_QAddExtUSsatSS32x4, UNDEF_UNKNOWN), }, 707 { DEFOP(Iop_QAddExtUSsatSS64x2, UNDEF_UNKNOWN), }, 708 { DEFOP(Iop_QAddExtSUsatUU8x16, UNDEF_UNKNOWN), }, 709 { DEFOP(Iop_QAddExtSUsatUU16x8, UNDEF_UNKNOWN), }, 710 { DEFOP(Iop_QAddExtSUsatUU32x4, UNDEF_UNKNOWN), }, 711 { DEFOP(Iop_QAddExtSUsatUU64x2, UNDEF_UNKNOWN), }, 712 713 { DEFOP(Iop_Sub8x16, UNDEF_UNKNOWN), }, 714 { DEFOP(Iop_Sub16x8, UNDEF_UNKNOWN), }, 715 { DEFOP(Iop_Sub32x4, UNDEF_UNKNOWN), }, 716 { DEFOP(Iop_Sub64x2, UNDEF_UNKNOWN), }, 717 { DEFOP(Iop_QSub8Ux16, UNDEF_UNKNOWN), }, 718 { DEFOP(Iop_QSub16Ux8, UNDEF_UNKNOWN), }, 719 { DEFOP(Iop_QSub32Ux4, UNDEF_UNKNOWN), }, 720 { DEFOP(Iop_QSub64Ux2, UNDEF_UNKNOWN), }, 721 { DEFOP(Iop_QSub8Sx16, UNDEF_UNKNOWN), }, 722 { DEFOP(Iop_QSub16Sx8, UNDEF_UNKNOWN), }, 723 { DEFOP(Iop_QSub32Sx4, UNDEF_UNKNOWN), }, 724 { DEFOP(Iop_QSub64Sx2, UNDEF_UNKNOWN), }, 725 { DEFOP(Iop_Mul8x16, UNDEF_UNKNOWN), }, 726 { DEFOP(Iop_Mul16x8, UNDEF_UNKNOWN), }, 727 { DEFOP(Iop_Mul32x4, UNDEF_UNKNOWN), }, 728 { DEFOP(Iop_MulHi16Ux8, UNDEF_UNKNOWN), }, 729 { DEFOP(Iop_MulHi32Ux4, UNDEF_UNKNOWN), }, 730 { DEFOP(Iop_MulHi16Sx8, UNDEF_UNKNOWN), }, 731 { DEFOP(Iop_MulHi32Sx4, UNDEF_UNKNOWN), }, 732 { DEFOP(Iop_MullEven8Ux16, UNDEF_UNKNOWN), }, 733 { DEFOP(Iop_MullEven16Ux8, UNDEF_UNKNOWN), }, 734 { DEFOP(Iop_MullEven32Ux4, UNDEF_UNKNOWN), }, 735 { DEFOP(Iop_MullEven8Sx16, UNDEF_UNKNOWN), }, 736 { DEFOP(Iop_MullEven16Sx8, UNDEF_UNKNOWN), }, 737 { DEFOP(Iop_MullEven32Sx4, UNDEF_UNKNOWN), }, 738 { DEFOP(Iop_Mull8Ux8, UNDEF_UNKNOWN), }, 739 { DEFOP(Iop_Mull8Sx8, UNDEF_UNKNOWN), }, 740 { DEFOP(Iop_Mull16Ux4, UNDEF_UNKNOWN), }, 741 { DEFOP(Iop_Mull16Sx4, UNDEF_UNKNOWN), }, 742 { DEFOP(Iop_Mull32Ux2, UNDEF_UNKNOWN), }, 743 { DEFOP(Iop_Mull32Sx2, UNDEF_UNKNOWN), }, 744 { DEFOP(Iop_QDMulHi16Sx8, UNDEF_UNKNOWN), }, 745 { DEFOP(Iop_QDMulHi32Sx4, UNDEF_UNKNOWN), }, 746 { DEFOP(Iop_QRDMulHi16Sx8, UNDEF_UNKNOWN), }, 747 { DEFOP(Iop_QRDMulHi32Sx4, UNDEF_UNKNOWN), }, 748 { DEFOP(Iop_QDMull16Sx4, UNDEF_UNKNOWN), }, 749 { DEFOP(Iop_QDMull32Sx2, UNDEF_UNKNOWN), }, 750 { DEFOP(Iop_PolynomialMul8x16, UNDEF_UNKNOWN), }, 751 { DEFOP(Iop_PolynomialMull8x8, UNDEF_UNKNOWN), }, 752 { DEFOP(Iop_PwAdd8x16, UNDEF_UNKNOWN), }, 753 { DEFOP(Iop_PwAdd16x8, UNDEF_UNKNOWN), }, 754 { DEFOP(Iop_PwAdd32x4, UNDEF_UNKNOWN), }, 755 { DEFOP(Iop_PwAdd32Fx2, UNDEF_UNKNOWN), }, 756 { DEFOP(Iop_PwAddL8Ux16, UNDEF_UNKNOWN), }, 757 { DEFOP(Iop_PwAddL16Ux8, UNDEF_UNKNOWN), }, 758 { DEFOP(Iop_PwAddL32Ux4, UNDEF_UNKNOWN), }, 759 { DEFOP(Iop_PwAddL8Sx16, UNDEF_UNKNOWN), }, 760 { DEFOP(Iop_PwAddL16Sx8, UNDEF_UNKNOWN), }, 761 { DEFOP(Iop_PwAddL32Sx4, UNDEF_UNKNOWN), }, 762 { DEFOP(Iop_Abs8x16, UNDEF_UNKNOWN), }, 763 { DEFOP(Iop_Abs16x8, UNDEF_UNKNOWN), }, 764 { DEFOP(Iop_Abs32x4, UNDEF_UNKNOWN), }, 765 { DEFOP(Iop_Abs64x2, UNDEF_UNKNOWN), }, 766 { DEFOP(Iop_Avg8Ux16, UNDEF_UNKNOWN), }, 767 { DEFOP(Iop_Avg16Ux8, UNDEF_UNKNOWN), }, 768 { DEFOP(Iop_Avg32Ux4, UNDEF_UNKNOWN), }, 769 { DEFOP(Iop_Avg8Sx16, UNDEF_UNKNOWN), }, 770 { DEFOP(Iop_Avg16Sx8, UNDEF_UNKNOWN), }, 771 { DEFOP(Iop_Avg32Sx4, UNDEF_UNKNOWN), }, 772 { DEFOP(Iop_Max8Sx16, UNDEF_UNKNOWN), }, 773 { DEFOP(Iop_Max16Sx8, UNDEF_UNKNOWN), }, 774 { DEFOP(Iop_Max32Sx4, UNDEF_UNKNOWN), }, 775 { DEFOP(Iop_Max64Sx2, UNDEF_UNKNOWN), }, 776 { DEFOP(Iop_Max8Ux16, UNDEF_UNKNOWN), }, 777 { DEFOP(Iop_Max16Ux8, UNDEF_UNKNOWN), }, 778 { DEFOP(Iop_Max32Ux4, UNDEF_UNKNOWN), }, 779 { DEFOP(Iop_Max64Ux2, UNDEF_UNKNOWN), }, 780 { DEFOP(Iop_Min8Sx16, UNDEF_UNKNOWN), }, 781 { DEFOP(Iop_Min16Sx8, UNDEF_UNKNOWN), }, 782 { DEFOP(Iop_Min32Sx4, UNDEF_UNKNOWN), }, 783 { DEFOP(Iop_Min64Sx2, UNDEF_UNKNOWN), }, 784 { DEFOP(Iop_Min8Ux16, UNDEF_UNKNOWN), }, 785 { DEFOP(Iop_Min16Ux8, UNDEF_UNKNOWN), }, 786 { DEFOP(Iop_Min32Ux4, UNDEF_UNKNOWN), }, 787 { DEFOP(Iop_Min64Ux2, UNDEF_UNKNOWN), }, 788 { DEFOP(Iop_CmpEQ8x16, UNDEF_UNKNOWN), }, 789 { DEFOP(Iop_CmpEQ16x8, UNDEF_UNKNOWN), }, 790 { DEFOP(Iop_CmpEQ32x4, UNDEF_UNKNOWN), }, 791 { DEFOP(Iop_CmpEQ64x2, UNDEF_UNKNOWN), }, 792 { DEFOP(Iop_CmpGT8Sx16, UNDEF_UNKNOWN), }, 793 { DEFOP(Iop_CmpGT16Sx8, UNDEF_UNKNOWN), }, 794 { DEFOP(Iop_CmpGT32Sx4, UNDEF_UNKNOWN), }, 795 { DEFOP(Iop_CmpGT64Sx2, UNDEF_UNKNOWN), }, 796 { DEFOP(Iop_CmpGT8Ux16, UNDEF_UNKNOWN), }, 797 { DEFOP(Iop_CmpGT16Ux8, UNDEF_UNKNOWN), }, 798 { DEFOP(Iop_CmpGT32Ux4, UNDEF_UNKNOWN), }, 799 { DEFOP(Iop_CmpGT64Ux2, UNDEF_UNKNOWN), }, 800 { DEFOP(Iop_Cnt8x16, UNDEF_UNKNOWN), }, 801 { DEFOP(Iop_Clz8x16, UNDEF_UNKNOWN), }, 802 { DEFOP(Iop_Clz16x8, UNDEF_UNKNOWN), }, 803 { DEFOP(Iop_Clz32x4, UNDEF_UNKNOWN), }, 804 { DEFOP(Iop_Clz64x2, UNDEF_UNKNOWN), }, 805 { DEFOP(Iop_Cls8x16, UNDEF_UNKNOWN), }, 806 { DEFOP(Iop_Cls16x8, UNDEF_UNKNOWN), }, 807 { DEFOP(Iop_Cls32x4, UNDEF_UNKNOWN), }, 808 { DEFOP(Iop_ShlN8x16, UNDEF_UNKNOWN), }, 809 { DEFOP(Iop_ShlN16x8, UNDEF_UNKNOWN), }, 810 { DEFOP(Iop_ShlN32x4, UNDEF_UNKNOWN), }, 811 { DEFOP(Iop_ShlN64x2, UNDEF_UNKNOWN), }, 812 { DEFOP(Iop_ShrN8x16, UNDEF_UNKNOWN), }, 813 { DEFOP(Iop_ShrN16x8, UNDEF_UNKNOWN), }, 814 { DEFOP(Iop_ShrN32x4, UNDEF_UNKNOWN), }, 815 { DEFOP(Iop_ShrN64x2, UNDEF_UNKNOWN), }, 816 { DEFOP(Iop_SarN8x16, UNDEF_UNKNOWN), }, 817 { DEFOP(Iop_SarN16x8, UNDEF_UNKNOWN), }, 818 { DEFOP(Iop_SarN32x4, UNDEF_UNKNOWN), }, 819 { DEFOP(Iop_SarN64x2, UNDEF_UNKNOWN), }, 820 { DEFOP(Iop_Shl8x16, UNDEF_UNKNOWN), }, 821 { DEFOP(Iop_Shl16x8, UNDEF_UNKNOWN), }, 822 { DEFOP(Iop_Shl32x4, UNDEF_UNKNOWN), }, 823 { DEFOP(Iop_Shl64x2, UNDEF_UNKNOWN), }, 824 { DEFOP(Iop_Shr8x16, UNDEF_UNKNOWN), }, 825 { DEFOP(Iop_Shr16x8, UNDEF_UNKNOWN), }, 826 { DEFOP(Iop_Shr32x4, UNDEF_UNKNOWN), }, 827 { DEFOP(Iop_Shr64x2, UNDEF_UNKNOWN), }, 828 { DEFOP(Iop_Sar8x16, UNDEF_UNKNOWN), }, 829 { DEFOP(Iop_Sar16x8, UNDEF_UNKNOWN), }, 830 { DEFOP(Iop_Sar32x4, UNDEF_UNKNOWN), }, 831 { DEFOP(Iop_Sar64x2, UNDEF_UNKNOWN), }, 832 { DEFOP(Iop_Sal8x16, UNDEF_UNKNOWN), }, 833 { DEFOP(Iop_Sal16x8, UNDEF_UNKNOWN), }, 834 { DEFOP(Iop_Sal32x4, UNDEF_UNKNOWN), }, 835 { DEFOP(Iop_Sal64x2, UNDEF_UNKNOWN), }, 836 { DEFOP(Iop_Rol8x16, UNDEF_UNKNOWN), }, 837 { DEFOP(Iop_Rol16x8, UNDEF_UNKNOWN), }, 838 { DEFOP(Iop_Rol32x4, UNDEF_UNKNOWN), }, 839 { DEFOP(Iop_Rol64x2, UNDEF_UNKNOWN), }, 840 { DEFOP(Iop_QShl8x16, UNDEF_UNKNOWN), }, 841 { DEFOP(Iop_QShl16x8, UNDEF_UNKNOWN), }, 842 { DEFOP(Iop_QShl32x4, UNDEF_UNKNOWN), }, 843 { DEFOP(Iop_QShl64x2, UNDEF_UNKNOWN), }, 844 { DEFOP(Iop_QSal8x16, UNDEF_UNKNOWN), }, 845 { DEFOP(Iop_QSal16x8, UNDEF_UNKNOWN), }, 846 { DEFOP(Iop_QSal32x4, UNDEF_UNKNOWN), }, 847 { DEFOP(Iop_QSal64x2, UNDEF_UNKNOWN), }, 848 { DEFOP(Iop_QShlNsatSU8x16, UNDEF_UNKNOWN), }, 849 { DEFOP(Iop_QShlNsatSU16x8, UNDEF_UNKNOWN), }, 850 { DEFOP(Iop_QShlNsatSU32x4, UNDEF_UNKNOWN), }, 851 { DEFOP(Iop_QShlNsatSU64x2, UNDEF_UNKNOWN), }, 852 { DEFOP(Iop_QShlNsatUU8x16, UNDEF_UNKNOWN), }, 853 { DEFOP(Iop_QShlNsatUU16x8, UNDEF_UNKNOWN), }, 854 { DEFOP(Iop_QShlNsatUU32x4, UNDEF_UNKNOWN), }, 855 { DEFOP(Iop_QShlNsatUU64x2, UNDEF_UNKNOWN), }, 856 { DEFOP(Iop_QShlNsatSS8x16, UNDEF_UNKNOWN), }, 857 { DEFOP(Iop_QShlNsatSS16x8, UNDEF_UNKNOWN), }, 858 { DEFOP(Iop_QShlNsatSS32x4, UNDEF_UNKNOWN), }, 859 { DEFOP(Iop_QShlNsatSS64x2, UNDEF_UNKNOWN), }, 860 861 { DEFOP(Iop_QandUQsh8x16, UNDEF_UNKNOWN), }, 862 { DEFOP(Iop_QandUQsh16x8, UNDEF_UNKNOWN), }, 863 { DEFOP(Iop_QandUQsh32x4, UNDEF_UNKNOWN), }, 864 { DEFOP(Iop_QandUQsh64x2, UNDEF_UNKNOWN), }, 865 { DEFOP(Iop_QandSQsh8x16, UNDEF_UNKNOWN), }, 866 { DEFOP(Iop_QandSQsh16x8, UNDEF_UNKNOWN), }, 867 { DEFOP(Iop_QandSQsh32x4, UNDEF_UNKNOWN), }, 868 { DEFOP(Iop_QandSQsh64x2, UNDEF_UNKNOWN), }, 869 { DEFOP(Iop_QandUQRsh8x16, UNDEF_UNKNOWN), }, 870 { DEFOP(Iop_QandUQRsh16x8, UNDEF_UNKNOWN), }, 871 { DEFOP(Iop_QandUQRsh32x4, UNDEF_UNKNOWN), }, 872 { DEFOP(Iop_QandUQRsh64x2, UNDEF_UNKNOWN), }, 873 { DEFOP(Iop_QandSQRsh8x16, UNDEF_UNKNOWN), }, 874 { DEFOP(Iop_QandSQRsh16x8, UNDEF_UNKNOWN), }, 875 { DEFOP(Iop_QandSQRsh32x4, UNDEF_UNKNOWN), }, 876 { DEFOP(Iop_QandSQRsh64x2, UNDEF_UNKNOWN), }, 877 { DEFOP(Iop_Sh8Sx16, UNDEF_UNKNOWN), }, 878 { DEFOP(Iop_Sh16Sx8, UNDEF_UNKNOWN), }, 879 { DEFOP(Iop_Sh32Sx4, UNDEF_UNKNOWN), }, 880 { DEFOP(Iop_Sh64Sx2, UNDEF_UNKNOWN), }, 881 { DEFOP(Iop_Sh8Ux16, UNDEF_UNKNOWN), }, 882 { DEFOP(Iop_Sh16Ux8, UNDEF_UNKNOWN), }, 883 { DEFOP(Iop_Sh32Ux4, UNDEF_UNKNOWN), }, 884 { DEFOP(Iop_Sh64Ux2, UNDEF_UNKNOWN), }, 885 { DEFOP(Iop_Rsh8Sx16, UNDEF_UNKNOWN), }, 886 { DEFOP(Iop_Rsh16Sx8, UNDEF_UNKNOWN), }, 887 { DEFOP(Iop_Rsh32Sx4, UNDEF_UNKNOWN), }, 888 { DEFOP(Iop_Rsh64Sx2, UNDEF_UNKNOWN), }, 889 { DEFOP(Iop_Rsh8Ux16, UNDEF_UNKNOWN), }, 890 { DEFOP(Iop_Rsh16Ux8, UNDEF_UNKNOWN), }, 891 { DEFOP(Iop_Rsh32Ux4, UNDEF_UNKNOWN), }, 892 { DEFOP(Iop_Rsh64Ux2, UNDEF_UNKNOWN), }, 893 { DEFOP(Iop_QandQShrNnarrow16Uto8Ux8, UNDEF_UNKNOWN), }, 894 { DEFOP(Iop_QandQShrNnarrow32Uto16Ux4, UNDEF_UNKNOWN), }, 895 { DEFOP(Iop_QandQShrNnarrow64Uto32Ux2, UNDEF_UNKNOWN), }, 896 { DEFOP(Iop_QandQSarNnarrow16Sto8Sx8, UNDEF_UNKNOWN), }, 897 { DEFOP(Iop_QandQSarNnarrow32Sto16Sx4, UNDEF_UNKNOWN), }, 898 { DEFOP(Iop_QandQSarNnarrow64Sto32Sx2, UNDEF_UNKNOWN), }, 899 { DEFOP(Iop_QandQSarNnarrow16Sto8Ux8, UNDEF_UNKNOWN), }, 900 { DEFOP(Iop_QandQSarNnarrow32Sto16Ux4, UNDEF_UNKNOWN), }, 901 { DEFOP(Iop_QandQSarNnarrow64Sto32Ux2, UNDEF_UNKNOWN), }, 902 { DEFOP(Iop_QandQRShrNnarrow16Uto8Ux8, UNDEF_UNKNOWN), }, 903 { DEFOP(Iop_QandQRShrNnarrow32Uto16Ux4, UNDEF_UNKNOWN), }, 904 { DEFOP(Iop_QandQRShrNnarrow64Uto32Ux2, UNDEF_UNKNOWN), }, 905 { DEFOP(Iop_QandQRSarNnarrow16Sto8Sx8, UNDEF_UNKNOWN), }, 906 { DEFOP(Iop_QandQRSarNnarrow32Sto16Sx4, UNDEF_UNKNOWN), }, 907 { DEFOP(Iop_QandQRSarNnarrow64Sto32Sx2, UNDEF_UNKNOWN), }, 908 { DEFOP(Iop_QandQRSarNnarrow16Sto8Ux8, UNDEF_UNKNOWN), }, 909 { DEFOP(Iop_QandQRSarNnarrow32Sto16Ux4, UNDEF_UNKNOWN), }, 910 { DEFOP(Iop_QandQRSarNnarrow64Sto32Ux2, UNDEF_UNKNOWN), }, 911 912 { DEFOP(Iop_QNarrowBin16Sto8Ux16, UNDEF_UNKNOWN), }, 913 { DEFOP(Iop_QNarrowBin32Sto16Ux8, UNDEF_UNKNOWN), }, 914 { DEFOP(Iop_QNarrowBin16Sto8Sx16, UNDEF_UNKNOWN), }, 915 { DEFOP(Iop_QNarrowBin32Sto16Sx8, UNDEF_UNKNOWN), }, 916 { DEFOP(Iop_QNarrowBin16Uto8Ux16, UNDEF_UNKNOWN), }, 917 { DEFOP(Iop_QNarrowBin32Uto16Ux8, UNDEF_UNKNOWN), }, 918 { DEFOP(Iop_NarrowBin16to8x16, UNDEF_UNKNOWN), }, 919 { DEFOP(Iop_NarrowBin32to16x8, UNDEF_UNKNOWN), }, 920 { DEFOP(Iop_NarrowBin64to32x4, UNDEF_UNKNOWN), }, 921 { DEFOP(Iop_NarrowUn16to8x8, UNDEF_UNKNOWN), }, 922 { DEFOP(Iop_NarrowUn32to16x4, UNDEF_UNKNOWN), }, 923 { DEFOP(Iop_NarrowUn64to32x2, UNDEF_UNKNOWN), }, 924 { DEFOP(Iop_QNarrowUn16Sto8Sx8, UNDEF_UNKNOWN), }, 925 { DEFOP(Iop_QNarrowUn32Sto16Sx4, UNDEF_UNKNOWN), }, 926 { DEFOP(Iop_QNarrowUn64Sto32Sx2, UNDEF_UNKNOWN), }, 927 { DEFOP(Iop_QNarrowBin64Sto32Sx4, UNDEF_UNKNOWN), }, 928 { DEFOP(Iop_QNarrowUn16Sto8Ux8, UNDEF_UNKNOWN), }, 929 { DEFOP(Iop_QNarrowUn32Sto16Ux4, UNDEF_UNKNOWN), }, 930 { DEFOP(Iop_QNarrowUn64Sto32Ux2, UNDEF_UNKNOWN), }, 931 { DEFOP(Iop_QNarrowBin64Uto32Ux4, UNDEF_UNKNOWN), }, 932 { DEFOP(Iop_QNarrowUn16Uto8Ux8, UNDEF_UNKNOWN), }, 933 { DEFOP(Iop_QNarrowUn32Uto16Ux4, UNDEF_UNKNOWN), }, 934 { DEFOP(Iop_QNarrowUn64Uto32Ux2, UNDEF_UNKNOWN), }, 935 { DEFOP(Iop_Widen8Uto16x8, UNDEF_UNKNOWN), }, 936 { DEFOP(Iop_Widen16Uto32x4, UNDEF_UNKNOWN), }, 937 { DEFOP(Iop_Widen32Uto64x2, UNDEF_UNKNOWN), }, 938 { DEFOP(Iop_Widen8Sto16x8, UNDEF_UNKNOWN), }, 939 { DEFOP(Iop_Widen16Sto32x4, UNDEF_UNKNOWN), }, 940 { DEFOP(Iop_Widen32Sto64x2, UNDEF_UNKNOWN), }, 941 { DEFOP(Iop_InterleaveHI8x16, UNDEF_UNKNOWN), }, 942 { DEFOP(Iop_InterleaveHI16x8, UNDEF_UNKNOWN), }, 943 { DEFOP(Iop_InterleaveHI32x4, UNDEF_UNKNOWN), }, 944 { DEFOP(Iop_InterleaveHI64x2, UNDEF_UNKNOWN), }, 945 { DEFOP(Iop_InterleaveLO8x16, UNDEF_UNKNOWN), }, 946 { DEFOP(Iop_InterleaveLO16x8, UNDEF_UNKNOWN), }, 947 { DEFOP(Iop_InterleaveLO32x4, UNDEF_UNKNOWN), }, 948 { DEFOP(Iop_InterleaveLO64x2, UNDEF_UNKNOWN), }, 949 { DEFOP(Iop_InterleaveOddLanes8x16, UNDEF_UNKNOWN), }, 950 { DEFOP(Iop_InterleaveEvenLanes8x16, UNDEF_UNKNOWN), }, 951 { DEFOP(Iop_InterleaveOddLanes16x8, UNDEF_UNKNOWN), }, 952 { DEFOP(Iop_InterleaveEvenLanes16x8, UNDEF_UNKNOWN), }, 953 { DEFOP(Iop_InterleaveOddLanes32x4, UNDEF_UNKNOWN), }, 954 { DEFOP(Iop_InterleaveEvenLanes32x4, UNDEF_UNKNOWN), }, 955 { DEFOP(Iop_CatOddLanes8x16, UNDEF_UNKNOWN), }, 956 { DEFOP(Iop_CatOddLanes16x8, UNDEF_UNKNOWN), }, 957 { DEFOP(Iop_CatOddLanes32x4, UNDEF_UNKNOWN), }, 958 { DEFOP(Iop_CatEvenLanes8x16, UNDEF_UNKNOWN), }, 959 { DEFOP(Iop_CatEvenLanes16x8, UNDEF_UNKNOWN), }, 960 { DEFOP(Iop_CatEvenLanes32x4, UNDEF_UNKNOWN), }, 961 { DEFOP(Iop_GetElem8x16, UNDEF_UNKNOWN), }, 962 { DEFOP(Iop_GetElem16x8, UNDEF_UNKNOWN), }, 963 { DEFOP(Iop_GetElem32x4, UNDEF_UNKNOWN), }, 964 { DEFOP(Iop_GetElem64x2, UNDEF_UNKNOWN), }, 965 { DEFOP(Iop_Dup8x16, UNDEF_UNKNOWN), }, 966 { DEFOP(Iop_Dup16x8, UNDEF_UNKNOWN), }, 967 { DEFOP(Iop_Dup32x4, UNDEF_UNKNOWN), }, 968 { DEFOP(Iop_SliceV128, UNDEF_UNKNOWN), }, 969 { DEFOP(Iop_Reverse8sIn16_x8, UNDEF_UNKNOWN), }, 970 { DEFOP(Iop_Reverse8sIn32_x4, UNDEF_UNKNOWN), }, 971 { DEFOP(Iop_Reverse16sIn32_x4, UNDEF_UNKNOWN), }, 972 { DEFOP(Iop_Reverse8sIn64_x2, UNDEF_UNKNOWN), }, 973 { DEFOP(Iop_Reverse16sIn64_x2, UNDEF_UNKNOWN), }, 974 { DEFOP(Iop_Reverse32sIn64_x2, UNDEF_UNKNOWN), }, 975 { DEFOP(Iop_Reverse1sIn8_x16, UNDEF_UNKNOWN), }, 976 { DEFOP(Iop_Perm8x16, UNDEF_UNKNOWN), }, 977 { DEFOP(Iop_Perm32x4, UNDEF_UNKNOWN), }, 978 { DEFOP(Iop_GetMSBs8x16, UNDEF_UNKNOWN), }, 979 { DEFOP(Iop_RecipEst32Ux4, UNDEF_UNKNOWN), }, 980 { DEFOP(Iop_RSqrtEst32Ux4, UNDEF_UNKNOWN), }, 981 /* ------------------ 256-bit SIMD Integer. ------------------ */ 982 { DEFOP(Iop_V256to64_0, UNDEF_UNKNOWN), }, 983 { DEFOP(Iop_V256to64_1, UNDEF_UNKNOWN), }, 984 { DEFOP(Iop_V256to64_2, UNDEF_UNKNOWN), }, 985 { DEFOP(Iop_V256to64_3, UNDEF_UNKNOWN), }, 986 { DEFOP(Iop_64x4toV256, UNDEF_UNKNOWN), }, 987 { DEFOP(Iop_V256toV128_0, UNDEF_UNKNOWN), }, 988 { DEFOP(Iop_V256toV128_1, UNDEF_UNKNOWN), }, 989 { DEFOP(Iop_V128HLtoV256, UNDEF_UNKNOWN), }, 990 { DEFOP(Iop_AndV256, UNDEF_UNKNOWN), }, 991 { DEFOP(Iop_OrV256, UNDEF_UNKNOWN), }, 992 { DEFOP(Iop_XorV256, UNDEF_UNKNOWN), }, 993 { DEFOP(Iop_NotV256, UNDEF_UNKNOWN), }, 994 /* --------------- MISC (vector integer cmp != 0) -------------*/ 995 { DEFOP(Iop_CmpNEZ8x32, UNDEF_UNKNOWN), }, 996 { DEFOP(Iop_CmpNEZ16x16, UNDEF_UNKNOWN), }, 997 { DEFOP(Iop_CmpNEZ32x8, UNDEF_UNKNOWN), }, 998 { DEFOP(Iop_CmpNEZ64x4, UNDEF_UNKNOWN), }, 999 { DEFOP(Iop_Add8x32, UNDEF_UNKNOWN), }, 1000 { DEFOP(Iop_Add16x16, UNDEF_UNKNOWN), }, 1001 { DEFOP(Iop_Add32x8, UNDEF_UNKNOWN), }, 1002 { DEFOP(Iop_Add64x4, UNDEF_UNKNOWN), }, 1003 { DEFOP(Iop_Sub8x32, UNDEF_UNKNOWN), }, 1004 { DEFOP(Iop_Sub16x16, UNDEF_UNKNOWN), }, 1005 { DEFOP(Iop_Sub32x8, UNDEF_UNKNOWN), }, 1006 { DEFOP(Iop_Sub64x4, UNDEF_UNKNOWN), }, 1007 { DEFOP(Iop_CmpEQ8x32, UNDEF_UNKNOWN), }, 1008 { DEFOP(Iop_CmpEQ16x16, UNDEF_UNKNOWN), }, 1009 { DEFOP(Iop_CmpEQ32x8, UNDEF_UNKNOWN), }, 1010 { DEFOP(Iop_CmpEQ64x4, UNDEF_UNKNOWN), }, 1011 { DEFOP(Iop_CmpGT8Sx32, UNDEF_UNKNOWN), }, 1012 { DEFOP(Iop_CmpGT16Sx16, UNDEF_UNKNOWN), }, 1013 { DEFOP(Iop_CmpGT32Sx8, UNDEF_UNKNOWN), }, 1014 { DEFOP(Iop_CmpGT64Sx4, UNDEF_UNKNOWN), }, 1015 { DEFOP(Iop_ShlN16x16, UNDEF_UNKNOWN), }, 1016 { DEFOP(Iop_ShlN32x8, UNDEF_UNKNOWN), }, 1017 { DEFOP(Iop_ShlN64x4, UNDEF_UNKNOWN), }, 1018 { DEFOP(Iop_ShrN16x16, UNDEF_UNKNOWN), }, 1019 { DEFOP(Iop_ShrN32x8, UNDEF_UNKNOWN), }, 1020 { DEFOP(Iop_ShrN64x4, UNDEF_UNKNOWN), }, 1021 { DEFOP(Iop_SarN16x16, UNDEF_UNKNOWN), }, 1022 { DEFOP(Iop_SarN32x8, UNDEF_UNKNOWN), }, 1023 { DEFOP(Iop_Max8Sx32, UNDEF_UNKNOWN), }, 1024 { DEFOP(Iop_Max16Sx16, UNDEF_UNKNOWN), }, 1025 { DEFOP(Iop_Max32Sx8, UNDEF_UNKNOWN), }, 1026 { DEFOP(Iop_Max8Ux32, UNDEF_UNKNOWN), }, 1027 { DEFOP(Iop_Max16Ux16, UNDEF_UNKNOWN), }, 1028 { DEFOP(Iop_Max32Ux8, UNDEF_UNKNOWN), }, 1029 { DEFOP(Iop_Min8Sx32, UNDEF_UNKNOWN), }, 1030 { DEFOP(Iop_Min16Sx16, UNDEF_UNKNOWN), }, 1031 { DEFOP(Iop_Min32Sx8, UNDEF_UNKNOWN), }, 1032 { DEFOP(Iop_Min8Ux32, UNDEF_UNKNOWN), }, 1033 { DEFOP(Iop_Min16Ux16, UNDEF_UNKNOWN), }, 1034 { DEFOP(Iop_Min32Ux8, UNDEF_UNKNOWN), }, 1035 { DEFOP(Iop_Mul16x16, UNDEF_UNKNOWN), }, 1036 { DEFOP(Iop_Mul32x8, UNDEF_UNKNOWN), }, 1037 { DEFOP(Iop_MulHi16Ux16, UNDEF_UNKNOWN), }, 1038 { DEFOP(Iop_MulHi16Sx16, UNDEF_UNKNOWN), }, 1039 { DEFOP(Iop_QAdd8Ux32, UNDEF_UNKNOWN), }, 1040 { DEFOP(Iop_QAdd16Ux16, UNDEF_UNKNOWN), }, 1041 { DEFOP(Iop_QAdd8Sx32, UNDEF_UNKNOWN), }, 1042 { DEFOP(Iop_QAdd16Sx16, UNDEF_UNKNOWN), }, 1043 { DEFOP(Iop_QSub8Ux32, UNDEF_UNKNOWN), }, 1044 { DEFOP(Iop_QSub16Ux16, UNDEF_UNKNOWN), }, 1045 { DEFOP(Iop_QSub8Sx32, UNDEF_UNKNOWN), }, 1046 { DEFOP(Iop_QSub16Sx16, UNDEF_UNKNOWN), }, 1047 { DEFOP(Iop_Avg8Ux32, UNDEF_UNKNOWN), }, 1048 { DEFOP(Iop_Avg16Ux16, UNDEF_UNKNOWN), }, 1049 { DEFOP(Iop_Perm32x8, UNDEF_UNKNOWN), }, 1050 /* ------------------ 256-bit SIMD FP. ------------------ */ 1051 { DEFOP(Iop_Add64Fx4, UNDEF_UNKNOWN), }, 1052 { DEFOP(Iop_Sub64Fx4, UNDEF_UNKNOWN), }, 1053 { DEFOP(Iop_Mul64Fx4, UNDEF_UNKNOWN), }, 1054 { DEFOP(Iop_Div64Fx4, UNDEF_UNKNOWN), }, 1055 { DEFOP(Iop_Add32Fx8, UNDEF_UNKNOWN), }, 1056 { DEFOP(Iop_Sub32Fx8, UNDEF_UNKNOWN), }, 1057 { DEFOP(Iop_Mul32Fx8, UNDEF_UNKNOWN), }, 1058 { DEFOP(Iop_Div32Fx8, UNDEF_UNKNOWN), }, 1059 { DEFOP(Iop_Sqrt32Fx8, UNDEF_UNKNOWN), }, 1060 { DEFOP(Iop_Sqrt64Fx4, UNDEF_UNKNOWN), }, 1061 { DEFOP(Iop_RSqrtEst32Fx8, UNDEF_UNKNOWN), }, 1062 { DEFOP(Iop_RecipEst32Fx8, UNDEF_UNKNOWN), }, 1063 { DEFOP(Iop_Max32Fx8, UNDEF_UNKNOWN), }, 1064 { DEFOP(Iop_Min32Fx8, UNDEF_UNKNOWN), }, 1065 { DEFOP(Iop_Max64Fx4, UNDEF_UNKNOWN), }, 1066 { DEFOP(Iop_Min64Fx4, UNDEF_UNKNOWN), }, 1067 { DEFOP(Iop_BCDAdd, UNDEF_UNKNOWN), }, 1068 { DEFOP(Iop_BCDSub, UNDEF_UNKNOWN), }, 1069 { DEFOP(Iop_PolynomialMulAdd8x16, UNDEF_UNKNOWN), }, 1070 { DEFOP(Iop_PolynomialMulAdd16x8, UNDEF_UNKNOWN), }, 1071 { DEFOP(Iop_PolynomialMulAdd32x4, UNDEF_UNKNOWN), }, 1072 { DEFOP(Iop_PolynomialMulAdd64x2, UNDEF_UNKNOWN), }, 1073 { DEFOP(Iop_CipherV128, UNDEF_UNKNOWN), }, 1074 { DEFOP(Iop_CipherLV128, UNDEF_UNKNOWN), }, 1075 { DEFOP(Iop_CipherSV128, UNDEF_UNKNOWN), }, 1076 { DEFOP(Iop_NCipherV128, UNDEF_UNKNOWN), }, 1077 { DEFOP(Iop_NCipherLV128, UNDEF_UNKNOWN), }, 1078 { DEFOP(Iop_SHA512, UNDEF_UNKNOWN), }, 1079 { DEFOP(Iop_SHA256, UNDEF_UNKNOWN), }, 1080 { DEFOP(Iop_PwBitMtxXpose64x2, UNDEF_UNKNOWN), }, 1081 }; 1082 1083 /* Force compile time failure in case libvex_ir.h::IROp was updated 1084 and the irops array is out of synch */ 1085 STATIC_ASSERT \ 1086 (sizeof irops / sizeof *irops == Iop_LAST - Iop_INVALID - 1); 1087 1088 /* Return a descriptor for OP, iff it exists and it is implemented 1089 for the current architecture. */ 1090 irop_t * 1091 get_irop(IROp op) 1092 { 1093 unsigned i; 1094 1095 for (i = 0; i < sizeof irops / sizeof *irops; ++i) { 1096 irop_t *p = irops + i; 1097 if (p->op == op) { 1098 #ifdef __s390x__ 1099 #define S390X_FEATURES "../../../tests/s390x_features" 1100 switch (op) { 1101 case Iop_I32StoD64: // CDFTR 1102 case Iop_I32StoD128: // CXFTR 1103 case Iop_I32UtoD64: // CDLFTR 1104 case Iop_I32UtoD128: // CXLFTR 1105 case Iop_I64UtoD64: // CDLGTR 1106 case Iop_I64UtoD128: // CXLGTR 1107 case Iop_D64toI32S: // CFDTR 1108 case Iop_D128toI32S: // CFXTR 1109 case Iop_D64toI64U: // CLGDTR 1110 case Iop_D64toI32U: // CLFDTR 1111 case Iop_D128toI64U: // CLGXTR 1112 case Iop_D128toI32U: // CLFXTR 1113 case Iop_I32UtoF32: 1114 case Iop_I32UtoF64: 1115 case Iop_I32UtoF128: 1116 case Iop_I64UtoF32: 1117 case Iop_I64UtoF64: 1118 case Iop_I64UtoF128: 1119 case Iop_F32toI32U: 1120 case Iop_F32toI64U: 1121 case Iop_F64toI32U: 1122 case Iop_F64toI64U: 1123 case Iop_F128toI32U: 1124 case Iop_F128toI64U: { 1125 int rc; 1126 /* These IROps require the floating point extension facility */ 1127 rc = system(S390X_FEATURES " s390x-fpext"); 1128 // s390x_features returns 1 if feature does not exist 1129 rc /= 256; 1130 if (rc != 0) return NULL; 1131 } 1132 break; 1133 /* PFPO Iops */ 1134 case Iop_F32toD32: 1135 case Iop_F32toD64: 1136 case Iop_F32toD128: 1137 case Iop_F64toD32: 1138 case Iop_F64toD64: 1139 case Iop_F64toD128: 1140 case Iop_F128toD32: 1141 case Iop_F128toD64: 1142 case Iop_F128toD128: 1143 case Iop_D32toF32: 1144 case Iop_D32toF64: 1145 case Iop_D32toF128: 1146 case Iop_D64toF32: 1147 case Iop_D64toF64: 1148 case Iop_D64toF128: 1149 case Iop_D128toF32: 1150 case Iop_D128toF64: 1151 case Iop_D128toF128: { 1152 int rc; 1153 /* These IROps require the Perform Floating Point Operation 1154 facility */ 1155 rc = system(S390X_FEATURES " s390x-pfpo"); 1156 // s390x_features returns 1 if feature does not exist 1157 rc /= 256; 1158 if (rc != 0) return NULL; 1159 } 1160 break; 1161 /* Other */ 1162 default: 1163 break; 1164 } 1165 return p->s390x ? p : NULL; 1166 #endif 1167 #ifdef __x86_64__ 1168 return p->amd64 ? p : NULL; 1169 #endif 1170 #ifdef __powerpc__ 1171 #define MIN_POWER_ISA "../../../tests/min_power_isa" 1172 1173 switch (op) { 1174 case Iop_DivS64E: 1175 case Iop_DivU64E: 1176 case Iop_DivU32E: 1177 case Iop_DivS32E: 1178 case Iop_F64toI64U: 1179 case Iop_F64toI32U: 1180 case Iop_I64UtoF64: 1181 case Iop_I64UtoF32: 1182 case Iop_I64StoD64: { 1183 int rc; 1184 /* IROps require a processor that supports ISA 2.06 or newer */ 1185 rc = system(MIN_POWER_ISA " 2.06 "); 1186 rc /= 256; 1187 /* MIN_POWER_ISA returns 0 if underlying HW supports the 1188 * specified ISA or newer. Returns 1 if the HW does not support 1189 * the specified ISA. Returns 2 on error. 1190 */ 1191 if (rc == 1) return NULL; 1192 if (rc > 2) { 1193 panic(" ERROR, min_power_isa() return code is invalid.\n"); 1194 } 1195 } 1196 break; 1197 1198 /* Other */ 1199 default: 1200 break; 1201 } 1202 1203 #ifdef __powerpc64__ 1204 return p->ppc64 ? p : NULL; 1205 #else 1206 return p->ppc32 ? p : NULL; 1207 #endif 1208 #endif 1209 #ifdef __mips__ 1210 #if (__mips==64) 1211 return p->mips64 ? p : NULL; 1212 #else 1213 return p->mips32 ? p : NULL; 1214 #endif 1215 #endif 1216 #ifdef __arm__ 1217 return p->arm ? p : NULL; 1218 #endif 1219 #ifdef __i386__ 1220 return p->x86 ? p : NULL; 1221 #endif 1222 #ifdef __tilegx__ 1223 return p->tilegx ? p : NULL; 1224 #endif 1225 return NULL; 1226 } 1227 } 1228 1229 fprintf(stderr, "unknown opcode %d\n", op); 1230 exit(1); 1231 } 1232