1918345e80e207568ce129eb6a419a511594d1b70sewardj 2918345e80e207568ce129eb6a419a511594d1b70sewardj#include <stdio.h> 3918345e80e207568ce129eb6a419a511594d1b70sewardj 4918345e80e207568ce129eb6a419a511594d1b70sewardjtypedef unsigned long long int ULong; 5918345e80e207568ce129eb6a419a511594d1b70sewardj 6918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRADI ------------------------ */ 7918345e80e207568ce129eb6a419a511594d1b70sewardj 8918345e80e207568ce129eb6a419a511594d1b70sewardj#define INSN_SRADI(nnn) \ 9918345e80e207568ce129eb6a419a511594d1b70sewardj void do_sradi_##nnn ( ULong arg, /*OUT*/ULong* res, /*OUT*/ULong* xer ) \ 10918345e80e207568ce129eb6a419a511594d1b70sewardj { \ 11918345e80e207568ce129eb6a419a511594d1b70sewardj ULong argW = arg; \ 12918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; \ 13918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; \ 14918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( \ 15918345e80e207568ce129eb6a419a511594d1b70sewardj "sradi %0,%2, " #nnn "\n\t" \ 16918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" \ 17918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) \ 18918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(argW) \ 19918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" \ 20918345e80e207568ce129eb6a419a511594d1b70sewardj ); \ 21918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; \ 22918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; \ 23918345e80e207568ce129eb6a419a511594d1b70sewardj } 24918345e80e207568ce129eb6a419a511594d1b70sewardj 25918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(0) 26918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(1) 27918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(2) 28918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(3) 29918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(4) 30918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(5) 31918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(6) 32918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(7) 33918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(8) 34918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(9) 35918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(10) 36918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(11) 37918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(12) 38918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(13) 39918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(14) 40918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(15) 41918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(16) 42918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(17) 43918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(18) 44918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(19) 45918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(20) 46918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(21) 47918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(22) 48918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(23) 49918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(24) 50918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(25) 51918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(26) 52918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(27) 53918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(28) 54918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(29) 55918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(30) 56918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(31) 57918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(32) 58918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(33) 59918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(34) 60918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(35) 61918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(36) 62918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(37) 63918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(38) 64918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(39) 65918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(40) 66918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(41) 67918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(42) 68918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(43) 69918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(44) 70918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(45) 71918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(46) 72918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(47) 73918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(48) 74918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(49) 75918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(50) 76918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(51) 77918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(52) 78918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(53) 79918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(54) 80918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(55) 81918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(56) 82918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(57) 83918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(58) 84918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(59) 85918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(60) 86918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(61) 87918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(62) 88918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRADI(63) 89918345e80e207568ce129eb6a419a511594d1b70sewardj 90918345e80e207568ce129eb6a419a511594d1b70sewardjstatic void* all_sradi[64] 91918345e80e207568ce129eb6a419a511594d1b70sewardj = { 92918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_0, 93918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_1, 94918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_2, 95918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_3, 96918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_4, 97918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_5, 98918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_6, 99918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_7, 100918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_8, 101918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_9, 102918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_10, 103918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_11, 104918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_12, 105918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_13, 106918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_14, 107918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_15, 108918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_16, 109918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_17, 110918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_18, 111918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_19, 112918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_20, 113918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_21, 114918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_22, 115918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_23, 116918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_24, 117918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_25, 118918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_26, 119918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_27, 120918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_28, 121918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_29, 122918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_30, 123918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_31, 124918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_32, 125918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_33, 126918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_34, 127918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_35, 128918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_36, 129918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_37, 130918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_38, 131918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_39, 132918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_40, 133918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_41, 134918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_42, 135918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_43, 136918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_44, 137918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_45, 138918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_46, 139918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_47, 140918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_48, 141918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_49, 142918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_50, 143918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_51, 144918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_52, 145918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_53, 146918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_54, 147918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_55, 148918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_56, 149918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_57, 150918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_58, 151918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_59, 152918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_60, 153918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_61, 154918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_62, 155918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_sradi_63 156918345e80e207568ce129eb6a419a511594d1b70sewardj }; 157918345e80e207568ce129eb6a419a511594d1b70sewardj 158918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRAWI ------------------------ */ 159918345e80e207568ce129eb6a419a511594d1b70sewardj 160918345e80e207568ce129eb6a419a511594d1b70sewardj#define INSN_SRAWI(nnn) \ 161918345e80e207568ce129eb6a419a511594d1b70sewardj void do_srawi_##nnn ( ULong arg, /*OUT*/ULong* res, /*OUT*/ULong* xer ) \ 162918345e80e207568ce129eb6a419a511594d1b70sewardj { \ 163918345e80e207568ce129eb6a419a511594d1b70sewardj ULong argW = arg; \ 164918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; \ 165918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; \ 166918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( \ 167918345e80e207568ce129eb6a419a511594d1b70sewardj "srawi %0,%2, " #nnn "\n\t" \ 168918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" \ 169918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) \ 170918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(argW) \ 171918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" \ 172918345e80e207568ce129eb6a419a511594d1b70sewardj ); \ 173918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; \ 174918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; \ 175918345e80e207568ce129eb6a419a511594d1b70sewardj } 176918345e80e207568ce129eb6a419a511594d1b70sewardj 177918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(0) 178918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(1) 179918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(2) 180918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(3) 181918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(4) 182918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(5) 183918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(6) 184918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(7) 185918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(8) 186918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(9) 187918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(10) 188918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(11) 189918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(12) 190918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(13) 191918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(14) 192918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(15) 193918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(16) 194918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(17) 195918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(18) 196918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(19) 197918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(20) 198918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(21) 199918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(22) 200918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(23) 201918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(24) 202918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(25) 203918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(26) 204918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(27) 205918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(28) 206918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(29) 207918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(30) 208918345e80e207568ce129eb6a419a511594d1b70sewardjINSN_SRAWI(31) 209918345e80e207568ce129eb6a419a511594d1b70sewardj 210918345e80e207568ce129eb6a419a511594d1b70sewardjstatic void* all_srawi[32] 211918345e80e207568ce129eb6a419a511594d1b70sewardj = { 212918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_0, 213918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_1, 214918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_2, 215918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_3, 216918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_4, 217918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_5, 218918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_6, 219918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_7, 220918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_8, 221918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_9, 222918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_10, 223918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_11, 224918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_12, 225918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_13, 226918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_14, 227918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_15, 228918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_16, 229918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_17, 230918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_18, 231918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_19, 232918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_20, 233918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_21, 234918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_22, 235918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_23, 236918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_24, 237918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_25, 238918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_26, 239918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_27, 240918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_28, 241918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_29, 242918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_30, 243918345e80e207568ce129eb6a419a511594d1b70sewardj (void*)&do_srawi_31 244918345e80e207568ce129eb6a419a511594d1b70sewardj }; 245918345e80e207568ce129eb6a419a511594d1b70sewardj 246918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRAD ------------------------ */ 247918345e80e207568ce129eb6a419a511594d1b70sewardj 248918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_srad ( ULong arg1, ULong arg2, 249918345e80e207568ce129eb6a419a511594d1b70sewardj /*OUT*/ULong* res, /*OUT*/ULong* xer ) 250918345e80e207568ce129eb6a419a511594d1b70sewardj{ 251918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg1W = arg1; 252918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg2W = arg2; 253918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; 254918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; 255918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( 256918345e80e207568ce129eb6a419a511594d1b70sewardj "srad %0,%2,%3\n\t" 257918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" 258918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) 259918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(arg1W), "b"(arg2W) 260918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" 261918345e80e207568ce129eb6a419a511594d1b70sewardj ); 262918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; 263918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; 264918345e80e207568ce129eb6a419a511594d1b70sewardj} 265918345e80e207568ce129eb6a419a511594d1b70sewardj 266918345e80e207568ce129eb6a419a511594d1b70sewardj 267918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRAW ------------------------ */ 268918345e80e207568ce129eb6a419a511594d1b70sewardj 269918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_sraw ( ULong arg1, ULong arg2, 270918345e80e207568ce129eb6a419a511594d1b70sewardj /*OUT*/ULong* res, /*OUT*/ULong* xer ) 271918345e80e207568ce129eb6a419a511594d1b70sewardj{ 272918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg1W = arg1; 273918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg2W = arg2; 274918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; 275918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; 276918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( 277918345e80e207568ce129eb6a419a511594d1b70sewardj "sraw %0,%2,%3\n\t" 278918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" 279918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) 280918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(arg1W), "b"(arg2W) 281918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" 282918345e80e207568ce129eb6a419a511594d1b70sewardj ); 283918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; 284918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; 285918345e80e207568ce129eb6a419a511594d1b70sewardj} 286918345e80e207568ce129eb6a419a511594d1b70sewardj 287918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRD ------------------------ */ 288918345e80e207568ce129eb6a419a511594d1b70sewardj 289918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_srd ( ULong arg1, ULong arg2, 290918345e80e207568ce129eb6a419a511594d1b70sewardj /*OUT*/ULong* res, /*OUT*/ULong* xer ) 291918345e80e207568ce129eb6a419a511594d1b70sewardj{ 292918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg1W = arg1; 293918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg2W = arg2; 294918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; 295918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; 296918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( 297918345e80e207568ce129eb6a419a511594d1b70sewardj "srd %0,%2,%3\n\t" 298918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" 299918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) 300918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(arg1W), "b"(arg2W) 301918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" 302918345e80e207568ce129eb6a419a511594d1b70sewardj ); 303918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; 304918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; 305918345e80e207568ce129eb6a419a511594d1b70sewardj} 306918345e80e207568ce129eb6a419a511594d1b70sewardj 307918345e80e207568ce129eb6a419a511594d1b70sewardj 308918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SRW ------------------------ */ 309918345e80e207568ce129eb6a419a511594d1b70sewardj 310918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_srw ( ULong arg1, ULong arg2, 311918345e80e207568ce129eb6a419a511594d1b70sewardj /*OUT*/ULong* res, /*OUT*/ULong* xer ) 312918345e80e207568ce129eb6a419a511594d1b70sewardj{ 313918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg1W = arg1; 314918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg2W = arg2; 315918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; 316918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; 317918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( 318918345e80e207568ce129eb6a419a511594d1b70sewardj "srw %0,%2,%3\n\t" 319918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" 320918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) 321918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(arg1W), "b"(arg2W) 322918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" 323918345e80e207568ce129eb6a419a511594d1b70sewardj ); 324918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; 325918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; 326918345e80e207568ce129eb6a419a511594d1b70sewardj} 327918345e80e207568ce129eb6a419a511594d1b70sewardj 328918345e80e207568ce129eb6a419a511594d1b70sewardj 329918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SLD ------------------------ */ 330918345e80e207568ce129eb6a419a511594d1b70sewardj 331918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_sld ( ULong arg1, ULong arg2, 332918345e80e207568ce129eb6a419a511594d1b70sewardj /*OUT*/ULong* res, /*OUT*/ULong* xer ) 333918345e80e207568ce129eb6a419a511594d1b70sewardj{ 334918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg1W = arg1; 335918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg2W = arg2; 336918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; 337918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; 338918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( 339918345e80e207568ce129eb6a419a511594d1b70sewardj "sld %0,%2,%3\n\t" 340918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" 341918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) 342918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(arg1W), "b"(arg2W) 343918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" 344918345e80e207568ce129eb6a419a511594d1b70sewardj ); 345918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; 346918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; 347918345e80e207568ce129eb6a419a511594d1b70sewardj} 348918345e80e207568ce129eb6a419a511594d1b70sewardj 349918345e80e207568ce129eb6a419a511594d1b70sewardj 350918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ SLW ------------------------ */ 351918345e80e207568ce129eb6a419a511594d1b70sewardj 352918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_slw ( ULong arg1, ULong arg2, 353918345e80e207568ce129eb6a419a511594d1b70sewardj /*OUT*/ULong* res, /*OUT*/ULong* xer ) 354918345e80e207568ce129eb6a419a511594d1b70sewardj{ 355918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg1W = arg1; 356918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg2W = arg2; 357918345e80e207568ce129eb6a419a511594d1b70sewardj ULong resW = 0; 358918345e80e207568ce129eb6a419a511594d1b70sewardj ULong xerW = 0; 359918345e80e207568ce129eb6a419a511594d1b70sewardj __asm__ __volatile__( 360918345e80e207568ce129eb6a419a511594d1b70sewardj "slw %0,%2,%3\n\t" 361918345e80e207568ce129eb6a419a511594d1b70sewardj "mfxer %1" 362918345e80e207568ce129eb6a419a511594d1b70sewardj : /*out*/ "=b"(resW), "=b"(xerW) 363918345e80e207568ce129eb6a419a511594d1b70sewardj : /*in*/ "b"(arg1W), "b"(arg2W) 364918345e80e207568ce129eb6a419a511594d1b70sewardj : /*trash*/ "cc" 365918345e80e207568ce129eb6a419a511594d1b70sewardj ); 366918345e80e207568ce129eb6a419a511594d1b70sewardj *res = resW; 367918345e80e207568ce129eb6a419a511594d1b70sewardj *xer = xerW; 368918345e80e207568ce129eb6a419a511594d1b70sewardj} 369918345e80e207568ce129eb6a419a511594d1b70sewardj 370918345e80e207568ce129eb6a419a511594d1b70sewardj 371918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ ------------------------ */ 372918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ ------------------------ */ 373918345e80e207568ce129eb6a419a511594d1b70sewardj/* ------------------------ ------------------------ */ 374918345e80e207568ce129eb6a419a511594d1b70sewardj 375918345e80e207568ce129eb6a419a511594d1b70sewardj#define N_ARGS64 41 376918345e80e207568ce129eb6a419a511594d1b70sewardj 377918345e80e207568ce129eb6a419a511594d1b70sewardjULong args64[N_ARGS64] = { 378918345e80e207568ce129eb6a419a511594d1b70sewardj 0x0000000000000000ULL, 379918345e80e207568ce129eb6a419a511594d1b70sewardj 380918345e80e207568ce129eb6a419a511594d1b70sewardj 0x0000000000000001ULL, 381918345e80e207568ce129eb6a419a511594d1b70sewardj 0x0000000031415927ULL, 382918345e80e207568ce129eb6a419a511594d1b70sewardj 0x000000007FFFFFFFULL, 383918345e80e207568ce129eb6a419a511594d1b70sewardj 0x0000000080000000ULL, 384918345e80e207568ce129eb6a419a511594d1b70sewardj 0x00000000FFFFFFFFULL, 385918345e80e207568ce129eb6a419a511594d1b70sewardj 386918345e80e207568ce129eb6a419a511594d1b70sewardj 0x0000000100000000ULL, 387918345e80e207568ce129eb6a419a511594d1b70sewardj 0x3141592700000000ULL, 388918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFF00000000ULL, 389918345e80e207568ce129eb6a419a511594d1b70sewardj 0x8000000000000000ULL, 390918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFF00000000ULL, 391918345e80e207568ce129eb6a419a511594d1b70sewardj 392918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFF00000001ULL, 393918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFF31415927ULL, 394918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFF7FFFFFFFULL, 395918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFF80000000ULL, 396918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFFFFFFFFFFULL, 397918345e80e207568ce129eb6a419a511594d1b70sewardj 398918345e80e207568ce129eb6a419a511594d1b70sewardj 0x000000017FFFFFFFULL, 399918345e80e207568ce129eb6a419a511594d1b70sewardj 0x314159277FFFFFFFULL, 400918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFF7FFFFFFFULL, 401918345e80e207568ce129eb6a419a511594d1b70sewardj 0x800000007FFFFFFFULL, 402918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFF7FFFFFFFULL, 403918345e80e207568ce129eb6a419a511594d1b70sewardj 404918345e80e207568ce129eb6a419a511594d1b70sewardj 0x8000000000000001ULL, 405918345e80e207568ce129eb6a419a511594d1b70sewardj 0x8000000031415927ULL, 406918345e80e207568ce129eb6a419a511594d1b70sewardj 0x800000007FFFFFFFULL, 407918345e80e207568ce129eb6a419a511594d1b70sewardj 0x8000000080000000ULL, 408918345e80e207568ce129eb6a419a511594d1b70sewardj 0x80000000FFFFFFFFULL, 409918345e80e207568ce129eb6a419a511594d1b70sewardj 410918345e80e207568ce129eb6a419a511594d1b70sewardj 0x0000000180000000ULL, 411918345e80e207568ce129eb6a419a511594d1b70sewardj 0x3141592780000000ULL, 412918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFF80000000ULL, 413918345e80e207568ce129eb6a419a511594d1b70sewardj 0x8000000080000000ULL, 414918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFF80000000ULL, 415918345e80e207568ce129eb6a419a511594d1b70sewardj 416918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFF00000001ULL, 417918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFF31415927ULL, 418918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFF7FFFFFFFULL, 419918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFF80000000ULL, 420918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFFFFFFFFFFULL, 421918345e80e207568ce129eb6a419a511594d1b70sewardj 422918345e80e207568ce129eb6a419a511594d1b70sewardj 0x00000001FFFFFFFFULL, 423918345e80e207568ce129eb6a419a511594d1b70sewardj 0x31415927FFFFFFFFULL, 424918345e80e207568ce129eb6a419a511594d1b70sewardj 0x7FFFFFFFFFFFFFFFULL, 425918345e80e207568ce129eb6a419a511594d1b70sewardj 0x80000000FFFFFFFFULL, 426918345e80e207568ce129eb6a419a511594d1b70sewardj 0xFFFFFFFFFFFFFFFFULL 427918345e80e207568ce129eb6a419a511594d1b70sewardj}; 428918345e80e207568ce129eb6a419a511594d1b70sewardj 429918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_unary ( char* name, void** fns, int n_fns ) 430918345e80e207568ce129eb6a419a511594d1b70sewardj{ 431918345e80e207568ce129eb6a419a511594d1b70sewardj int i, j; 432918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg, res, xer; 433918345e80e207568ce129eb6a419a511594d1b70sewardj void(*fn)(ULong,ULong*,ULong*); 434918345e80e207568ce129eb6a419a511594d1b70sewardj for (i = 0; i < n_fns; i++) { /* shift */ 435918345e80e207568ce129eb6a419a511594d1b70sewardj for (j = 0; j < N_ARGS64; j++) { /* arg */ 436918345e80e207568ce129eb6a419a511594d1b70sewardj arg = args64[j]; 437918345e80e207568ce129eb6a419a511594d1b70sewardj res = xer = 0; 438918345e80e207568ce129eb6a419a511594d1b70sewardj fn = fns[i]; 439918345e80e207568ce129eb6a419a511594d1b70sewardj fn( arg, &res, &xer ); 440918345e80e207568ce129eb6a419a511594d1b70sewardj printf("%5s(0x%016llx, %2d) = 0x%016llx, %d\n", 441918345e80e207568ce129eb6a419a511594d1b70sewardj name, arg, (int)i, res, (int)((xer >> 29 & 1))); 442918345e80e207568ce129eb6a419a511594d1b70sewardj } 443918345e80e207568ce129eb6a419a511594d1b70sewardj } 444918345e80e207568ce129eb6a419a511594d1b70sewardj} 445918345e80e207568ce129eb6a419a511594d1b70sewardj 446918345e80e207568ce129eb6a419a511594d1b70sewardjvoid do_binary ( char* name, void* fnV ) 447918345e80e207568ce129eb6a419a511594d1b70sewardj{ 448918345e80e207568ce129eb6a419a511594d1b70sewardj int i, j; 449918345e80e207568ce129eb6a419a511594d1b70sewardj ULong arg1, arg2, res, xer; 450918345e80e207568ce129eb6a419a511594d1b70sewardj void(*fn)(ULong,ULong,ULong*,ULong*); 451918345e80e207568ce129eb6a419a511594d1b70sewardj for (i = 0; i < 64+10; i++) { /* shift */ 452918345e80e207568ce129eb6a419a511594d1b70sewardj for (j = 0; j < N_ARGS64; j++) { /* arg */ 453918345e80e207568ce129eb6a419a511594d1b70sewardj arg1 = args64[j]; 454918345e80e207568ce129eb6a419a511594d1b70sewardj arg2 = i; 455918345e80e207568ce129eb6a419a511594d1b70sewardj res = xer = 0; 456918345e80e207568ce129eb6a419a511594d1b70sewardj fn = fnV; 457918345e80e207568ce129eb6a419a511594d1b70sewardj fn( arg1, arg2, &res, &xer ); 458918345e80e207568ce129eb6a419a511594d1b70sewardj printf("%5s(0x%016llx, %2d) = 0x%016llx, %d\n", 459918345e80e207568ce129eb6a419a511594d1b70sewardj name, arg1, (int)arg2, res, (int)((xer >> 29 & 1))); 460918345e80e207568ce129eb6a419a511594d1b70sewardj } 461918345e80e207568ce129eb6a419a511594d1b70sewardj } 462918345e80e207568ce129eb6a419a511594d1b70sewardj} 463918345e80e207568ce129eb6a419a511594d1b70sewardj 464918345e80e207568ce129eb6a419a511594d1b70sewardjint main ( void ) 465918345e80e207568ce129eb6a419a511594d1b70sewardj{ 466918345e80e207568ce129eb6a419a511594d1b70sewardj do_unary("sradi", all_sradi, 64); 467918345e80e207568ce129eb6a419a511594d1b70sewardj do_unary("srawi", all_srawi, 32); 468918345e80e207568ce129eb6a419a511594d1b70sewardj do_binary("srad", do_srad); 469918345e80e207568ce129eb6a419a511594d1b70sewardj do_binary("sraw", do_sraw); 470918345e80e207568ce129eb6a419a511594d1b70sewardj do_binary("srd", do_srd); 471918345e80e207568ce129eb6a419a511594d1b70sewardj do_binary("srw", do_srw); 472918345e80e207568ce129eb6a419a511594d1b70sewardj do_binary("sld", do_sld); 473918345e80e207568ce129eb6a419a511594d1b70sewardj do_binary("slw", do_slw); 474918345e80e207568ce129eb6a419a511594d1b70sewardj return 0; 475918345e80e207568ce129eb6a419a511594d1b70sewardj} 476918345e80e207568ce129eb6a419a511594d1b70sewardj 477918345e80e207568ce129eb6a419a511594d1b70sewardj/* 478918345e80e207568ce129eb6a419a511594d1b70sewardj0 479918345e80e207568ce129eb6a419a511594d1b70sewardj1 480918345e80e207568ce129eb6a419a511594d1b70sewardj2 481918345e80e207568ce129eb6a419a511594d1b70sewardj3 482918345e80e207568ce129eb6a419a511594d1b70sewardj4 483918345e80e207568ce129eb6a419a511594d1b70sewardj5 484918345e80e207568ce129eb6a419a511594d1b70sewardj6 485918345e80e207568ce129eb6a419a511594d1b70sewardj7 486918345e80e207568ce129eb6a419a511594d1b70sewardj8 487918345e80e207568ce129eb6a419a511594d1b70sewardj9 488918345e80e207568ce129eb6a419a511594d1b70sewardj10 489918345e80e207568ce129eb6a419a511594d1b70sewardj11 490918345e80e207568ce129eb6a419a511594d1b70sewardj12 491918345e80e207568ce129eb6a419a511594d1b70sewardj13 492918345e80e207568ce129eb6a419a511594d1b70sewardj14 493918345e80e207568ce129eb6a419a511594d1b70sewardj15 494918345e80e207568ce129eb6a419a511594d1b70sewardj16 495918345e80e207568ce129eb6a419a511594d1b70sewardj17 496918345e80e207568ce129eb6a419a511594d1b70sewardj18 497918345e80e207568ce129eb6a419a511594d1b70sewardj19 498918345e80e207568ce129eb6a419a511594d1b70sewardj20 499918345e80e207568ce129eb6a419a511594d1b70sewardj21 500918345e80e207568ce129eb6a419a511594d1b70sewardj22 501918345e80e207568ce129eb6a419a511594d1b70sewardj23 502918345e80e207568ce129eb6a419a511594d1b70sewardj24 503918345e80e207568ce129eb6a419a511594d1b70sewardj25 504918345e80e207568ce129eb6a419a511594d1b70sewardj26 505918345e80e207568ce129eb6a419a511594d1b70sewardj27 506918345e80e207568ce129eb6a419a511594d1b70sewardj28 507918345e80e207568ce129eb6a419a511594d1b70sewardj29 508918345e80e207568ce129eb6a419a511594d1b70sewardj30 509918345e80e207568ce129eb6a419a511594d1b70sewardj31 510918345e80e207568ce129eb6a419a511594d1b70sewardj32 511918345e80e207568ce129eb6a419a511594d1b70sewardj33 512918345e80e207568ce129eb6a419a511594d1b70sewardj34 513918345e80e207568ce129eb6a419a511594d1b70sewardj35 514918345e80e207568ce129eb6a419a511594d1b70sewardj36 515918345e80e207568ce129eb6a419a511594d1b70sewardj37 516918345e80e207568ce129eb6a419a511594d1b70sewardj38 517918345e80e207568ce129eb6a419a511594d1b70sewardj39 518918345e80e207568ce129eb6a419a511594d1b70sewardj40 519918345e80e207568ce129eb6a419a511594d1b70sewardj41 520918345e80e207568ce129eb6a419a511594d1b70sewardj42 521918345e80e207568ce129eb6a419a511594d1b70sewardj43 522918345e80e207568ce129eb6a419a511594d1b70sewardj44 523918345e80e207568ce129eb6a419a511594d1b70sewardj45 524918345e80e207568ce129eb6a419a511594d1b70sewardj46 525918345e80e207568ce129eb6a419a511594d1b70sewardj47 526918345e80e207568ce129eb6a419a511594d1b70sewardj48 527918345e80e207568ce129eb6a419a511594d1b70sewardj49 528918345e80e207568ce129eb6a419a511594d1b70sewardj50 529918345e80e207568ce129eb6a419a511594d1b70sewardj51 530918345e80e207568ce129eb6a419a511594d1b70sewardj52 531918345e80e207568ce129eb6a419a511594d1b70sewardj53 532918345e80e207568ce129eb6a419a511594d1b70sewardj54 533918345e80e207568ce129eb6a419a511594d1b70sewardj55 534918345e80e207568ce129eb6a419a511594d1b70sewardj56 535918345e80e207568ce129eb6a419a511594d1b70sewardj57 536918345e80e207568ce129eb6a419a511594d1b70sewardj58 537918345e80e207568ce129eb6a419a511594d1b70sewardj59 538918345e80e207568ce129eb6a419a511594d1b70sewardj60 539918345e80e207568ce129eb6a419a511594d1b70sewardj61 540918345e80e207568ce129eb6a419a511594d1b70sewardj62 541918345e80e207568ce129eb6a419a511594d1b70sewardj63 542918345e80e207568ce129eb6a419a511594d1b70sewardj*/ 543918345e80e207568ce129eb6a419a511594d1b70sewardj 544