1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* HOW TO COMPILE FOR SWITCHBACK: 3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov gcc -O -c test_ppc_jm1.c -mregnames -Wall 5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov*/ 7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#undef HAS_ALTIVEC 9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define NO_FLOAT 10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#undef IS_PPC405 11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* 14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * test-ppc.c: 15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * PPC tests for qemu-PPC CPU emulation checks 16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * 17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Copyright (c) 2005 Jocelyn Mayer 18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * 19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * This program is free software; you can redistribute it and/or 20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * modify it under the terms of the GNU General Public License V2 21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * as published by the Free Software Foundation. 22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* 25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Theory of operations: 26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * a few registers are reserved for the test program: 27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * r14 => r18 28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * f14 => f18 29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * I do preload test values in r14 thru r17 (or less, depending on the number 30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * of register operands needed), patch the test opcode if any immediate 31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * operands are required, execute the tested opcode. 32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * XER, CCR and FPSCR are cleared before every test. 33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * I always get the result in r17 and also save XER and CCR for fixed-point 34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * operations. I also check FPSCR for floating points operations. 35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * 36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Improvments: 37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * a more cleaver FPSCR management is needed: for now, I always test 38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * the round-to-zero case. Other rounding modes also need to be tested. 39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdint.h> 42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <stdlib.h> 43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <stdio.h> 44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <string.h> 45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <unistd.h> 46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <fcntl.h> 47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <ctype.h> 48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <math.h> 49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include <fenv.h> 50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define NULL ((void*)0) 52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include "test-ppc.h" 54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// BEGIN #include "test-ppc.h" 56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* 57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * test-ppc.h: 58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * PPC tests for qemu-PPC CPU emulation checks - definitions 59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * 60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Copyright (c) 2005 Jocelyn Mayer 61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * 62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * This program is free software; you can redistribute it and/or 63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * modify it under the terms of the GNU General Public License V2 64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * as published by the Free Software Foundation. 65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (__TEST_PPC_H__) 68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __TEST_PPC_H__ 69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef void (*test_func_t) (void); 71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct test_t test_t; 72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct test_table_t test_table_t; 73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct test_t { 74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_func_t func; 75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const unsigned char *name; 76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct test_table_t { 79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_t *tests; 80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const unsigned char *name; 81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int flags; 82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef void (*test_loop_t) (const unsigned char *name, test_func_t func); 85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovenum test_flags { 87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Nb arguments */ 88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_ONE_ARG = 0x00000001, 89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_TWO_ARGS = 0x00000002, 90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_THREE_ARGS = 0x00000003, 91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CMP_ARGS = 0x00000004, 92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CMPI_ARGS = 0x00000005, 93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_TWO_I16 = 0x00000006, 94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_SPECIAL = 0x00000007, 95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_NB_ARGS = 0x0000000F, 96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Type */ 97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_ARITH = 0x00000100, 98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_LOGICAL = 0x00000200, 99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_COMPARE = 0x00000300, 100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CROP = 0x00000400, 101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_TYPE = 0x00000F00, 102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Family */ 103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_INTEGER = 0x00010000, 104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_FLOAT = 0x00020000, 105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_405 = 0x00030000, 106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_ALTIVEC = 0x00040000, 107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_FALTIVEC = 0x00050000, 108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_FAMILY = 0x000F0000, 109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Flags */ 110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CR = 0x01000000, 111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (__TEST_PPC_H__) */ 114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// END #include "test-ppc.h" 116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#define DEBUG_ARGS_BUILD 121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (DEBUG_ARGS_BUILD) 122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define AB_DPRINTF(fmt, args...) do { vexxx_printf(fmt , ##args); } while (0) 123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define AB_DPRINTF(fmt, args...) do { } while (0) 125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#define DEBUG_FILTER 128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (DEBUG_FILTER) 129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define FDPRINTF(fmt, args...) do { vexxx_printf(fmt , ##args); } while (0) 130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define FDPRINTF(fmt, args...) do { } while (0) 132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister double f14 __asm__ ("f14"); 136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister double f15 __asm__ ("f15"); 137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister double f16 __asm__ ("f16"); 138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister double f17 __asm__ ("f17"); 139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister double f18 __asm__ ("f18"); 140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister uint32_t r14 __asm__ ("r14"); 142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister uint32_t r15 __asm__ ("r15"); 143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister uint32_t r16 __asm__ ("r16"); 144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister uint32_t r17 __asm__ ("r17"); 145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovregister uint32_t r18 __asm__ ("r18"); 146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Something which has the same size as void* on the host. That is, 154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov it is 32 bits on a 32-bit host and 64 bits on a 64-bit host, and so 155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov it can safely be coerced to and from a pointer type on the host 156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov machine. */ 157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned long HWord; 158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef char HChar; 159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef signed int Int; 160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned int UInt; 161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned char UChar; 162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef signed long long int Long; 164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned long long int ULong; 165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef unsigned char Bool; 167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define True ((Bool)1) 168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define False ((Bool)0) 169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include "/home/sewardj/VEX/trunk/pub/libvex_basictypes.h" 172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic HWord (*serviceFn)(HWord,HWord) = 0; 174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic Bool my_isspace ( UChar c ) 176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return c == ' ' 178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov || c == '\f' 179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov || c == '\n' 180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov || c == '\r' 181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov || c == '\t' 182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov || c == '\v'; 183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 // unused 186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic char* my_strcpy ( char* dest, const char* src ) 187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov char* dest_orig = dest; 189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (*src) *dest++ = *src++; 190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *dest = 0; 191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return dest_orig; 192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void* my_memcpy ( void *dest, const void *src, int sz ) 195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const char *s = (const char *)src; 197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov char *d = (char *)dest; 198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (sz--) 200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d++ = *s++; 201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return dest; 203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void* my_memmove( void *dst, const void *src, unsigned int len ) 206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register char *d; 208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register char *s; 209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ( dst > src ) { 210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov d = (char *)dst + len - 1; 211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = (char *)src + len - 1; 212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while ( len >= 4 ) { 213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d-- = *s--; 214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d-- = *s--; 215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d-- = *s--; 216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d-- = *s--; 217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov len -= 4; 218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while ( len-- ) { 220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d-- = *s--; 221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else if ( dst < src ) { 223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov d = (char *)dst; 224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = (char *)src; 225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while ( len >= 4 ) { 226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d++ = *s++; 227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d++ = *s++; 228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d++ = *s++; 229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d++ = *s++; 230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov len -= 4; 231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while ( len-- ) { 233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *d++ = *s++; 234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return dst; 237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovchar* my_strcat ( char* dest, const char* src ) 241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov char* dest_orig = dest; 243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (*dest) dest++; 244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (*src) *dest++ = *src++; 245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *dest = 0; 246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return dest_orig; 247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint my_strcmp ( const char* s1, const char* s2 ) 250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register unsigned char c1; 252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register unsigned char c2; 253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (True) { 254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov c1 = *(unsigned char *)s1; 255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov c2 = *(unsigned char *)s2; 256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (c1 != c2) break; 257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (c1 == 0) break; 258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s1++; s2++; 259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ((unsigned char)c1 < (unsigned char)c2) return -1; 261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ((unsigned char)c1 > (unsigned char)c2) return 1; 262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return 0; 263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint my_memcmp ( const void *s1V, const void *s2V, int n ) 267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int res; 269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned char a0; 270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned char b0; 271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned char* s1 = (unsigned char*)s1V; 272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned char* s2 = (unsigned char*)s2V; 273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (n != 0) { 275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov a0 = s1[0]; 276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov b0 = s2[0]; 277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s1 += 1; 278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s2 += 1; 279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = ((int)a0) - ((int)b0); 280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (res != 0) 281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return res; 282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov n -= 1; 283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return 0; 285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovchar* my_strchr ( const char* s, int c ) 288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UChar ch = (UChar)((UInt)c); 290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UChar* p = (UChar*)s; 291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (True) { 292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (*p == ch) return p; 293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (*p == 0) return NULL; 294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p++; 295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid* my_malloc ( int n ) 299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov void* r = (void*) (*serviceFn)(2,n); 301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return r; 302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void vexxx_log_bytes ( char* p, int n ) 308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < n; i++) 311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*serviceFn)( 1, (int)p[i] ); 312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*---------------------------------------------------------*/ 315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--- vexxx_printf ---*/ 316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*---------------------------------------------------------*/ 317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* This should be the only <...> include in the entire VEX library. 319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov New code for vex_util.c should go above this point. */ 320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdarg.h> 321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic HChar vexxx_toupper ( HChar c ) 323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (c >= 'a' && c <= 'z') 325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return c + ('A' - 'a'); 326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return c; 328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic Int vexxx_strlen ( const HChar* str ) 331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (str[i] != 0) i++; 334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return i; 335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy StepanovBool vexxx_streq ( const HChar* s1, const HChar* s2 ) 338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (True) { 340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (*s1 == 0 && *s2 == 0) 341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return True; 342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (*s1 != *s2) 343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return False; 344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s1++; 345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s2++; 346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Some flags. */ 350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VG_MSG_SIGNED 1 /* The value is signed. */ 351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VG_MSG_ZJUSTIFY 2 /* Must justify with '0'. */ 352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VG_MSG_LJUSTIFY 4 /* Must justify on the left. */ 353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VG_MSG_PAREN 8 /* Parenthesize if present (for %y) */ 354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define VG_MSG_COMMA 16 /* Add commas to numbers (for %d, %u) */ 355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Copy a string into the buffer. */ 357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic UInt 358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovmyvprintf_str ( void(*send)(HChar), Int flags, Int width, HChar* str, 359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Bool capitalise ) 360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# define MAYBE_TOUPPER(ch) (capitalise ? vexxx_toupper(ch) : (ch)) 362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt ret = 0; 363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i, extra; 364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int len = vexxx_strlen(str); 365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (width == 0) { 367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += len; 368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < len; i++) 369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(MAYBE_TOUPPER(str[i])); 370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (len > width) { 374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += width; 375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < width; i++) 376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(MAYBE_TOUPPER(str[i])); 377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov extra = width - len; 381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (flags & VG_MSG_LJUSTIFY) { 382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += extra; 383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < extra; i++) 384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(' '); 385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += len; 387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < len; i++) 388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(MAYBE_TOUPPER(str[i])); 389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (!(flags & VG_MSG_LJUSTIFY)) { 390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += extra; 391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < extra; i++) 392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(' '); 393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# undef MAYBE_TOUPPER 396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Write P into the buffer according to these args: 401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * If SIGN is true, p is a signed. 402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * BASE is the base. 403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * If WITH_ZERO is true, '0' must be added. 404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * WIDTH is the width of the field. 405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic UInt 407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovmyvprintf_int64 ( void(*send)(HChar), Int flags, Int base, Int width, ULong pL) 408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov HChar buf[40]; 410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int ind = 0; 411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i, nc = 0; 412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Bool neg = False; 413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov HChar *digits = "0123456789ABCDEF"; 414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt ret = 0; 415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt p = (UInt)pL; 416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (base < 2 || base > 16) 418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ((flags & VG_MSG_SIGNED) && (Int)p < 0) { 421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p = - (Int)p; 422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov neg = True; 423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (p == 0) 426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov buf[ind++] = '0'; 427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else { 428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (p > 0) { 429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ((flags & VG_MSG_COMMA) && 10 == base && 430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0 == (ind-nc) % 3 && 0 != ind) 431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov buf[ind++] = ','; 433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov nc++; 434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov buf[ind++] = digits[p % base]; 436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p /= base; 437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (neg) 441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov buf[ind++] = '-'; 442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (width > 0 && !(flags & VG_MSG_LJUSTIFY)) { 444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for(; ind < width; ind++) { 445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov //vassert(ind < 39); 446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov buf[ind] = ((flags & VG_MSG_ZJUSTIFY) ? '0': ' '); 447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Reverse copy to buffer. */ 451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += ind; 452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = ind -1; i >= 0; i--) { 453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(buf[i]); 454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (width > 0 && (flags & VG_MSG_LJUSTIFY)) { 456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for(; ind < width; ind++) { 457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret++; 458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(' '); // Never pad with zeroes on RHS -- changes the value! 459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* A simple vprintf(). */ 466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic 467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy StepanovUInt vprintf_wrk ( void(*send)(HChar), const HChar *format, va_list vargs ) 468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt ret = 0; 470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int flags; 472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int width; 473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Bool is_long; 474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* We assume that vargs has already been initialised by the 476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov caller, using va_start, and that the caller will similarly 477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov clean up with va_end. 478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; format[i] != 0; i++) { 481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (format[i] != '%') { 482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send(format[i]); 483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret++; 484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i++; 487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* A '%' has been found. Ignore a trailing %. */ 488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (format[i] == 0) 489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (format[i] == '%') { 491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* `%%' is replaced by `%'. */ 492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send('%'); 493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret++; 494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = 0; 497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov is_long = False; 498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov width = 0; /* length of the field. */ 499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (format[i] == '(') { 500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags |= VG_MSG_PAREN; 501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i++; 502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* If ',' follows '%', commas will be inserted. */ 504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (format[i] == ',') { 505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags |= VG_MSG_COMMA; 506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i++; 507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* If '-' follows '%', justify on the left. */ 509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (format[i] == '-') { 510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags |= VG_MSG_LJUSTIFY; 511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i++; 512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* If '0' follows '%', pads will be inserted. */ 514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (format[i] == '0') { 515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags |= VG_MSG_ZJUSTIFY; 516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i++; 517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Compute the field length. */ 519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (format[i] >= '0' && format[i] <= '9') { 520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov width *= 10; 521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov width += format[i++] - '0'; 522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov while (format[i] == 'l') { 524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i++; 525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov is_long = True; 526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov switch (format[i]) { 529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case 'd': /* %d */ 530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags |= VG_MSG_SIGNED; 531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (is_long) 532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_int64(send, flags, 10, width, 533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (ULong)(va_arg (vargs, Long))); 534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_int64(send, flags, 10, width, 536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (ULong)(va_arg (vargs, Int))); 537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case 'u': /* %u */ 539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (is_long) 540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_int64(send, flags, 10, width, 541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (ULong)(va_arg (vargs, ULong))); 542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_int64(send, flags, 10, width, 544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (ULong)(va_arg (vargs, UInt))); 545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case 'p': /* %p */ 547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += 2; 548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send('0'); 549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send('x'); 550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_int64(send, flags, 16, width, 551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (ULong)((HWord)va_arg (vargs, void *))); 552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case 'x': /* %x */ 554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (is_long) 555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_int64(send, flags, 16, width, 556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (ULong)(va_arg (vargs, ULong))); 557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_int64(send, flags, 16, width, 559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (ULong)(va_arg (vargs, UInt))); 560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case 'c': /* %c */ 562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret++; 563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov send((va_arg (vargs, int))); 564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case 's': case 'S': { /* %s */ 566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov char *str = va_arg (vargs, char *); 567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (str == (char*) 0) str = "(null)"; 568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_str(send, flags, width, str, 569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (format[i]=='S')); 570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# if 0 573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case 'y': { /* %y - print symbol */ 574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Char buf[100]; 575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Char *cp = buf; 576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Addr a = va_arg(vargs, Addr); 577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (flags & VG_MSG_PAREN) 579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *cp++ = '('; 580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (VG_(get_fnname_w_offset)(a, cp, sizeof(buf)-4)) { 581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (flags & VG_MSG_PAREN) { 582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov cp += VG_(strlen)(cp); 583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *cp++ = ')'; 584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *cp = '\0'; 585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret += myvprintf_str(send, flags, width, buf, 0); 587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# endif 591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov default: 592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* A general replacement for printf(). Note that only low-level 600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov debugging info should be sent via here. The official route is to 601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov to use vg_message(). This interface is deprecated. 602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov*/ 603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic HChar myprintf_buf[1000]; 604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic Int n_myprintf_buf; 605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void add_to_myprintf_buf ( HChar c ) 607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (c == '\n' || n_myprintf_buf >= 1000-10 /*paranoia*/ ) { 609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*vexxx_log_bytes)( myprintf_buf, vexxx_strlen(myprintf_buf) ); 610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov n_myprintf_buf = 0; 611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov myprintf_buf[n_myprintf_buf] = 0; 612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov myprintf_buf[n_myprintf_buf++] = c; 614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov myprintf_buf[n_myprintf_buf] = 0; 615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic UInt vexxx_printf ( const char *format, ... ) 618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt ret; 620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov va_list vargs; 621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov va_start(vargs,format); 622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov n_myprintf_buf = 0; 624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov myprintf_buf[n_myprintf_buf] = 0; 625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret = vprintf_wrk ( add_to_myprintf_buf, format, vargs ); 626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (n_myprintf_buf > 0) { 628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*vexxx_log_bytes)( myprintf_buf, n_myprintf_buf ); 629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov va_end(vargs); 632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*---------------------------------------------------------------*/ 637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*--- end vex_util.c ---*/ 638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/*---------------------------------------------------------------*/ 639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov///////////////////////////////////////////////////////////////////// 645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// BEGIN #include "ops-ppc.c" 647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* 648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * WARNING: 649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * This file has been auto-generated by './gen-ppc' program 650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Please don't edit by hand 651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//BEGIN #include "test-ppc.h" 655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* 656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * test-ppc.h: 657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * PPC tests for qemu-PPC CPU emulation checks - definitions 658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * 659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Copyright (c) 2005 Jocelyn Mayer 660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * 661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * This program is free software; you can redistribute it and/or 662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * modify it under the terms of the GNU General Public License V2 663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * as published by the Free Software Foundation. 664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (__TEST_PPC_H__) 667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define __TEST_PPC_H__ 668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef void (*test_func_t) (void); 670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct test_t test_t; 671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct test_table_t test_table_t; 672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct test_t { 673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_func_t func; 674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const unsigned char *name; 675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct test_table_t { 678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_t *tests; 679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const unsigned char *name; 680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int flags; 681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef void (*test_loop_t) (const unsigned char *name, test_func_t func); 684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovenum test_flags { 686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Nb arguments */ 687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_ONE_ARG = 0x00000001, 688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_TWO_ARGS = 0x00000002, 689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_THREE_ARGS = 0x00000003, 690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CMP_ARGS = 0x00000004, 691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CMPI_ARGS = 0x00000005, 692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_TWO_I16 = 0x00000006, 693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_SPECIAL = 0x00000007, 694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_NB_ARGS = 0x0000000F, 695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Type */ 696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_ARITH = 0x00000100, 697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_LOGICAL = 0x00000200, 698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_COMPARE = 0x00000300, 699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CROP = 0x00000400, 700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_TYPE = 0x00000F00, 701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Family */ 702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_INTEGER = 0x00010000, 703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_FLOAT = 0x00020000, 704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_405 = 0x00030000, 705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_ALTIVEC = 0x00040000, 706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_FALTIVEC = 0x00050000, 707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_FAMILY = 0x000F0000, 708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Flags */ 709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov PPC_CR = 0x01000000, 710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (__TEST_PPC_H__) */ 713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//END #include "test-ppc.h" 715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_add (void) 717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("add 17, 14, 15"); 719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addo (void) 722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addo 17, 14, 15"); 724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addc (void) 727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addc 17, 14, 15"); 729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addco (void) 732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addco 17, 14, 15"); 734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_adde (void) 737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("adde 17, 14, 15"); 739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addeo (void) 742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addeo 17, 14, 15"); 744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divw (void) 747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divw 17, 14, 15"); 749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divwo (void) 752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divwo 17, 14, 15"); 754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divwu (void) 757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divwu 17, 14, 15"); 759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divwuo (void) 762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divwuo 17, 14, 15"); 764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhw (void) 767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhw 17, 14, 15"); 769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhwu (void) 772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhwu 17, 14, 15"); 774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullw (void) 777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullw 17, 14, 15"); 779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullwo (void) 782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullwo 17, 14, 15"); 784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subf (void) 787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subf 17, 14, 15"); 789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfo (void) 792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfo 17, 14, 15"); 794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfc (void) 797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfc 17, 14, 15"); 799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfco (void) 802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfco 17, 14, 15"); 804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfe (void) 807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfe 17, 14, 15"); 809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfeo (void) 812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfeo 17, 14, 15"); 814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ia_ops_two[] = { 817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_add , " add", }, 818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addo , " addo", }, 819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addc , " addc", }, 820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addco , " addco", }, 821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_adde , " adde", }, 822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addeo , " addeo", }, 823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divw , " divw", }, 824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divwo , " divwo", }, 825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divwu , " divwu", }, 826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divwuo , " divwuo", }, 827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhw , " mulhw", }, 828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhwu , " mulhwu", }, 829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullw , " mullw", }, 830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullwo , " mullwo", }, 831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subf , " subf", }, 832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfo , " subfo", }, 833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfc , " subfc", }, 834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfco , " subfco", }, 835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfe , " subfe", }, 836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfeo , " subfeo", }, 837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_add_ (void) 841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("add. 17, 14, 15"); 843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addo_ (void) 846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addo. 17, 14, 15"); 848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addc_ (void) 851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addc. 17, 14, 15"); 853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addco_ (void) 856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addco. 17, 14, 15"); 858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_adde_ (void) 861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("adde. 17, 14, 15"); 863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addeo_ (void) 866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addeo. 17, 14, 15"); 868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divw_ (void) 871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divw. 17, 14, 15"); 873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divwo_ (void) 876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divwo. 17, 14, 15"); 878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divwu_ (void) 881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divwu. 17, 14, 15"); 883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_divwuo_ (void) 886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("divwuo. 17, 14, 15"); 888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subf_ (void) 891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subf. 17, 14, 15"); 893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfo_ (void) 896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfo. 17, 14, 15"); 898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfc_ (void) 901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfc. 17, 14, 15"); 903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfco_ (void) 906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfco. 17, 14, 15"); 908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfe_ (void) 911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfe. 17, 14, 15"); 913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfeo_ (void) 916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfeo. 17, 14, 15"); 918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_iar_ops_two[] = { 921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_add_ , " add.", }, 922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addo_ , " addo.", }, 923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addc_ , " addc.", }, 924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addco_ , " addco.", }, 925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_adde_ , " adde.", }, 926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addeo_ , " addeo.", }, 927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divw_ , " divw.", }, 928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divwo_ , " divwo.", }, 929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divwu_ , " divwu.", }, 930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_divwuo_ , " divwuo.", }, 931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subf_ , " subf.", }, 932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfo_ , " subfo.", }, 933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfc_ , " subfc.", }, 934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfco_ , " subfco.", }, 935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfe_ , " subfe.", }, 936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfeo_ , " subfeo.", }, 937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_and (void) 941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("and 17, 14, 15"); 943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_andc (void) 946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("andc 17, 14, 15"); 948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_eqv (void) 951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("eqv 17, 14, 15"); 953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nand (void) 956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nand 17, 14, 15"); 958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nor (void) 961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nor 17, 14, 15"); 963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_or (void) 966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("or 17, 14, 15"); 968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_orc (void) 971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("orc 17, 14, 15"); 973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_xor (void) 976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("xor 17, 14, 15"); 978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_slw (void) 981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("slw 17, 14, 15"); 983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_sraw (void) 986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("sraw 17, 14, 15"); 988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_srw (void) 991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("srw 17, 14, 15"); 993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_il_ops_two[] = { 996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_and , " and", }, 997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_andc , " andc", }, 998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_eqv , " eqv", }, 999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nand , " nand", }, 1000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nor , " nor", }, 1001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_or , " or", }, 1002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_orc , " orc", }, 1003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_xor , " xor", }, 1004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_slw , " slw", }, 1005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_sraw , " sraw", }, 1006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_srw , " srw", }, 1007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_and_ (void) 1011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("and. 17, 14, 15"); 1013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_andc_ (void) 1016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("andc. 17, 14, 15"); 1018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_eqv_ (void) 1021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("eqv. 17, 14, 15"); 1023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhw_ (void) 1026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhw. 17, 14, 15"); 1028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhwu_ (void) 1031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhwu. 17, 14, 15"); 1033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullw_ (void) 1036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullw. 17, 14, 15"); 1038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullwo_ (void) 1041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullwo. 17, 14, 15"); 1043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nand_ (void) 1046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nand. 17, 14, 15"); 1048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nor_ (void) 1051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nor. 17, 14, 15"); 1053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_or_ (void) 1056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("or. 17, 14, 15"); 1058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_orc_ (void) 1061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("orc. 17, 14, 15"); 1063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_xor_ (void) 1066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("xor. 17, 14, 15"); 1068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_slw_ (void) 1071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("slw. 17, 14, 15"); 1073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_sraw_ (void) 1076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("sraw. 17, 14, 15"); 1078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_srw_ (void) 1081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("srw. 17, 14, 15"); 1083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ilr_ops_two[] = { 1086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_and_ , " and.", }, 1087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_andc_ , " andc.", }, 1088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_eqv_ , " eqv.", }, 1089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhw_ , " mulhw.", }, 1090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhwu_ , " mulhwu.", }, 1091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullw_ , " mullw.", }, 1092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullwo_ , " mullwo.", }, 1093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nand_ , " nand.", }, 1094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nor_ , " nor.", }, 1095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_or_ , " or.", }, 1096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_orc_ , " orc.", }, 1097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_xor_ , " xor.", }, 1098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_slw_ , " slw.", }, 1099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_sraw_ , " sraw.", }, 1100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_srw_ , " srw.", }, 1101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_cmp (void) 1105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("cmp 2, 14, 15"); 1107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_cmpl (void) 1110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("cmpl 2, 14, 15"); 1112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_icr_ops_two[] = { 1115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_cmp , " cmp", }, 1116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_cmpl , " cmpl", }, 1117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_cmpi (void) 1121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("cmpi 2, 14, 15"); 1123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_cmpli (void) 1126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("cmpli 2, 14, 15"); 1128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_icr_ops_two_i16[] = { 1131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_cmpi , " cmpi", }, 1132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_cmpli , " cmpli", }, 1133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addi (void) 1137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addi 17, 14, 0"); 1139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addic (void) 1142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addic 17, 14, 0"); 1144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addis (void) 1147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addis 17, 14, 0"); 1149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulli (void) 1152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulli 17, 14, 0"); 1154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfic (void) 1157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfic 17, 14, 0"); 1159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ia_ops_two_i16[] = { 1162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addi , " addi", }, 1163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addic , " addic", }, 1164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addis , " addis", }, 1165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulli , " mulli", }, 1166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfic , " subfic", }, 1167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addic_ (void) 1171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addic. 17, 14, 0"); 1173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_iar_ops_two_i16[] = { 1176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addic_ , " addic.", }, 1177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_ori (void) 1181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("ori 17, 14, 0"); 1183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_oris (void) 1186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("oris 17, 14, 0"); 1188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_xori (void) 1191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("xori 17, 14, 0"); 1193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_xoris (void) 1196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("xoris 17, 14, 0"); 1198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_il_ops_two_i16[] = { 1201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_ori , " ori", }, 1202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_oris , " oris", }, 1203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_xori , " xori", }, 1204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_xoris , " xoris", }, 1205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_andi_ (void) 1209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("andi. 17, 14, 0"); 1211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_andis_ (void) 1214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("andis. 17, 14, 0"); 1216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ilr_ops_two_i16[] = { 1219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_andi_ , " andi.", }, 1220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_andis_ , " andis.", }, 1221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_crand (void) 1225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("crand 17, 14, 15"); 1227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_crandc (void) 1230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("crandc 17, 14, 15"); 1232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_creqv (void) 1235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("creqv 17, 14, 15"); 1237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_crnand (void) 1240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("crnand 17, 14, 15"); 1242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_crnor (void) 1245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("crnor 17, 14, 15"); 1247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_cror (void) 1250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("cror 17, 14, 15"); 1252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_crorc (void) 1255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("crorc 17, 14, 15"); 1257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_crxor (void) 1260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("crxor 17, 14, 15"); 1262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_crl_ops_two[] = { 1265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_crand , " crand", }, 1266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_crandc , " crandc", }, 1267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_creqv , " creqv", }, 1268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_crnand , " crnand", }, 1269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_crnor , " crnor", }, 1270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_cror , " cror", }, 1271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_crorc , " crorc", }, 1272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_crxor , " crxor", }, 1273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addme (void) 1277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addme 17, 14"); 1279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addmeo (void) 1282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addmeo 17, 14"); 1284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addze (void) 1287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addze 17, 14"); 1289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addzeo (void) 1292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addzeo 17, 14"); 1294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfme (void) 1297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfme 17, 14"); 1299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfmeo (void) 1302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfmeo 17, 14"); 1304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfze (void) 1307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfze 17, 14"); 1309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfzeo (void) 1312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfzeo 17, 14"); 1314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ia_ops_one[] = { 1317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addme , " addme", }, 1318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addmeo , " addmeo", }, 1319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addze , " addze", }, 1320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addzeo , " addzeo", }, 1321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfme , " subfme", }, 1322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfmeo , " subfmeo", }, 1323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfze , " subfze", }, 1324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfzeo , " subfzeo", }, 1325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addme_ (void) 1329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addme. 17, 14"); 1331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addmeo_ (void) 1334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addmeo. 17, 14"); 1336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addze_ (void) 1339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addze. 17, 14"); 1341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_addzeo_ (void) 1344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("addzeo. 17, 14"); 1346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfme_ (void) 1349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfme. 17, 14"); 1351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfmeo_ (void) 1354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfmeo. 17, 14"); 1356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfze_ (void) 1359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfze. 17, 14"); 1361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_subfzeo_ (void) 1364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("subfzeo. 17, 14"); 1366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_iar_ops_one[] = { 1369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addme_ , " addme.", }, 1370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addmeo_ , " addmeo.", }, 1371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addze_ , " addze.", }, 1372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_addzeo_ , " addzeo.", }, 1373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfme_ , " subfme.", }, 1374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfmeo_ , " subfmeo.", }, 1375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfze_ , " subfze.", }, 1376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_subfzeo_ , " subfzeo.", }, 1377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_cntlzw (void) 1381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("cntlzw 17, 14"); 1383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_extsb (void) 1386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("extsb 17, 14"); 1388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_extsh (void) 1391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("extsh 17, 14"); 1393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_neg (void) 1396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("neg 17, 14"); 1398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nego (void) 1401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nego 17, 14"); 1403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_il_ops_one[] = { 1406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_cntlzw , " cntlzw", }, 1407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_extsb , " extsb", }, 1408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_extsh , " extsh", }, 1409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_neg , " neg", }, 1410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nego , " nego", }, 1411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_cntlzw_ (void) 1415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("cntlzw. 17, 14"); 1417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_extsb_ (void) 1420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("extsb. 17, 14"); 1422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_extsh_ (void) 1425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("extsh. 17, 14"); 1427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_neg_ (void) 1430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("neg. 17, 14"); 1432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nego_ (void) 1435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nego. 17, 14"); 1437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ilr_ops_one[] = { 1440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_cntlzw_ , " cntlzw.", }, 1441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_extsb_ , " extsb.", }, 1442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_extsh_ , " extsh.", }, 1443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_neg_ , " neg.", }, 1444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nego_ , " nego.", }, 1445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_rlwimi (void) 1449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("rlwimi 17, 14, 0, 0, 0"); 1451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_rlwinm (void) 1454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("rlwinm 17, 14, 0, 0, 0"); 1456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_rlwnm (void) 1459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("rlwnm 17, 14, 15, 0, 0"); 1461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_srawi (void) 1464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("srawi 17, 14, 0"); 1466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_il_ops_spe[] = { 1469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_rlwimi , " rlwimi", }, 1470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_rlwinm , " rlwinm", }, 1471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_rlwnm , " rlwnm", }, 1472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_srawi , " srawi", }, 1473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_rlwimi_ (void) 1477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("rlwimi. 17, 14, 0, 0, 0"); 1479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_rlwinm_ (void) 1482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("rlwinm. 17, 14, 0, 0, 0"); 1484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_rlwnm_ (void) 1487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("rlwnm. 17, 14, 15, 0, 0"); 1489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_srawi_ (void) 1492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("srawi. 17, 14, 0"); 1494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ilr_ops_spe[] = { 1497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_rlwimi_ , " rlwimi.", }, 1498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_rlwinm_ , " rlwinm.", }, 1499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_rlwnm_ , " rlwnm.", }, 1500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_srawi_ , " srawi.", }, 1501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fsel (void) 1506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fsel 17, 14, 15, 16"); 1508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmadd (void) 1511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmadd 17, 14, 15, 16"); 1513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmadds (void) 1516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmadds 17, 14, 15, 16"); 1518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmsub (void) 1521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmsub 17, 14, 15, 16"); 1523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmsubs (void) 1526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmsubs 17, 14, 15, 16"); 1528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmadd (void) 1531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmadd 17, 14, 15, 16"); 1533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmadds (void) 1536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmadds 17, 14, 15, 16"); 1538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmsub (void) 1541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmsub 17, 14, 15, 16"); 1543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmsubs (void) 1546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmsubs 17, 14, 15, 16"); 1548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_fa_ops_three[] = { 1551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fsel , " fsel", }, 1552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmadd , " fmadd", }, 1553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmadds , " fmadds", }, 1554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmsub , " fmsub", }, 1555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmsubs , " fmsubs", }, 1556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmadd , " fnmadd", }, 1557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmadds , " fnmadds", }, 1558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmsub , " fnmsub", }, 1559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmsubs , " fnmsubs", }, 1560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fsel_ (void) 1566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fsel. 17, 14, 15, 16"); 1568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmadd_ (void) 1571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmadd. 17, 14, 15, 16"); 1573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmadds_ (void) 1576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmadds. 17, 14, 15, 16"); 1578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmsub_ (void) 1581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmsub. 17, 14, 15, 16"); 1583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmsubs_ (void) 1586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmsubs. 17, 14, 15, 16"); 1588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmadd_ (void) 1591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmadd. 17, 14, 15, 16"); 1593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmadds_ (void) 1596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmadds. 17, 14, 15, 16"); 1598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmsub_ (void) 1601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmsub. 17, 14, 15, 16"); 1603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnmsubs_ (void) 1606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnmsubs. 17, 14, 15, 16"); 1608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_far_ops_three[] = { 1611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fsel_ , " fsel.", }, 1612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmadd_ , " fmadd.", }, 1613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmadds_ , " fmadds.", }, 1614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmsub_ , " fmsub.", }, 1615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmsubs_ , " fmsubs.", }, 1616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmadd_ , " fnmadd.", }, 1617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmadds_ , " fnmadds.", }, 1618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmsub_ , " fnmsub.", }, 1619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnmsubs_ , " fnmsubs.", }, 1620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fadd (void) 1626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fadd 17, 14, 15"); 1628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fadds (void) 1631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fadds 17, 14, 15"); 1633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fsub (void) 1636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fsub 17, 14, 15"); 1638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fsubs (void) 1641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fsubs 17, 14, 15"); 1643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmul (void) 1646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmul 17, 14, 15"); 1648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmuls (void) 1651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmuls 17, 14, 15"); 1653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fdiv (void) 1656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fdiv 17, 14, 15"); 1658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fdivs (void) 1661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fdivs 17, 14, 15"); 1663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_fa_ops_two[] = { 1666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fadd , " fadd", }, 1667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fadds , " fadds", }, 1668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fsub , " fsub", }, 1669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fsubs , " fsubs", }, 1670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmul , " fmul", }, 1671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmuls , " fmuls", }, 1672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fdiv , " fdiv", }, 1673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fdivs , " fdivs", }, 1674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fadd_ (void) 1680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fadd. 17, 14, 15"); 1682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fadds_ (void) 1685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fadds. 17, 14, 15"); 1687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fsub_ (void) 1690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fsub. 17, 14, 15"); 1692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fsubs_ (void) 1695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fsubs. 17, 14, 15"); 1697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmul_ (void) 1700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmul. 17, 14, 15"); 1702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmuls_ (void) 1705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmuls. 17, 14, 15"); 1707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fdiv_ (void) 1710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fdiv. 17, 14, 15"); 1712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fdivs_ (void) 1715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fdivs. 17, 14, 15"); 1717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_far_ops_two[] = { 1720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fadd_ , " fadd.", }, 1721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fadds_ , " fadds.", }, 1722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fsub_ , " fsub.", }, 1723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fsubs_ , " fsubs.", }, 1724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmul_ , " fmul.", }, 1725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmuls_ , " fmuls.", }, 1726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fdiv_ , " fdiv.", }, 1727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fdivs_ , " fdivs.", }, 1728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fcmpo (void) 1734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fcmpo 2, 14, 15"); 1736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fcmpu (void) 1739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fcmpu 2, 14, 15"); 1741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_fcr_ops_two[] = { 1744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fcmpo , " fcmpo", }, 1745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fcmpu , " fcmpu", }, 1746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fres (void) 1752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fres 17, 14"); 1754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_frsqrte (void) 1757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("frsqrte 17, 14"); 1759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_frsp (void) 1762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("frsp 17, 14"); 1764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fctiw (void) 1767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fctiw 17, 14"); 1769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fctiwz (void) 1772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fctiwz 17, 14"); 1774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmr (void) 1777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmr 17, 14"); 1779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fneg (void) 1782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fneg 17, 14"); 1784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fabs (void) 1787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fabs 17, 14"); 1789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnabs (void) 1792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnabs 17, 14"); 1794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_fa_ops_one[] = { 1797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fres , " fres", }, 1798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_frsqrte , " frsqrte", }, 1799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_frsp , " frsp", }, 1800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fctiw , " fctiw", }, 1801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fctiwz , " fctiwz", }, 1802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmr , " fmr", }, 1803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fneg , " fneg", }, 1804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fabs , " fabs", }, 1805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnabs , " fnabs", }, 1806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fres_ (void) 1812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fres. 17, 14"); 1814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_frsqrte_ (void) 1817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("frsqrte. 17, 14"); 1819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_frsp_ (void) 1822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("frsp. 17, 14"); 1824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fctiw_ (void) 1827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fctiw. 17, 14"); 1829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fctiwz_ (void) 1832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fctiwz. 17, 14"); 1834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fmr_ (void) 1837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fmr. 17, 14"); 1839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fneg_ (void) 1842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fneg. 17, 14"); 1844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fabs_ (void) 1847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fabs. 17, 14"); 1849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_fnabs_ (void) 1852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("fnabs. 17, 14"); 1854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_far_ops_one[] = { 1857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fres_ , " fres.", }, 1858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_frsqrte_ , " frsqrte.", }, 1859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_frsp_ , " frsp.", }, 1860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fctiw_ , " fctiw.", }, 1861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fctiwz_ , " fctiwz.", }, 1862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fmr_ , " fmr.", }, 1863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fneg_ , " fneg.", }, 1864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fabs_ , " fabs.", }, 1865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_fnabs_ , " fnabs.", }, 1866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_fl_ops_spe[] = { 1872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 1877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_flr_ops_spe[] = { 1878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 1881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 1883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmhaddshs (void) 1884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmhaddshs 17, 14, 15, 16"); 1886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmhraddshs (void) 1889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmhraddshs 17, 14, 15, 16"); 1891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmladduhm (void) 1894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmladduhm 17, 14, 15, 16"); 1896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmsumubm (void) 1899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmsumubm 17, 14, 15, 16"); 1901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmsumuhm (void) 1904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmsumuhm 17, 14, 15, 16"); 1906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmsumshs (void) 1909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmsumshs 17, 14, 15, 16"); 1911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmsumuhs (void) 1914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmsumuhs 17, 14, 15, 16"); 1916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmsummbm (void) 1919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmsummbm 17, 14, 15, 16"); 1921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmsumshm (void) 1924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmsumshm 17, 14, 15, 16"); 1926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_aa_ops_three[] = { 1929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmhaddshs , " vmhaddshs", }, 1930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmhraddshs , " vmhraddshs", }, 1931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmladduhm , " vmladduhm", }, 1932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmsumubm , " vmsumubm", }, 1933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmsumuhm , " vmsumuhm", }, 1934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmsumshs , " vmsumshs", }, 1935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmsumuhs , " vmsumuhs", }, 1936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmsummbm , " vmsummbm", }, 1937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmsumshm , " vmsumshm", }, 1938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 1941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 1943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vperm (void) 1944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vperm 17, 14, 15, 16"); 1946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsel (void) 1949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsel 17, 14, 15, 16"); 1951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_al_ops_three[] = { 1954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vperm , " vperm", }, 1955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsel , " vsel", }, 1956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 1957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 1958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 1959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 1961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vaddubm (void) 1962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vaddubm 17, 14, 15"); 1964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vadduhm (void) 1967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vadduhm 17, 14, 15"); 1969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vadduwm (void) 1972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vadduwm 17, 14, 15"); 1974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vaddubs (void) 1977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vaddubs 17, 14, 15"); 1979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vadduhs (void) 1982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vadduhs 17, 14, 15"); 1984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vadduws (void) 1987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vadduws 17, 14, 15"); 1989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vaddsbs (void) 1992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vaddsbs 17, 14, 15"); 1994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vaddshs (void) 1997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vaddshs 17, 14, 15"); 1999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vaddsws (void) 2002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vaddsws 17, 14, 15"); 2004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vaddcuw (void) 2007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vaddcuw 17, 14, 15"); 2009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsububm (void) 2012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsububm 17, 14, 15"); 2014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsubuhm (void) 2017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsubuhm 17, 14, 15"); 2019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsubuwm (void) 2022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsubuwm 17, 14, 15"); 2024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsububs (void) 2027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsububs 17, 14, 15"); 2029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsubuhs (void) 2032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsubuhs 17, 14, 15"); 2034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsubuws (void) 2037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsubuws 17, 14, 15"); 2039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsubcuw (void) 2042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsubcuw 17, 14, 15"); 2044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmuloub (void) 2047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmuloub 17, 14, 15"); 2049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmulouh (void) 2052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmulouh 17, 14, 15"); 2054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmulosb (void) 2057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmulosb 17, 14, 15"); 2059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmulosh (void) 2062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmulosh 17, 14, 15"); 2064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmuleub (void) 2067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmuleub 17, 14, 15"); 2069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmuleuh (void) 2072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmuleuh 17, 14, 15"); 2074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmulesb (void) 2077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmulesb 17, 14, 15"); 2079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmulesh (void) 2082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmulesh 17, 14, 15"); 2084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsumsws (void) 2087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsumsws 17, 14, 15"); 2089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsum2sws (void) 2092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsum2sws 17, 14, 15"); 2094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsum4ubs (void) 2097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsum4ubs 17, 14, 15"); 2099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsum4sbs (void) 2102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsum4sbs 17, 14, 15"); 2104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsum4shs (void) 2107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsum4shs 17, 14, 15"); 2109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vavgub (void) 2112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vavgub 17, 14, 15"); 2114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vavguh (void) 2117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vavguh 17, 14, 15"); 2119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vavguw (void) 2122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vavguw 17, 14, 15"); 2124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vavgsb (void) 2127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vavgsb 17, 14, 15"); 2129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vavgsh (void) 2132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vavgsh 17, 14, 15"); 2134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vavgsw (void) 2137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vavgsw 17, 14, 15"); 2139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaxub (void) 2142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaxub 17, 14, 15"); 2144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaxuh (void) 2147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaxuh 17, 14, 15"); 2149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaxuw (void) 2152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaxuw 17, 14, 15"); 2154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaxsb (void) 2157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaxsb 17, 14, 15"); 2159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaxsh (void) 2162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaxsh 17, 14, 15"); 2164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaxsw (void) 2167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaxsw 17, 14, 15"); 2169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vminub (void) 2172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vminub 17, 14, 15"); 2174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vminuh (void) 2177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vminuh 17, 14, 15"); 2179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vminuw (void) 2182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vminuw 17, 14, 15"); 2184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vminsb (void) 2187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vminsb 17, 14, 15"); 2189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vminsh (void) 2192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vminsh 17, 14, 15"); 2194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vminsw (void) 2197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vminsw 17, 14, 15"); 2199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_aa_ops_two[] = { 2202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vaddubm , " vaddubm", }, 2203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vadduhm , " vadduhm", }, 2204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vadduwm , " vadduwm", }, 2205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vaddubs , " vaddubs", }, 2206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vadduhs , " vadduhs", }, 2207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vadduws , " vadduws", }, 2208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vaddsbs , " vaddsbs", }, 2209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vaddshs , " vaddshs", }, 2210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vaddsws , " vaddsws", }, 2211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vaddcuw , " vaddcuw", }, 2212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsububm , " vsububm", }, 2213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsubuhm , " vsubuhm", }, 2214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsubuwm , " vsubuwm", }, 2215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsububs , " vsububs", }, 2216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsubuhs , " vsubuhs", }, 2217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsubuws , " vsubuws", }, 2218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsubcuw , " vsubcuw", }, 2219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmuloub , " vmuloub", }, 2220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmulouh , " vmulouh", }, 2221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmulosb , " vmulosb", }, 2222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmulosh , " vmulosh", }, 2223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmuleub , " vmuleub", }, 2224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmuleuh , " vmuleuh", }, 2225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmulesb , " vmulesb", }, 2226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmulesh , " vmulesh", }, 2227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsumsws , " vsumsws", }, 2228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsum2sws , " vsum2sws", }, 2229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsum4ubs , " vsum4ubs", }, 2230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsum4sbs , " vsum4sbs", }, 2231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsum4shs , " vsum4shs", }, 2232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vavgub , " vavgub", }, 2233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vavguh , " vavguh", }, 2234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vavguw , " vavguw", }, 2235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vavgsb , " vavgsb", }, 2236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vavgsh , " vavgsh", }, 2237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vavgsw , " vavgsw", }, 2238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaxub , " vmaxub", }, 2239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaxuh , " vmaxuh", }, 2240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaxuw , " vmaxuw", }, 2241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaxsb , " vmaxsb", }, 2242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaxsh , " vmaxsh", }, 2243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaxsw , " vmaxsw", }, 2244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vminub , " vminub", }, 2245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vminuh , " vminuh", }, 2246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vminuw , " vminuw", }, 2247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vminsb , " vminsb", }, 2248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vminsh , " vminsh", }, 2249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vminsw , " vminsw", }, 2250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vand (void) 2256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vand 17, 14, 15"); 2258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vor (void) 2261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vor 17, 14, 15"); 2263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vxor (void) 2266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vxor 17, 14, 15"); 2268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vandc (void) 2271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vandc 17, 14, 15"); 2273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vnor (void) 2276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vnor 17, 14, 15"); 2278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrlb (void) 2281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrlb 17, 14, 15"); 2283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrlh (void) 2286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrlh 17, 14, 15"); 2288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrlw (void) 2291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrlw 17, 14, 15"); 2293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vslb (void) 2296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vslb 17, 14, 15"); 2298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vslh (void) 2301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vslh 17, 14, 15"); 2303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vslw (void) 2306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vslw 17, 14, 15"); 2308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsrb (void) 2311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsrb 17, 14, 15"); 2313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsrh (void) 2316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsrh 17, 14, 15"); 2318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsrw (void) 2321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsrw 17, 14, 15"); 2323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsrab (void) 2326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsrab 17, 14, 15"); 2328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsrah (void) 2331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsrah 17, 14, 15"); 2333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsraw (void) 2336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsraw 17, 14, 15"); 2338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkuhum (void) 2341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkuhum 17, 14, 15"); 2343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkuwum (void) 2346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkuwum 17, 14, 15"); 2348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkuhus (void) 2351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkuhus 17, 14, 15"); 2353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkuwus (void) 2356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkuwus 17, 14, 15"); 2358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkshus (void) 2361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkshus 17, 14, 15"); 2363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkswus (void) 2366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkswus 17, 14, 15"); 2368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkshss (void) 2371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkshss 17, 14, 15"); 2373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkswss (void) 2376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkswss 17, 14, 15"); 2378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vpkpx (void) 2381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vpkpx 17, 14, 15"); 2383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmrghb (void) 2386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmrghb 17, 14, 15"); 2388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmrghh (void) 2391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmrghh 17, 14, 15"); 2393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmrghw (void) 2396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmrghw 17, 14, 15"); 2398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmrglb (void) 2401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmrglb 17, 14, 15"); 2403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmrglh (void) 2406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmrglh 17, 14, 15"); 2408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmrglw (void) 2411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmrglw 17, 14, 15"); 2413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsl (void) 2416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsl 17, 14, 15"); 2418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsr (void) 2421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsr 17, 14, 15"); 2423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vslo (void) 2426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vslo 17, 14, 15"); 2428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsro (void) 2431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsro 17, 14, 15"); 2433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_al_ops_two[] = { 2436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vand , " vand", }, 2437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vor , " vor", }, 2438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vxor , " vxor", }, 2439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vandc , " vandc", }, 2440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vnor , " vnor", }, 2441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrlb , " vrlb", }, 2442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrlh , " vrlh", }, 2443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrlw , " vrlw", }, 2444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vslb , " vslb", }, 2445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vslh , " vslh", }, 2446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vslw , " vslw", }, 2447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsrb , " vsrb", }, 2448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsrh , " vsrh", }, 2449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsrw , " vsrw", }, 2450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsrab , " vsrab", }, 2451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsrah , " vsrah", }, 2452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsraw , " vsraw", }, 2453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkuhum , " vpkuhum", }, 2454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkuwum , " vpkuwum", }, 2455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkuhus , " vpkuhus", }, 2456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkuwus , " vpkuwus", }, 2457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkshus , " vpkshus", }, 2458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkswus , " vpkswus", }, 2459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkshss , " vpkshss", }, 2460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkswss , " vpkswss", }, 2461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vpkpx , " vpkpx", }, 2462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmrghb , " vmrghb", }, 2463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmrghh , " vmrghh", }, 2464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmrghw , " vmrghw", }, 2465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmrglb , " vmrglb", }, 2466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmrglh , " vmrglh", }, 2467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmrglw , " vmrglw", }, 2468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsl , " vsl", }, 2469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsr , " vsr", }, 2470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vslo , " vslo", }, 2471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsro , " vsro", }, 2472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vupkhsb (void) 2478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vupkhsb 17, 14"); 2480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vupkhsh (void) 2483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vupkhsh 17, 14"); 2485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vupkhpx (void) 2488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vupkhpx 17, 14"); 2490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vupklsb (void) 2493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vupklsb 17, 14"); 2495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vupklsh (void) 2498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vupklsh 17, 14"); 2500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vupklpx (void) 2503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vupklpx 17, 14"); 2505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_al_ops_one[] = { 2508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vupkhsb , " vupkhsb", }, 2509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vupkhsh , " vupkhsh", }, 2510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vupkhpx , " vupkhpx", }, 2511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vupklsb , " vupklsb", }, 2512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vupklsh , " vupklsh", }, 2513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vupklpx , " vupklpx", }, 2514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtub (void) 2520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtub 17, 14, 15"); 2522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtuh (void) 2525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtuh 17, 14, 15"); 2527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtuw (void) 2530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtuw 17, 14, 15"); 2532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtsb (void) 2535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtsb 17, 14, 15"); 2537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtsh (void) 2540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtsh 17, 14, 15"); 2542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtsw (void) 2545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtsw 17, 14, 15"); 2547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpequb (void) 2550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpequb 17, 14, 15"); 2552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpequh (void) 2555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpequh 17, 14, 15"); 2557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpequw (void) 2560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpequw 17, 14, 15"); 2562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_ac_ops_two[] = { 2565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtub , " vcmpgtub", }, 2566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtuh , " vcmpgtuh", }, 2567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtuw , " vcmpgtuw", }, 2568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtsb , " vcmpgtsb", }, 2569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtsh , " vcmpgtsh", }, 2570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtsw , " vcmpgtsw", }, 2571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpequb , " vcmpequb", }, 2572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpequh , " vcmpequh", }, 2573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpequw , " vcmpequw", }, 2574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtub_ (void) 2580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtub. 17, 14, 15"); 2582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtuh_ (void) 2585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtuh. 17, 14, 15"); 2587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtuw_ (void) 2590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtuw. 17, 14, 15"); 2592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtsb_ (void) 2595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtsb. 17, 14, 15"); 2597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtsh_ (void) 2600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtsh. 17, 14, 15"); 2602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtsw_ (void) 2605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtsw. 17, 14, 15"); 2607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpequb_ (void) 2610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpequb. 17, 14, 15"); 2612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpequh_ (void) 2615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpequh. 17, 14, 15"); 2617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpequw_ (void) 2620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpequw. 17, 14, 15"); 2622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_acr_ops_two[] = { 2625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtub_ , " vcmpgtub.", }, 2626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtuh_ , " vcmpgtuh.", }, 2627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtuw_ , " vcmpgtuw.", }, 2628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtsb_ , " vcmpgtsb.", }, 2629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtsh_ , " vcmpgtsh.", }, 2630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtsw_ , " vcmpgtsw.", }, 2631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpequb_ , " vcmpequb.", }, 2632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpequh_ , " vcmpequh.", }, 2633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpequw_ , " vcmpequw.", }, 2634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaddfp (void) 2640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaddfp 17, 14, 15, 16"); 2642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vnmsubfp (void) 2645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vnmsubfp 17, 14, 15, 16"); 2647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_afa_ops_three[] = { 2650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaddfp , " vmaddfp", }, 2651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vnmsubfp , " vnmsubfp", }, 2652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vaddfp (void) 2658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vaddfp 17, 14, 15"); 2660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vsubfp (void) 2663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vsubfp 17, 14, 15"); 2665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vmaxfp (void) 2668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vmaxfp 17, 14, 15"); 2670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vminfp (void) 2673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vminfp 17, 14, 15"); 2675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_afa_ops_two[] = { 2678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vaddfp , " vaddfp", }, 2679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vsubfp , " vsubfp", }, 2680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vmaxfp , " vmaxfp", }, 2681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vminfp , " vminfp", }, 2682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrfin (void) 2688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrfin 17, 14"); 2690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrfiz (void) 2693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrfiz 17, 14"); 2695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrfip (void) 2698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrfip 17, 14"); 2700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrfim (void) 2703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrfim 17, 14"); 2705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrefp (void) 2708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrefp 17, 14"); 2710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vrsqrtefp (void) 2713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vrsqrtefp 17, 14"); 2715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vlogefp (void) 2718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vlogefp 17, 14"); 2720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vexptefp (void) 2723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vexptefp 17, 14"); 2725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_afa_ops_one[] = { 2728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrfin , " vrfin", }, 2729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrfiz , " vrfiz", }, 2730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrfip , " vrfip", }, 2731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrfim , " vrfim", }, 2732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrefp , " vrefp", }, 2733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vrsqrtefp , " vrsqrtefp", }, 2734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vlogefp , " vlogefp", }, 2735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vexptefp , " vexptefp", }, 2736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtfp (void) 2742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtfp 17, 14, 15"); 2744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpeqfp (void) 2747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpeqfp 17, 14, 15"); 2749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgefp (void) 2752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgefp 17, 14, 15"); 2754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpbfp (void) 2757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpbfp 17, 14, 15"); 2759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_afc_ops_two[] = { 2762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtfp , " vcmpgtfp", }, 2763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpeqfp , " vcmpeqfp", }, 2764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgefp , " vcmpgefp", }, 2765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpbfp , " vcmpbfp", }, 2766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 2771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgtfp_ (void) 2772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgtfp. 17, 14, 15"); 2774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpeqfp_ (void) 2777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpeqfp. 17, 14, 15"); 2779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpgefp_ (void) 2782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpgefp. 17, 14, 15"); 2784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_vcmpbfp_ (void) 2787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("vcmpbfp. 17, 14, 15"); 2789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_afcr_ops_two[] = { 2792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgtfp_ , " vcmpgtfp.", }, 2793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpeqfp_ , " vcmpeqfp.", }, 2794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpgefp_ , " vcmpgefp.", }, 2795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_vcmpbfp_ , " vcmpbfp.", }, 2796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 2797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 2798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 2799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (IS_PPC405) 2801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchw (void) 2802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchw 17, 14, 15"); 2804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwo (void) 2807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwo 17, 14, 15"); 2809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchws (void) 2812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchws 17, 14, 15"); 2814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwso (void) 2817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwso 17, 14, 15"); 2819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwsu (void) 2822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwsu 17, 14, 15"); 2824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwsuo (void) 2827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwsuo 17, 14, 15"); 2829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwu (void) 2832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwu 17, 14, 15"); 2834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwuo (void) 2837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwuo 17, 14, 15"); 2839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhw (void) 2842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhw 17, 14, 15"); 2844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwo (void) 2847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwo 17, 14, 15"); 2849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhws (void) 2852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhws 17, 14, 15"); 2854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwso (void) 2857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwso 17, 14, 15"); 2859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwsu (void) 2862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwsu 17, 14, 15"); 2864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwsuo (void) 2867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwsuo 17, 14, 15"); 2869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwu (void) 2872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwu 17, 14, 15"); 2874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwuo (void) 2877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwuo 17, 14, 15"); 2879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhw (void) 2882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhw 17, 14, 15"); 2884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwo (void) 2887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwo 17, 14, 15"); 2889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhws (void) 2892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhws 17, 14, 15"); 2894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwso (void) 2897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwso 17, 14, 15"); 2899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwsu (void) 2902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwsu 17, 14, 15"); 2904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwsuo (void) 2907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwsuo 17, 14, 15"); 2909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwu (void) 2912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwu 17, 14, 15"); 2914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwuo (void) 2917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwuo 17, 14, 15"); 2919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulchw (void) 2922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulchw 17, 14, 15"); 2924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulchwu (void) 2927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulchwu 17, 14, 15"); 2929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhhw (void) 2932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhhw 17, 14, 15"); 2934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhhwu (void) 2937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhhwu 17, 14, 15"); 2939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullhw (void) 2942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullhw 17, 14, 15"); 2944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullhwu (void) 2947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullhwu 17, 14, 15"); 2949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchw (void) 2952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchw 17, 14, 15"); 2954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchwo (void) 2957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchwo 17, 14, 15"); 2959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchws (void) 2962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchws 17, 14, 15"); 2964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchwso (void) 2967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchwso 17, 14, 15"); 2969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhw (void) 2972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhw 17, 14, 15"); 2974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhwo (void) 2977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhwo 17, 14, 15"); 2979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhws (void) 2982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhws 17, 14, 15"); 2984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhwso (void) 2987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhwso 17, 14, 15"); 2989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhw (void) 2992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhw 17, 14, 15"); 2994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhwo (void) 2997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhwo 17, 14, 15"); 2999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhws (void) 3002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhws 17, 14, 15"); 3004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhwso (void) 3007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhwso 17, 14, 15"); 3009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_p4m_ops_two[] = { 3012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchw , " macchw", }, 3013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwo , " macchwo", }, 3014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchws , " macchws", }, 3015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwso , " macchwso", }, 3016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwsu , " macchwsu", }, 3017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwsuo , " macchwsuo", }, 3018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwu , " macchwu", }, 3019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwuo , " macchwuo", }, 3020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhw , " machhw", }, 3021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwo , " machhwo", }, 3022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhws , " machhws", }, 3023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwso , " machhwso", }, 3024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwsu , " machhwsu", }, 3025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwsuo , " machhwsuo", }, 3026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwu , " machhwu", }, 3027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwuo , " machhwuo", }, 3028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhw , " maclhw", }, 3029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwo , " maclhwo", }, 3030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhws , " maclhws", }, 3031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwso , " maclhwso", }, 3032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwsu , " maclhwsu", }, 3033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwsuo , " maclhwsuo", }, 3034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwu , " maclhwu", }, 3035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwuo , " maclhwuo", }, 3036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulchw , " mulchw", }, 3037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulchwu , " mulchwu", }, 3038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhhw , " mulhhw", }, 3039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhhwu , " mulhhwu", }, 3040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullhw , " mullhw", }, 3041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullhwu , " mullhwu", }, 3042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchw , " nmacchw", }, 3043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchwo , " nmacchwo", }, 3044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchws , " nmacchws", }, 3045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchwso , " nmacchwso", }, 3046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhw , " nmachhw", }, 3047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhwo , " nmachhwo", }, 3048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhws , " nmachhws", }, 3049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhwso , " nmachhwso", }, 3050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhw , " nmaclhw", }, 3051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhwo , " nmaclhwo", }, 3052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhws , " nmaclhws", }, 3053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhwso , " nmaclhwso", }, 3054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 3055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 3056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (IS_PPC405) */ 3057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (IS_PPC405) 3059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchw_ (void) 3060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchw. 17, 14, 15"); 3062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwo_ (void) 3065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwo. 17, 14, 15"); 3067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchws_ (void) 3070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchws. 17, 14, 15"); 3072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwso_ (void) 3075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwso. 17, 14, 15"); 3077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwsu_ (void) 3080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwsu. 17, 14, 15"); 3082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwsuo_ (void) 3085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwsuo. 17, 14, 15"); 3087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwu_ (void) 3090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwu. 17, 14, 15"); 3092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_macchwuo_ (void) 3095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("macchwuo. 17, 14, 15"); 3097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhw_ (void) 3100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhw. 17, 14, 15"); 3102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwo_ (void) 3105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwo. 17, 14, 15"); 3107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhws_ (void) 3110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhws. 17, 14, 15"); 3112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwso_ (void) 3115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwso. 17, 14, 15"); 3117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwsu_ (void) 3120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwsu. 17, 14, 15"); 3122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwsuo_ (void) 3125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwsuo. 17, 14, 15"); 3127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwu_ (void) 3130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwu. 17, 14, 15"); 3132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_machhwuo_ (void) 3135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("machhwuo. 17, 14, 15"); 3137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhw_ (void) 3140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhw. 17, 14, 15"); 3142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwo_ (void) 3145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwo. 17, 14, 15"); 3147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhws_ (void) 3150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhws. 17, 14, 15"); 3152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwso_ (void) 3155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwso. 17, 14, 15"); 3157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwsu_ (void) 3160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwsu. 17, 14, 15"); 3162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwsuo_ (void) 3165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwsuo. 17, 14, 15"); 3167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwu_ (void) 3170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwu. 17, 14, 15"); 3172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_maclhwuo_ (void) 3175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("maclhwuo. 17, 14, 15"); 3177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulchw_ (void) 3180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulchw. 17, 14, 15"); 3182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulchwu_ (void) 3185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulchwu. 17, 14, 15"); 3187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhhw_ (void) 3190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhhw. 17, 14, 15"); 3192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mulhhwu_ (void) 3195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mulhhwu. 17, 14, 15"); 3197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullhw_ (void) 3200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullhw. 17, 14, 15"); 3202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_mullhwu_ (void) 3205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mullhwu. 17, 14, 15"); 3207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchw_ (void) 3210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchw. 17, 14, 15"); 3212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchwo_ (void) 3215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchwo. 17, 14, 15"); 3217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchws_ (void) 3220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchws. 17, 14, 15"); 3222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmacchwso_ (void) 3225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmacchwso. 17, 14, 15"); 3227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhw_ (void) 3230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhw. 17, 14, 15"); 3232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhwo_ (void) 3235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhwo. 17, 14, 15"); 3237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhws_ (void) 3240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhws. 17, 14, 15"); 3242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmachhwso_ (void) 3245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmachhwso. 17, 14, 15"); 3247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhw_ (void) 3250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhw. 17, 14, 15"); 3252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhwo_ (void) 3255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhwo. 17, 14, 15"); 3257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhws_ (void) 3260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhws. 17, 14, 15"); 3262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_nmaclhwso_ (void) 3265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("nmaclhwso. 17, 14, 15"); 3267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_t tests_p4mc_ops_two[] = { 3270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchw_ , " macchw.", }, 3271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwo_ , " macchwo.", }, 3272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchws_ , " macchws.", }, 3273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwso_ , " macchwso.", }, 3274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwsu_ , " macchwsu.", }, 3275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwsuo_ , " macchwsuo.", }, 3276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwu_ , " macchwu.", }, 3277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_macchwuo_ , " macchwuo.", }, 3278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhw_ , " machhw.", }, 3279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwo_ , " machhwo.", }, 3280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhws_ , " machhws.", }, 3281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwso_ , " machhwso.", }, 3282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwsu_ , " machhwsu.", }, 3283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwsuo_ , " machhwsuo.", }, 3284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwu_ , " machhwu.", }, 3285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_machhwuo_ , " machhwuo.", }, 3286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhw_ , " maclhw.", }, 3287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwo_ , " maclhwo.", }, 3288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhws_ , " maclhws.", }, 3289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwso_ , " maclhwso.", }, 3290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwsu_ , " maclhwsu.", }, 3291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwsuo_ , " maclhwsuo.", }, 3292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwu_ , " maclhwu.", }, 3293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_maclhwuo_ , " maclhwuo.", }, 3294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulchw_ , " mulchw.", }, 3295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulchwu_ , " mulchwu.", }, 3296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhhw_ , " mulhhw.", }, 3297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mulhhwu_ , " mulhhwu.", }, 3298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullhw_ , " mullhw.", }, 3299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_mullhwu_ , " mullhwu.", }, 3300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchw_ , " nmacchw.", }, 3301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchwo_ , " nmacchwo.", }, 3302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchws_ , " nmacchws.", }, 3303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmacchwso_ , " nmacchwso.", }, 3304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhw_ , " nmachhw.", }, 3305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhwo_ , " nmachhwo.", }, 3306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhws_ , " nmachhws.", }, 3307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmachhwso_ , " nmachhwso.", }, 3308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhw_ , " nmaclhw.", }, 3309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhwo_ , " nmaclhwo.", }, 3310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhws_ , " nmaclhws.", }, 3311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { &test_nmaclhwso_ , " nmaclhwso.", }, 3312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, }, 3313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 3314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (IS_PPC405) */ 3315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_table_t all_tests[] = { 3317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ia_ops_two , 3319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer arithmetic instructions with two arguments", 3320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00010102, 3321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_iar_ops_two , 3324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer instructions with two arguments with flags update", 3325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010102, 3326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_il_ops_two , 3329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer logical instructions with two arguments", 3330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00010202, 3331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ilr_ops_two , 3334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer logical instructions with two arguments with flags update", 3335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010202, 3336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_icr_ops_two , 3339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer compare instructions (two arguents)", 3340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010304, 3341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_icr_ops_two_i16 , 3344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer compare with immediate instructions (two arguents)", 3345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010304, 3346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ia_ops_two_i16 , 3349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer arithmetic instructions\n with one register + one 16 bits immediate arguments", 3350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00010106, 3351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_iar_ops_two_i16 , 3354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer arithmetic instructions\n with one register + one 16 bits immediate arguments with flags update", 3355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010106, 3356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_il_ops_two_i16 , 3359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer logical instructions\n with one register + one 16 bits immediate arguments", 3360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00010206, 3361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ilr_ops_two_i16 , 3364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer logical instructions\n with one register + one 16 bits immediate arguments with flags update", 3365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010206, 3366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_crl_ops_two , 3369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC condition register logical instructions - two operands", 3370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01000602, 3371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ia_ops_one , 3374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer arithmetic instructions with one argument", 3375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00010101, 3376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_iar_ops_one , 3379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer arithmetic instructions with one argument with flags update", 3380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010101, 3381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_il_ops_one , 3384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer logical instructions with one argument", 3385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00010201, 3386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ilr_ops_one , 3389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC integer logical instructions with one argument with flags update", 3390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010201, 3391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_il_ops_spe , 3394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC logical instructions with special forms", 3395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00010207, 3396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ilr_ops_spe , 3399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC logical instructions with special forms with flags update", 3400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01010207, 3401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_fa_ops_three , 3405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point arithmetic instructions with three arguments", 3406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00020103, 3407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_far_ops_three , 3412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point arithmetic instructions\n with three arguments with flags update", 3413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01020103, 3414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_fa_ops_two , 3419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point arithmetic instructions with two arguments", 3420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00020102, 3421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_far_ops_two , 3426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point arithmetic instructions\n with two arguments with flags update", 3427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01020102, 3428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_fcr_ops_two , 3433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point compare instructions (two arguments)", 3434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01020304, 3435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_fa_ops_one , 3440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point arithmetic instructions with one argument", 3441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00020101, 3442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_far_ops_one , 3447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point arithmetic instructions\n with one argument with flags update", 3448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01020101, 3449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_fl_ops_spe , 3454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point status register manipulation instructions", 3455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00020207, 3456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 3459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_flr_ops_spe , 3461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point status register manipulation instructions\n with flags update", 3462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01020207, 3463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 3465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_aa_ops_three , 3468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC altivec integer arithmetic instructions with three arguments", 3469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00040103, 3470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_al_ops_three , 3475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC altivec integer logical instructions with three arguments", 3476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00040203, 3477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_aa_ops_two , 3482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC altivec integer arithmetic instructions with two arguments", 3483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00040102, 3484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_al_ops_two , 3489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC altivec integer logical instructions with two arguments", 3490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00040202, 3491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_al_ops_one , 3496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC altivec integer logical instructions with one argument", 3497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00040201, 3498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_ac_ops_two , 3503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec integer compare instructions", 3504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00040302, 3505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_acr_ops_two , 3510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec integer compare instructions with flags update", 3511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01040302, 3512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_afa_ops_three , 3517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec floating point arithmetic instructions with three arguments", 3518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00050103, 3519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_afa_ops_two , 3524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec floating point arithmetic instructions with two arguments", 3525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00050102, 3526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_afa_ops_one , 3531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec floating point arithmetic instructions with one argument", 3532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00050101, 3533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_afc_ops_two , 3538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec floating point compare instructions", 3539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00050302, 3540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 3543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_afcr_ops_two , 3545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec floating point compare instructions with flags update", 3546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01050302, 3547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 3549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (IS_PPC405) 3550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_p4m_ops_two , 3552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC 405 mac instructions with three arguments", 3553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x00030102, 3554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (IS_PPC405) */ 3556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (IS_PPC405) 3557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 3558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests_p4mc_ops_two , 3559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC 405 mac instructions with three arguments with flags update", 3560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 0x01030102, 3561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 3562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (IS_PPC405) */ 3563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { NULL, NULL, 0x00000000, }, 3564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 3565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// END #include "ops-ppc.c" 3567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic int verbose = 0; 3570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic double *fargs; 3572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic int nb_fargs; 3573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic uint32_t *iargs; 3574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic int nb_iargs; 3575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic uint16_t *ii16; 3576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic int nb_ii16; 3577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic inline void register_farg (void *farg, 3579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int s, uint16_t _exp, uint64_t mant) 3580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint64_t tmp; 3582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tmp = ((uint64_t)s << 63) | ((uint64_t)_exp << 52) | mant; 3584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *(uint64_t *)farg = tmp; 3585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov AB_DPRINTF("%d %03x %013llx => %016llx %0e\n", 3586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s, _exp, mant, *(uint64_t *)farg, *(double *)farg); 3587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void build_fargs_table (void) 3590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Sign goes from zero to one 3592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Exponent goes from 0 to ((1 << 12) - 1) 3593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * Mantissa goes from 1 to ((1 << 52) - 1) 3594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * + special values: 3595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * +0.0 : 0 0x000 0x0000000000000 3596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * -0.0 : 1 0x000 0x0000000000000 3597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * +infinity : 0 0x7FF 0x0000000000000 3598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * -infinity : 1 0x7FF 0x0000000000000 3599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * +SNaN : 0 0x7FF 0x7FFFFFFFFFFFF 3600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * -SNaN : 1 0x7FF 0x7FFFFFFFFFFFF 3601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * +QNaN : 0 0x7FF 0x8000000000000 3602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * -QNaN : 1 0x7FF 0x8000000000000 3603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * (8 values) 3604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 3605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint64_t mant; 3606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint16_t _exp, e0, e1; 3607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int s; 3608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 3609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fargs = my_malloc(200 * sizeof(double)); 3611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i = 0; 3612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (s = 0; s < 2; s++) { 3613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (e0 = 0; e0 < 2; e0++) { 3614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (e1 = 0x000; ; e1 = ((e1 + 1) << 2) + 6) { 3615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (e1 >= 0x400) 3616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov e1 = 0x3fe; 3617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = (e0 << 10) | e1; 3618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (mant = 0x0000000000001ULL; mant < (1ULL << 52); 3619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Add 'random' bits */ 3620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = ((mant + 0x4A6) << 13) + 0x359) { 3621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (e1 == 0x3fe) 3624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 3625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Special values */ 3629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* +0.0 : 0 0x000 0x0000000000000 */ 3630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 0; 3631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x000; 3632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x0000000000000ULL; 3633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* -0.0 : 1 0x000 0x0000000000000 */ 3635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 1; 3636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x000; 3637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x0000000000000ULL; 3638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* +infinity : 0 0x7FF 0x0000000000000 */ 3640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 0; 3641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x7FF; 3642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x0000000000000ULL; 3643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* -infinity : 1 0x7FF 0x0000000000000 */ 3645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 1; 3646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x7FF; 3647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x0000000000000ULL; 3648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* +SNaN : 0 0x7FF 0x7FFFFFFFFFFFF */ 3650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 0; 3651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x7FF; 3652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x7FFFFFFFFFFFFULL; 3653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* -SNaN : 1 0x7FF 0x7FFFFFFFFFFFF */ 3655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 1; 3656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x7FF; 3657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x7FFFFFFFFFFFFULL; 3658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* +QNaN : 0 0x7FF 0x8000000000000 */ 3660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 0; 3661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x7FF; 3662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x8000000000000ULL; 3663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* -QNaN : 1 0x7FF 0x8000000000000 */ 3665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov s = 1; 3666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _exp = 0x7FF; 3667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov mant = 0x8000000000000ULL; 3668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov register_farg(&fargs[i++], s, _exp, mant); 3669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov AB_DPRINTF("Registered %d floats values\n", i); 3670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov nb_fargs = i; 3671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void build_iargs_table (void) 3674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint64_t tmp; 3676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 3677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov iargs = my_malloc(400 * sizeof(uint32_t)); 3679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i = 0; 3680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (tmp = 0; ; tmp = tmp + 1 + (tmp>>1)+(tmp>>2)+(tmp>>3)) { 3681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (tmp >= 0x100000000ULL) 3682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tmp = 0xFFFFFFFF; 3683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov iargs[i++] = tmp; 3684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov AB_DPRINTF("val %08llx\n", tmp); 3685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (tmp == 0xFFFFFFFF) 3686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 3687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov AB_DPRINTF("Registered %d ints values\n", i); 3689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov nb_iargs = i; 3690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void build_ii16_table (void) 3693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t tmp; 3695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 3696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ii16 = my_malloc(200 * sizeof(uint32_t)); 3698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i = 0; 3699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (tmp = 0; ; tmp = tmp + 1 + (tmp>>1)+(tmp>>2)+(tmp>>3)) { 3700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (tmp >= 0x10000) 3701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tmp = 0xFFFF; 3702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ii16[i++] = tmp; 3703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov AB_DPRINTF("val %08llx\n", tmp); 3704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (tmp == 0xFFFF) 3705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 3706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov AB_DPRINTF("Registered %d ints values\n", i); 3708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov nb_ii16 = i; 3709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_int_three_args (const unsigned char *name, test_func_t func) 3712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 3714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j, k; 3715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 3717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 3718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_iargs; i++) { 3719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < nb_iargs; j++) { 3720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (k = 0;k < nb_iargs; k++) { 3721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 3722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r15 = iargs[j]; 3723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r16 = iargs[k]; 3724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 3725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 3726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 3727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 3728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 3729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 3730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 3731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 3732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 3733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x, %08x, %08x => %08x (%08x %08x)\n", 3734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], iargs[j], iargs[k], res, flags, xer); 3735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_int_two_args (const unsigned char *name, test_func_t func) 3744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 3746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j; 3747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 3749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 3750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_iargs; i++) { 3751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < nb_iargs; j++) { 3752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 3753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r15 = iargs[j]; 3754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 3755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 3756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 3757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 3758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 3759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 3760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 3761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 3762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 3763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x, %08x => %08x (%08x %08x)\n", 3764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], iargs[j], res, flags, xer); 3765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_int_one_arg (const unsigned char *name, test_func_t func) 3772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 3774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 3775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 3777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 3778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_iargs; i++) { 3779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 3780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 3781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 3782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// r18 = 0x20000000; // set xer_ca 3783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 3784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 3785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 3786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 3787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 3788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 3789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 3790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x => %08x (%08x %08x)\n", 3791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], res, flags, xer); 3792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic inline void _patch_op_imm (void *out, void *in, 3797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint16_t imm, int sh, int len) 3798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov volatile uint32_t *p, *q; 3800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p = out; 3802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov q = in; 3803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *p = (*q & ~(((1 << len) - 1) << sh)) | ((imm & ((1 << len) - 1)) << sh); 3804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic inline void patch_op_imm (void *out, void *in, 3807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint16_t imm, int sh, int len) 3808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov volatile uint32_t *p; 3810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p = out; 3812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _patch_op_imm(out, in, imm, sh, len); 3813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("dcbf 0, %0 ; icbi 0, %0 ; isync" ::"r"(p)); 3814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic inline void patch_op_imm16 (void *out, void *in, uint16_t imm) 3817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov patch_op_imm(out, in, imm, 0, 16); 3819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_int_one_reg_imm16 (const unsigned char *name, 3822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_func_t func) 3823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t func_buf[2], *p; 3825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 3826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j; 3827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 3829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 3830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_iargs; i++) { 3831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < nb_ii16; j++) { 3832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p = (void *)func; 3833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 3834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("copy func %s from %p to %p (%08x %08x)\n", 3835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, func, func_buf, p[0], p[1]); 3836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 3837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func_buf[1] = p[1]; 3838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov patch_op_imm16(func_buf, p, ii16[j]); 3839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func = (void *)func_buf; 3840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 3841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf(" => func %s from %p to %p (%08x %08x)\n", 3842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, func, func_buf, func_buf[0], func_buf[1]); 3843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 3844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 3845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 3846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 3847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 3848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 3849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 3850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 3851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 3852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 3853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 3854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x, %08x => %08x (%08x %08x)\n", 3855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], ii16[j], res, flags, xer); 3856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Special test cases for: 3863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * rlwimi 3864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * rlwinm 3865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * rlwnm 3866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * srawi 3867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * mcrf 3868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * mcrfs 3869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * mffs 3870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * mtfsb0 3871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * mtfsb1 3872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 3873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void rlwi_cb (const unsigned char *name, test_func_t func) 3875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t func_buf[2], *p; 3877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 3878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j, k, l; 3879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 3881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 3882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0;;) { 3883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (i >= nb_iargs) 3884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i = nb_iargs - 1; 3885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < 32; j++) { 3886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (k = 0; k < 32; k++) { 3887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (l = 0; l < 32; l++) { 3888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p = (void *)func; 3889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func_buf[1] = p[1]; 3890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _patch_op_imm(func_buf, p, j, 11, 5); 3891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _patch_op_imm(func_buf, p, k, 6, 5); 3892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov patch_op_imm(func_buf, p, l, 1, 5); 3893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func = (void *)func_buf; 3894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 3895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 3896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 3897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 3898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 3899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 3900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 3901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 3902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 3903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 3904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x, %d, %d, %d => %08x (%08x %08x)\n", 3905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], j, k, l, res, flags, xer); 3906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (i == 0) 3913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i = 1; 3914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else if (i == nb_iargs - 1) 3915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 3916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 3917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov i += 3; 3918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void rlwnm_cb (const unsigned char *name, test_func_t func) 3923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t func_buf[2], *p; 3925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 3926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j, k, l; 3927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 3929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 3930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_iargs; i++) { 3931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < 64; j++) { 3932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (k = 0; k < 32; k++) { 3933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (l = 0; l < 32; l++) { 3934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p = (void *)func; 3935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func_buf[1] = p[1]; 3936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _patch_op_imm(func_buf, p, k, 6, 5); 3937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov patch_op_imm(func_buf, p, l, 1, 5); 3938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func = (void *)func_buf; 3939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 3940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r15 = j; 3941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 3942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 3943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 3944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 3945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 3946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 3947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 3948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 3949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 3950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x, %08x, %d, %d => %08x (%08x %08x)\n", 3951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], j, k, l, res, flags, xer); 3952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void srawi_cb (const unsigned char *name, test_func_t func) 3963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t func_buf[2], *p; 3965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 3966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j; 3967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 3969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 3970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_iargs; i++) { 3971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < 32; j++) { 3972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p = (void *)func; 3973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func_buf[1] = p[1]; 3974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov patch_op_imm(func_buf, p, j, 11, 5); 3975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov func = (void *)func_buf; 3976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 3977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 3978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 3979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 3980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 3981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 3982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 3983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 3984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 3985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 3986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x, %d => %08x (%08x %08x)\n", 3987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], j, res, flags, xer); 3988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 3992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef struct special_t special_t; 3995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstruct special_t { 3996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const unsigned char *name; 3997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov void (*test_cb)(const unsigned char *name, test_func_t func); 3998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 3999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_special (special_t *table, 4001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const unsigned char *name, test_func_t func) 4002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const unsigned char *tmp; 4004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 4005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (tmp = name; my_isspace(*tmp); tmp++) 4007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; table[i].name != NULL; i++) { 4009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 4010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "look for handler for '%s' (%s)\n", name, 4011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov table[i].name); 4012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (my_strcmp(table[i].name, tmp) == 0) { 4014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*table[i].test_cb)(name, func); 4015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return; 4016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "ERROR: no test found for op '%s'\n", name); 4019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic special_t special_int_ops[] = { 4022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 4023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "rlwimi", /* One register + 3 5 bits immediate arguments */ 4025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &rlwi_cb, 4026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "rlwimi.", /* One register + 3 5 bits immediate arguments */ 4029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &rlwi_cb, 4030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "rlwinm", /* One register + 3 5 bits immediate arguments */ 4033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &rlwi_cb, 4034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "rlwinm.", /* One register + 3 5 bits immediate arguments */ 4037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &rlwi_cb, 4038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "rlwnm", /* Two registers + 3 5 bits immediate arguments */ 4041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &rlwnm_cb, 4042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "rlwnm.", /* Two registers + 3 5 bits immediate arguments */ 4045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &rlwnm_cb, 4046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "srawi", /* One register + 1 5 bits immediate arguments */ 4049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &srawi_cb, 4050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "srawi.", /* One register + 1 5 bits immediate arguments */ 4053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &srawi_cb, 4054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 4057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mcrf", /* 2 3 bits immediate arguments */ 4059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mcrf_cb, 4060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mcrf", /* 2 3 bits immediate arguments */ 4063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mcrf_cb, 4064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov NULL, 4068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov NULL, 4069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 4071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_int_special (const unsigned char *name, test_func_t func) 4073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_special(special_int_ops, name, func); 4075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_loop_t int_loops[] = { 4078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_int_one_arg, 4079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_int_two_args, 4080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_int_three_args, 4081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_int_two_args, 4082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_int_one_reg_imm16, 4083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_int_one_reg_imm16, 4084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_int_special, 4085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 4086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 4088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_float_three_args (const unsigned char *name, test_func_t func) 4089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov double res; 4091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint64_t u0, u1, u2, ur; 4092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t flags; 4093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j, k; 4094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 4096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 4097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_fargs; i++) { 4098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < nb_fargs; j++) { 4099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (k = 0;k < nb_fargs; k++) { 4100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov u0 = *(uint64_t *)(&fargs[i]); 4101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov u1 = *(uint64_t *)(&fargs[j]); 4102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov u2 = *(uint64_t *)(&fargs[k]); 4103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f14 = fargs[i]; 4104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f15 = fargs[j]; 4105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f16 = fargs[k]; 4106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 4107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 4108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 4109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f18 = +0.0; 4110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtfsf 0xFF, 18"); 4111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 4112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 4113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 4114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = f17; 4115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ur = *(uint64_t *)(&res); 4116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %016llx, %016llx, %016llx => %016llx (%08x)\n", 4117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, u0, u1, u2, ur, flags); 4118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_float_two_args (const unsigned char *name, test_func_t func) 4127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov double res; 4129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint64_t u0, u1, ur; 4130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t flags; 4131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j; 4132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 4134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 4135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_fargs; i++) { 4136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < nb_fargs; j++) { 4137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov u0 = *(uint64_t *)(&fargs[i]); 4138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov u1 = *(uint64_t *)(&fargs[j]); 4139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f14 = fargs[i]; 4140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f15 = fargs[j]; 4141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 4142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 4143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 4144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f18 = +0.0; 4145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtfsf 0xFF, 18"); 4146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 4147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 4148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 4149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = f17; 4150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ur = *(uint64_t *)(&res); 4151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %016llx, %016llx => %016llx (%08x)\n", 4152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, u0, u1, ur, flags); 4153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_float_one_arg (const unsigned char *name, test_func_t func) 4160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov double res; 4162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint64_t u0, ur; 4163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t flags; 4164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i; 4165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 4167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 4168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_fargs; i++) { 4169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov u0 = *(uint64_t *)(&fargs[i]); 4170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f14 = fargs[i]; 4171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 4172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 4173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 4174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov f18 = +0.0; 4175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtfsf 0xFF, 18"); 4176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 4177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 4178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 4179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = f17; 4180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ur = *(uint64_t *)(&res); 4181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %016llx => %016llx (%08x)\n", name, u0, ur, flags); 4182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic special_t special_float_ops[] = { 4187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 4188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mffs", /* One 5 bits immediate argument */ 4190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mffs_cb, 4191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mffs.", /* One 5 bits immediate argument */ 4194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mffs_cb, 4195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsb0", /* One 5 bits immediate argument */ 4198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mffs_cb, 4199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsb0.", /* One 5 bits immediate argument */ 4202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mffs_cb, 4203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsb1", /* One 5 bits immediate argument */ 4206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mffs_cb, 4207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsb1.", /* One 5 bits immediate argument */ 4210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mffs_cb, 4211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsf", /* One register + 1 8 bits immediate argument */ 4214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mtfsf_cb, 4215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsf.", /* One register + 1 8 bits immediate argument */ 4218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mtfsf_cb, 4219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsfi", /* One 5 bits argument + 1 5 bits argument */ 4222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mtfsfi_cb, 4223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mtfsfi.", /* One 5 bits argument + 1 5 bits argument */ 4226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &mtfsfi_cb, 4227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { 4230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov NULL, 4231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov NULL, 4232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov }, 4233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 4234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_float_special (const unsigned char *name, test_func_t func) 4236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_special(special_float_ops, name, func); 4238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic test_loop_t float_loops[] = { 4241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_float_one_arg, 4242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_float_two_args, 4243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_float_three_args, 4244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_float_two_args, 4245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov NULL, 4246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov NULL, 4247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov &test_float_special, 4248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}; 4249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 4250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) /* XXX: TODO */ 4253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (HAS_ALTIVEC) */ 4254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (IS_PPC405) 4256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void test_ppc405 (const unsigned char *name, test_func_t func) 4257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uint32_t res, flags, xer; 4259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j, k; 4260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 1) 4262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Test instruction %s\n", name); 4263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < nb_iargs; i++) { 4264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < nb_iargs; j++) { 4265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (k = 0;k < nb_iargs; k++) { 4266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r14 = iargs[i]; 4267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r15 = iargs[j]; 4268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Beware: the third argument and the result 4269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov * are in the same register 4270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov */ 4271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r17 = iargs[k]; 4272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r18 = 0; 4273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtcr 18"); 4274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mtxer 18"); 4275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*func)(); 4276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfcr 18"); 4277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flags = r18; 4278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__ ("mfxer 18"); 4279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov xer = r18; 4280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov res = r17; 4281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("%s %08x, %08x, %08x => %08x (%08x %08x)\n", 4282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, iargs[i], iargs[j], iargs[k], res, flags, xer); 4283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (IS_PPC405) */ 4291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic int check_filter (unsigned char *filter) 4293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned char *c; 4295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int ret = 1; 4296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (filter != NULL) { 4298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov c = my_strchr(filter, '*'); 4299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (c != NULL) { 4300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov *c = '\0'; 4301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret = 0; 4302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 4306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic int check_name (const unsigned char *name, const unsigned char *filter, 4309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int exact) 4310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int nlen, flen; 4312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int ret = 0; 4313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (filter != NULL) { 4315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (; my_isspace(*name); name++) 4316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov FDPRINTF("Check '%s' againt '%s' (%s match)\n", 4318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov name, filter, exact ? "exact" : "starting"); 4319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov nlen = vexxx_strlen(name); 4320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov flen = vexxx_strlen(filter); 4321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (exact) { 4322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (nlen == flen && my_memcmp(name, filter, flen) == 0) 4323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret = 1; 4324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 4325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (flen <= nlen && my_memcmp(name, filter, flen) == 0) 4326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret = 1; 4327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 4329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ret = 1; 4330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return ret; 4333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void do_tests (int one_arg, int two_args, int three_args, 4336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int arith, int logical, int compare, 4337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int integer, int floats, int p405, 4338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int altivec, int faltivec, 4339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int cr, unsigned char *filter) 4340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (IS_PPC405) 4342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_loop_t tmpl; 4343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_loop_t *loop; 4345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_t *tests; 4346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int nb_args, type, family; 4347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int i, j, n; 4348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int exact; 4349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov exact = check_filter(filter); 4351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov n = 0; 4352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; all_tests[i].name != NULL; i++) { 4353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov nb_args = all_tests[i].flags & PPC_NB_ARGS; 4354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Check number of arguments */ 4355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ((nb_args == 1 && !one_arg) || 4356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (nb_args == 2 && !two_args) || 4357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (nb_args == 3 && !three_args)) 4358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Check instruction type */ 4360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov type = all_tests[i].flags & PPC_TYPE; 4361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ((type == PPC_ARITH && !arith) || 4362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (type == PPC_LOGICAL && !logical) || 4363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (type == PPC_COMPARE && !compare)) 4364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Check instruction family */ 4366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov family = all_tests[i].flags & PPC_FAMILY; 4367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if ((family == PPC_INTEGER && !integer) || 4368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (family == PPC_FLOAT && !floats) || 4369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (family == PPC_405 && !p405) || 4370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (family == PPC_ALTIVEC && !altivec) || 4371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (family == PPC_FALTIVEC && !faltivec)) 4372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Check flags update */ 4374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (((all_tests[i].flags & PPC_CR) && cr == 0) || 4375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (!(all_tests[i].flags & PPC_CR) && cr == 1)) 4376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* All passed, do the tests */ 4378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tests = all_tests[i].tests; 4379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* Select the test loop */ 4380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov switch (family) { 4381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case PPC_INTEGER: 4382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov loop = &int_loops[nb_args - 1]; 4383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 4384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case PPC_FLOAT: 4385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if !defined (NO_FLOAT) 4386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov loop = &float_loops[nb_args - 1]; 4387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 4388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 4389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Sorry. " 4390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC floating point instructions tests " 4391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "are disabled on your host\n"); 4392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* !defined (NO_FLOAT) */ 4393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case PPC_405: 4395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (IS_PPC405) 4396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov tmpl = &test_ppc405; 4397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov loop = &tmpl; 4398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 4399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 4400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Sorry. " 4401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "PPC405 instructions tests are disabled on your host\n"); 4402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif /* defined (IS_PPC405) */ 4404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case PPC_ALTIVEC: 4405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 4406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 4407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov loop = &altivec_int_loops[nb_args - 1]; 4408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 4409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 4410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Sorry. " 4411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec instructions tests are not yet implemented\n"); 4412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 4415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Sorry. " 4416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec instructions tests are disabled on your host\n"); 4417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov case PPC_FALTIVEC: 4420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined (HAS_ALTIVEC) 4421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 4422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov loop = &altivec_float_loops[nb_args - 1]; 4423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov break; 4424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 4425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Sorry. " 4426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec instructions tests are not yet implemented\n"); 4427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 4430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "Sorry. " 4431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "Altivec float instructions tests " 4432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "are disabled on your host\n"); 4433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov default: 4436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("ERROR: unknown insn family %08x\n", family); 4437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov continue; 4438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (verbose > 0) 4440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "%s:\n", all_tests[i].name); 4441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; tests[j].name != NULL; j++) { 4442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (check_name(tests[j].name, filter, exact)) 4443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*loop)(tests[j].name, tests[j].func); 4444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov n++; 4445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf("\n"); 4447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( "All done. Tested %d different instructions\n", n); 4449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0 // unused 4452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void usage (void) 4453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vexxx_printf( 4455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "test-ppc [-1] [-2] [-3] [-*] [-t <type>] [-f <family>] [-u] " 4456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "[-n <filter>] [-x] [-h]\n" 4457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-1: test opcodes with one argument\n" 4458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-2: test opcodes with two arguments\n" 4459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-3: test opcodes with three arguments\n" 4460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-*: launch test without checking the number of arguments\n" 4461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-t: launch test for instructions of type <type>\n" 4462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t recognized types:\n" 4463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tarith (or a)\n" 4464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tlogical (or l)\n" 4465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tcompare (or c)\n" 4466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-f: launch test for instructions of family <family>\n" 4467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t recognized families:\n" 4468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tinteger (or i)\n" 4469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tfloat (or f)\n" 4470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tppc405 (or mac)\n" 4471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\taltivec (or a)\n" 4472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-u: test instructions that update flags\n" 4473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-n: filter instructions with <filter>\n" 4474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t <filter> can be in two forms:\n" 4475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tname : filter functions that exactly match <name>\n" 4476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t\tname* : filter functions that start with <name>\n" 4477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "\t-h: print this help\n" 4478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 4479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint _main (int argc, char **argv) 4483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned char /* *tmp, */ *filter = NULL; 4485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int one_arg = 0, two_args = 0, three_args = 0; 4486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int arith = 0, logical = 0, compare = 0; 4487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int integer = 0, floats = 0, p405 = 0, altivec = 0, faltivec = 0; 4488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov int cr = -1; 4489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov //int c; 4490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // while ((c = getopt(argc, argv, "123t:f:n:uvh")) != -1) { 4492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // switch (c) { 4493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case '1': 4494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // one_arg = 1; 4495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case '2': 4497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // two_args = 1; 4498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case '3': 4500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // three_args = 1; 4501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case 't': 4503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // tmp = optarg; 4504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // if (my_strcmp(tmp, "arith") == 0 || my_strcmp(tmp, "a") == 0) { 4505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // arith = 1; 4506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } else if (my_strcmp(tmp, "logical") == 0 || my_strcmp(tmp, "l") == 0) { 4507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // logical = 1; 4508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } else if (my_strcmp(tmp, "compare") == 0 || my_strcmp(tmp, "c") == 0) { 4509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // compare = 1; 4510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } else { 4511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // goto bad_arg; 4512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } 4513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case 'f': 4515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // tmp = optarg; 4516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // if (my_strcmp(tmp, "integer") == 0 || my_strcmp(tmp, "i") == 0) { 4517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // integer = 1; 4518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } else if (my_strcmp(tmp, "float") == 0 || my_strcmp(tmp, "f") == 0) { 4519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // floats = 1; 4520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } else if (my_strcmp(tmp, "ppc405") == 0 || my_strcmp(tmp, "mac") == 0) { 4521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // p405 = 1; 4522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } else if (my_strcmp(tmp, "altivec") == 0 || my_strcmp(tmp, "a") == 0) { 4523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // altivec = 1; 4524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // faltivec = 1; 4525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } else { 4526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // goto bad_arg; 4527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } 4528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case 'n': 4530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // filter = optarg; 4531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case 'u': 4533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // cr = 1; 4534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case 'h': 4536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // usage(); 4537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // return 0; 4538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // case 'v': 4539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // verbose++; 4540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // break; 4541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // default: 4542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // usage(); 4543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // vexxx_printf( "Unknown argument: '%c'\n", c); 4544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // return 1; 4545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // bad_arg: 4546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // usage(); 4547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // vexxx_printf( "Bad argument for '%c': '%s'\n", c, tmp); 4548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // return 1; 4549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } 4550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } 4551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // if (argc != optind) { 4552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // usage(); 4553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // vexxx_printf( "Bad number of arguments\n"); 4554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // return 1; 4555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // } 4556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (one_arg == 0 && two_args == 0 && three_args == 0) { 4558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov one_arg = 1; 4559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov two_args = 1; 4560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov three_args = 1; 4561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (arith == 0 && logical == 0 && compare == 0) { 4563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov arith = 1; 4564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov logical = 1; 4565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov compare = 1; 4566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (integer == 0 && floats == 0 && altivec == 0 && faltivec == 0 && 4568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p405 == 0) { 4569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov integer = 1; 4570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov floats = 1; 4571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov altivec = 1; 4572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov faltivec = 1; 4573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p405 = 1; 4574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 4575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (cr == -1) 4576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov cr = 2; 4577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov build_iargs_table(); 4578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov build_fargs_table(); 4579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov build_ii16_table(); 4580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 1 4582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov one_arg=1; 4583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov two_args=1; 4584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov three_args=1; 4585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov arith=1; 4587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov logical=1; 4588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov compare=1; 4589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov integer=1; 4591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov floats=0; 4592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov p405=0; 4594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov altivec=0; 4595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov faltivec=0; 4596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 4597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_tests(one_arg, two_args, three_args, 4599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov arith, logical, compare, 4600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov integer, floats, p405, altivec, faltivec, 4601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov cr, filter); 4602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return 0; 4604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 4607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid entry ( HWord(*service)(HWord,HWord) ) 4608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 4609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov char* argv[2] = { NULL, NULL }; 4610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov serviceFn = service; 4611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov _main(0, argv); 4612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov (*service)(0,0); 4613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 4614