1*7f963623SChristoph Hellwig/* SPDX-License-Identifier: GPL-2.0 */ 2*7f963623SChristoph Hellwig/* 3*7f963623SChristoph Hellwig * High speed xor_block operation for RAID4/5 utilizing the 4*7f963623SChristoph Hellwig * UltraSparc Visual Instruction Set and Niagara store-init/twin-load. 5*7f963623SChristoph Hellwig * 6*7f963623SChristoph Hellwig * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz) 7*7f963623SChristoph Hellwig * Copyright (C) 2006 David S. Miller <davem@davemloft.net> 8*7f963623SChristoph Hellwig */ 9*7f963623SChristoph Hellwig 10*7f963623SChristoph Hellwig#include <linux/export.h> 11*7f963623SChristoph Hellwig#include <linux/linkage.h> 12*7f963623SChristoph Hellwig#include <asm/visasm.h> 13*7f963623SChristoph Hellwig#include <asm/asi.h> 14*7f963623SChristoph Hellwig#include <asm/dcu.h> 15*7f963623SChristoph Hellwig#include <asm/spitfire.h> 16*7f963623SChristoph Hellwig 17*7f963623SChristoph Hellwig/* 18*7f963623SChristoph Hellwig * Requirements: 19*7f963623SChristoph Hellwig * !(((long)dest | (long)sourceN) & (64 - 1)) && 20*7f963623SChristoph Hellwig * !(len & 127) && len >= 256 21*7f963623SChristoph Hellwig */ 22*7f963623SChristoph Hellwig .text 23*7f963623SChristoph Hellwig 24*7f963623SChristoph Hellwig /* VIS versions. */ 25*7f963623SChristoph HellwigENTRY(xor_vis_2) 26*7f963623SChristoph Hellwig rd %fprs, %o5 27*7f963623SChristoph Hellwig andcc %o5, FPRS_FEF|FPRS_DU, %g0 28*7f963623SChristoph Hellwig be,pt %icc, 0f 29*7f963623SChristoph Hellwig sethi %hi(VISenter), %g1 30*7f963623SChristoph Hellwig jmpl %g1 + %lo(VISenter), %g7 31*7f963623SChristoph Hellwig add %g7, 8, %g7 32*7f963623SChristoph Hellwig0: wr %g0, FPRS_FEF, %fprs 33*7f963623SChristoph Hellwig rd %asi, %g1 34*7f963623SChristoph Hellwig wr %g0, ASI_BLK_P, %asi 35*7f963623SChristoph Hellwig membar #LoadStore|#StoreLoad|#StoreStore 36*7f963623SChristoph Hellwig sub %o0, 128, %o0 37*7f963623SChristoph Hellwig ldda [%o1] %asi, %f0 38*7f963623SChristoph Hellwig ldda [%o2] %asi, %f16 39*7f963623SChristoph Hellwig 40*7f963623SChristoph Hellwig2: ldda [%o1 + 64] %asi, %f32 41*7f963623SChristoph Hellwig fxor %f0, %f16, %f16 42*7f963623SChristoph Hellwig fxor %f2, %f18, %f18 43*7f963623SChristoph Hellwig fxor %f4, %f20, %f20 44*7f963623SChristoph Hellwig fxor %f6, %f22, %f22 45*7f963623SChristoph Hellwig fxor %f8, %f24, %f24 46*7f963623SChristoph Hellwig fxor %f10, %f26, %f26 47*7f963623SChristoph Hellwig fxor %f12, %f28, %f28 48*7f963623SChristoph Hellwig fxor %f14, %f30, %f30 49*7f963623SChristoph Hellwig stda %f16, [%o1] %asi 50*7f963623SChristoph Hellwig ldda [%o2 + 64] %asi, %f48 51*7f963623SChristoph Hellwig ldda [%o1 + 128] %asi, %f0 52*7f963623SChristoph Hellwig fxor %f32, %f48, %f48 53*7f963623SChristoph Hellwig fxor %f34, %f50, %f50 54*7f963623SChristoph Hellwig add %o1, 128, %o1 55*7f963623SChristoph Hellwig fxor %f36, %f52, %f52 56*7f963623SChristoph Hellwig add %o2, 128, %o2 57*7f963623SChristoph Hellwig fxor %f38, %f54, %f54 58*7f963623SChristoph Hellwig subcc %o0, 128, %o0 59*7f963623SChristoph Hellwig fxor %f40, %f56, %f56 60*7f963623SChristoph Hellwig fxor %f42, %f58, %f58 61*7f963623SChristoph Hellwig fxor %f44, %f60, %f60 62*7f963623SChristoph Hellwig fxor %f46, %f62, %f62 63*7f963623SChristoph Hellwig stda %f48, [%o1 - 64] %asi 64*7f963623SChristoph Hellwig bne,pt %xcc, 2b 65*7f963623SChristoph Hellwig ldda [%o2] %asi, %f16 66*7f963623SChristoph Hellwig 67*7f963623SChristoph Hellwig ldda [%o1 + 64] %asi, %f32 68*7f963623SChristoph Hellwig fxor %f0, %f16, %f16 69*7f963623SChristoph Hellwig fxor %f2, %f18, %f18 70*7f963623SChristoph Hellwig fxor %f4, %f20, %f20 71*7f963623SChristoph Hellwig fxor %f6, %f22, %f22 72*7f963623SChristoph Hellwig fxor %f8, %f24, %f24 73*7f963623SChristoph Hellwig fxor %f10, %f26, %f26 74*7f963623SChristoph Hellwig fxor %f12, %f28, %f28 75*7f963623SChristoph Hellwig fxor %f14, %f30, %f30 76*7f963623SChristoph Hellwig stda %f16, [%o1] %asi 77*7f963623SChristoph Hellwig ldda [%o2 + 64] %asi, %f48 78*7f963623SChristoph Hellwig membar #Sync 79*7f963623SChristoph Hellwig fxor %f32, %f48, %f48 80*7f963623SChristoph Hellwig fxor %f34, %f50, %f50 81*7f963623SChristoph Hellwig fxor %f36, %f52, %f52 82*7f963623SChristoph Hellwig fxor %f38, %f54, %f54 83*7f963623SChristoph Hellwig fxor %f40, %f56, %f56 84*7f963623SChristoph Hellwig fxor %f42, %f58, %f58 85*7f963623SChristoph Hellwig fxor %f44, %f60, %f60 86*7f963623SChristoph Hellwig fxor %f46, %f62, %f62 87*7f963623SChristoph Hellwig stda %f48, [%o1 + 64] %asi 88*7f963623SChristoph Hellwig membar #Sync|#StoreStore|#StoreLoad 89*7f963623SChristoph Hellwig wr %g1, %g0, %asi 90*7f963623SChristoph Hellwig retl 91*7f963623SChristoph Hellwig wr %g0, 0, %fprs 92*7f963623SChristoph HellwigENDPROC(xor_vis_2) 93*7f963623SChristoph Hellwig 94*7f963623SChristoph HellwigENTRY(xor_vis_3) 95*7f963623SChristoph Hellwig rd %fprs, %o5 96*7f963623SChristoph Hellwig andcc %o5, FPRS_FEF|FPRS_DU, %g0 97*7f963623SChristoph Hellwig be,pt %icc, 0f 98*7f963623SChristoph Hellwig sethi %hi(VISenter), %g1 99*7f963623SChristoph Hellwig jmpl %g1 + %lo(VISenter), %g7 100*7f963623SChristoph Hellwig add %g7, 8, %g7 101*7f963623SChristoph Hellwig0: wr %g0, FPRS_FEF, %fprs 102*7f963623SChristoph Hellwig rd %asi, %g1 103*7f963623SChristoph Hellwig wr %g0, ASI_BLK_P, %asi 104*7f963623SChristoph Hellwig membar #LoadStore|#StoreLoad|#StoreStore 105*7f963623SChristoph Hellwig sub %o0, 64, %o0 106*7f963623SChristoph Hellwig ldda [%o1] %asi, %f0 107*7f963623SChristoph Hellwig ldda [%o2] %asi, %f16 108*7f963623SChristoph Hellwig 109*7f963623SChristoph Hellwig3: ldda [%o3] %asi, %f32 110*7f963623SChristoph Hellwig fxor %f0, %f16, %f48 111*7f963623SChristoph Hellwig fxor %f2, %f18, %f50 112*7f963623SChristoph Hellwig add %o1, 64, %o1 113*7f963623SChristoph Hellwig fxor %f4, %f20, %f52 114*7f963623SChristoph Hellwig fxor %f6, %f22, %f54 115*7f963623SChristoph Hellwig add %o2, 64, %o2 116*7f963623SChristoph Hellwig fxor %f8, %f24, %f56 117*7f963623SChristoph Hellwig fxor %f10, %f26, %f58 118*7f963623SChristoph Hellwig fxor %f12, %f28, %f60 119*7f963623SChristoph Hellwig fxor %f14, %f30, %f62 120*7f963623SChristoph Hellwig ldda [%o1] %asi, %f0 121*7f963623SChristoph Hellwig fxor %f48, %f32, %f48 122*7f963623SChristoph Hellwig fxor %f50, %f34, %f50 123*7f963623SChristoph Hellwig fxor %f52, %f36, %f52 124*7f963623SChristoph Hellwig fxor %f54, %f38, %f54 125*7f963623SChristoph Hellwig add %o3, 64, %o3 126*7f963623SChristoph Hellwig fxor %f56, %f40, %f56 127*7f963623SChristoph Hellwig fxor %f58, %f42, %f58 128*7f963623SChristoph Hellwig subcc %o0, 64, %o0 129*7f963623SChristoph Hellwig fxor %f60, %f44, %f60 130*7f963623SChristoph Hellwig fxor %f62, %f46, %f62 131*7f963623SChristoph Hellwig stda %f48, [%o1 - 64] %asi 132*7f963623SChristoph Hellwig bne,pt %xcc, 3b 133*7f963623SChristoph Hellwig ldda [%o2] %asi, %f16 134*7f963623SChristoph Hellwig 135*7f963623SChristoph Hellwig ldda [%o3] %asi, %f32 136*7f963623SChristoph Hellwig fxor %f0, %f16, %f48 137*7f963623SChristoph Hellwig fxor %f2, %f18, %f50 138*7f963623SChristoph Hellwig fxor %f4, %f20, %f52 139*7f963623SChristoph Hellwig fxor %f6, %f22, %f54 140*7f963623SChristoph Hellwig fxor %f8, %f24, %f56 141*7f963623SChristoph Hellwig fxor %f10, %f26, %f58 142*7f963623SChristoph Hellwig fxor %f12, %f28, %f60 143*7f963623SChristoph Hellwig fxor %f14, %f30, %f62 144*7f963623SChristoph Hellwig membar #Sync 145*7f963623SChristoph Hellwig fxor %f48, %f32, %f48 146*7f963623SChristoph Hellwig fxor %f50, %f34, %f50 147*7f963623SChristoph Hellwig fxor %f52, %f36, %f52 148*7f963623SChristoph Hellwig fxor %f54, %f38, %f54 149*7f963623SChristoph Hellwig fxor %f56, %f40, %f56 150*7f963623SChristoph Hellwig fxor %f58, %f42, %f58 151*7f963623SChristoph Hellwig fxor %f60, %f44, %f60 152*7f963623SChristoph Hellwig fxor %f62, %f46, %f62 153*7f963623SChristoph Hellwig stda %f48, [%o1] %asi 154*7f963623SChristoph Hellwig membar #Sync|#StoreStore|#StoreLoad 155*7f963623SChristoph Hellwig wr %g1, %g0, %asi 156*7f963623SChristoph Hellwig retl 157*7f963623SChristoph Hellwig wr %g0, 0, %fprs 158*7f963623SChristoph HellwigENDPROC(xor_vis_3) 159*7f963623SChristoph Hellwig 160*7f963623SChristoph HellwigENTRY(xor_vis_4) 161*7f963623SChristoph Hellwig rd %fprs, %o5 162*7f963623SChristoph Hellwig andcc %o5, FPRS_FEF|FPRS_DU, %g0 163*7f963623SChristoph Hellwig be,pt %icc, 0f 164*7f963623SChristoph Hellwig sethi %hi(VISenter), %g1 165*7f963623SChristoph Hellwig jmpl %g1 + %lo(VISenter), %g7 166*7f963623SChristoph Hellwig add %g7, 8, %g7 167*7f963623SChristoph Hellwig0: wr %g0, FPRS_FEF, %fprs 168*7f963623SChristoph Hellwig rd %asi, %g1 169*7f963623SChristoph Hellwig wr %g0, ASI_BLK_P, %asi 170*7f963623SChristoph Hellwig membar #LoadStore|#StoreLoad|#StoreStore 171*7f963623SChristoph Hellwig sub %o0, 64, %o0 172*7f963623SChristoph Hellwig ldda [%o1] %asi, %f0 173*7f963623SChristoph Hellwig ldda [%o2] %asi, %f16 174*7f963623SChristoph Hellwig 175*7f963623SChristoph Hellwig4: ldda [%o3] %asi, %f32 176*7f963623SChristoph Hellwig fxor %f0, %f16, %f16 177*7f963623SChristoph Hellwig fxor %f2, %f18, %f18 178*7f963623SChristoph Hellwig add %o1, 64, %o1 179*7f963623SChristoph Hellwig fxor %f4, %f20, %f20 180*7f963623SChristoph Hellwig fxor %f6, %f22, %f22 181*7f963623SChristoph Hellwig add %o2, 64, %o2 182*7f963623SChristoph Hellwig fxor %f8, %f24, %f24 183*7f963623SChristoph Hellwig fxor %f10, %f26, %f26 184*7f963623SChristoph Hellwig fxor %f12, %f28, %f28 185*7f963623SChristoph Hellwig fxor %f14, %f30, %f30 186*7f963623SChristoph Hellwig ldda [%o4] %asi, %f48 187*7f963623SChristoph Hellwig fxor %f16, %f32, %f32 188*7f963623SChristoph Hellwig fxor %f18, %f34, %f34 189*7f963623SChristoph Hellwig fxor %f20, %f36, %f36 190*7f963623SChristoph Hellwig fxor %f22, %f38, %f38 191*7f963623SChristoph Hellwig add %o3, 64, %o3 192*7f963623SChristoph Hellwig fxor %f24, %f40, %f40 193*7f963623SChristoph Hellwig fxor %f26, %f42, %f42 194*7f963623SChristoph Hellwig fxor %f28, %f44, %f44 195*7f963623SChristoph Hellwig fxor %f30, %f46, %f46 196*7f963623SChristoph Hellwig ldda [%o1] %asi, %f0 197*7f963623SChristoph Hellwig fxor %f32, %f48, %f48 198*7f963623SChristoph Hellwig fxor %f34, %f50, %f50 199*7f963623SChristoph Hellwig fxor %f36, %f52, %f52 200*7f963623SChristoph Hellwig add %o4, 64, %o4 201*7f963623SChristoph Hellwig fxor %f38, %f54, %f54 202*7f963623SChristoph Hellwig fxor %f40, %f56, %f56 203*7f963623SChristoph Hellwig fxor %f42, %f58, %f58 204*7f963623SChristoph Hellwig subcc %o0, 64, %o0 205*7f963623SChristoph Hellwig fxor %f44, %f60, %f60 206*7f963623SChristoph Hellwig fxor %f46, %f62, %f62 207*7f963623SChristoph Hellwig stda %f48, [%o1 - 64] %asi 208*7f963623SChristoph Hellwig bne,pt %xcc, 4b 209*7f963623SChristoph Hellwig ldda [%o2] %asi, %f16 210*7f963623SChristoph Hellwig 211*7f963623SChristoph Hellwig ldda [%o3] %asi, %f32 212*7f963623SChristoph Hellwig fxor %f0, %f16, %f16 213*7f963623SChristoph Hellwig fxor %f2, %f18, %f18 214*7f963623SChristoph Hellwig fxor %f4, %f20, %f20 215*7f963623SChristoph Hellwig fxor %f6, %f22, %f22 216*7f963623SChristoph Hellwig fxor %f8, %f24, %f24 217*7f963623SChristoph Hellwig fxor %f10, %f26, %f26 218*7f963623SChristoph Hellwig fxor %f12, %f28, %f28 219*7f963623SChristoph Hellwig fxor %f14, %f30, %f30 220*7f963623SChristoph Hellwig ldda [%o4] %asi, %f48 221*7f963623SChristoph Hellwig fxor %f16, %f32, %f32 222*7f963623SChristoph Hellwig fxor %f18, %f34, %f34 223*7f963623SChristoph Hellwig fxor %f20, %f36, %f36 224*7f963623SChristoph Hellwig fxor %f22, %f38, %f38 225*7f963623SChristoph Hellwig fxor %f24, %f40, %f40 226*7f963623SChristoph Hellwig fxor %f26, %f42, %f42 227*7f963623SChristoph Hellwig fxor %f28, %f44, %f44 228*7f963623SChristoph Hellwig fxor %f30, %f46, %f46 229*7f963623SChristoph Hellwig membar #Sync 230*7f963623SChristoph Hellwig fxor %f32, %f48, %f48 231*7f963623SChristoph Hellwig fxor %f34, %f50, %f50 232*7f963623SChristoph Hellwig fxor %f36, %f52, %f52 233*7f963623SChristoph Hellwig fxor %f38, %f54, %f54 234*7f963623SChristoph Hellwig fxor %f40, %f56, %f56 235*7f963623SChristoph Hellwig fxor %f42, %f58, %f58 236*7f963623SChristoph Hellwig fxor %f44, %f60, %f60 237*7f963623SChristoph Hellwig fxor %f46, %f62, %f62 238*7f963623SChristoph Hellwig stda %f48, [%o1] %asi 239*7f963623SChristoph Hellwig membar #Sync|#StoreStore|#StoreLoad 240*7f963623SChristoph Hellwig wr %g1, %g0, %asi 241*7f963623SChristoph Hellwig retl 242*7f963623SChristoph Hellwig wr %g0, 0, %fprs 243*7f963623SChristoph HellwigENDPROC(xor_vis_4) 244*7f963623SChristoph Hellwig 245*7f963623SChristoph HellwigENTRY(xor_vis_5) 246*7f963623SChristoph Hellwig save %sp, -192, %sp 247*7f963623SChristoph Hellwig rd %fprs, %o5 248*7f963623SChristoph Hellwig andcc %o5, FPRS_FEF|FPRS_DU, %g0 249*7f963623SChristoph Hellwig be,pt %icc, 0f 250*7f963623SChristoph Hellwig sethi %hi(VISenter), %g1 251*7f963623SChristoph Hellwig jmpl %g1 + %lo(VISenter), %g7 252*7f963623SChristoph Hellwig add %g7, 8, %g7 253*7f963623SChristoph Hellwig0: wr %g0, FPRS_FEF, %fprs 254*7f963623SChristoph Hellwig rd %asi, %g1 255*7f963623SChristoph Hellwig wr %g0, ASI_BLK_P, %asi 256*7f963623SChristoph Hellwig membar #LoadStore|#StoreLoad|#StoreStore 257*7f963623SChristoph Hellwig sub %i0, 64, %i0 258*7f963623SChristoph Hellwig ldda [%i1] %asi, %f0 259*7f963623SChristoph Hellwig ldda [%i2] %asi, %f16 260*7f963623SChristoph Hellwig 261*7f963623SChristoph Hellwig5: ldda [%i3] %asi, %f32 262*7f963623SChristoph Hellwig fxor %f0, %f16, %f48 263*7f963623SChristoph Hellwig fxor %f2, %f18, %f50 264*7f963623SChristoph Hellwig add %i1, 64, %i1 265*7f963623SChristoph Hellwig fxor %f4, %f20, %f52 266*7f963623SChristoph Hellwig fxor %f6, %f22, %f54 267*7f963623SChristoph Hellwig add %i2, 64, %i2 268*7f963623SChristoph Hellwig fxor %f8, %f24, %f56 269*7f963623SChristoph Hellwig fxor %f10, %f26, %f58 270*7f963623SChristoph Hellwig fxor %f12, %f28, %f60 271*7f963623SChristoph Hellwig fxor %f14, %f30, %f62 272*7f963623SChristoph Hellwig ldda [%i4] %asi, %f16 273*7f963623SChristoph Hellwig fxor %f48, %f32, %f48 274*7f963623SChristoph Hellwig fxor %f50, %f34, %f50 275*7f963623SChristoph Hellwig fxor %f52, %f36, %f52 276*7f963623SChristoph Hellwig fxor %f54, %f38, %f54 277*7f963623SChristoph Hellwig add %i3, 64, %i3 278*7f963623SChristoph Hellwig fxor %f56, %f40, %f56 279*7f963623SChristoph Hellwig fxor %f58, %f42, %f58 280*7f963623SChristoph Hellwig fxor %f60, %f44, %f60 281*7f963623SChristoph Hellwig fxor %f62, %f46, %f62 282*7f963623SChristoph Hellwig ldda [%i5] %asi, %f32 283*7f963623SChristoph Hellwig fxor %f48, %f16, %f48 284*7f963623SChristoph Hellwig fxor %f50, %f18, %f50 285*7f963623SChristoph Hellwig add %i4, 64, %i4 286*7f963623SChristoph Hellwig fxor %f52, %f20, %f52 287*7f963623SChristoph Hellwig fxor %f54, %f22, %f54 288*7f963623SChristoph Hellwig add %i5, 64, %i5 289*7f963623SChristoph Hellwig fxor %f56, %f24, %f56 290*7f963623SChristoph Hellwig fxor %f58, %f26, %f58 291*7f963623SChristoph Hellwig fxor %f60, %f28, %f60 292*7f963623SChristoph Hellwig fxor %f62, %f30, %f62 293*7f963623SChristoph Hellwig ldda [%i1] %asi, %f0 294*7f963623SChristoph Hellwig fxor %f48, %f32, %f48 295*7f963623SChristoph Hellwig fxor %f50, %f34, %f50 296*7f963623SChristoph Hellwig fxor %f52, %f36, %f52 297*7f963623SChristoph Hellwig fxor %f54, %f38, %f54 298*7f963623SChristoph Hellwig fxor %f56, %f40, %f56 299*7f963623SChristoph Hellwig fxor %f58, %f42, %f58 300*7f963623SChristoph Hellwig subcc %i0, 64, %i0 301*7f963623SChristoph Hellwig fxor %f60, %f44, %f60 302*7f963623SChristoph Hellwig fxor %f62, %f46, %f62 303*7f963623SChristoph Hellwig stda %f48, [%i1 - 64] %asi 304*7f963623SChristoph Hellwig bne,pt %xcc, 5b 305*7f963623SChristoph Hellwig ldda [%i2] %asi, %f16 306*7f963623SChristoph Hellwig 307*7f963623SChristoph Hellwig ldda [%i3] %asi, %f32 308*7f963623SChristoph Hellwig fxor %f0, %f16, %f48 309*7f963623SChristoph Hellwig fxor %f2, %f18, %f50 310*7f963623SChristoph Hellwig fxor %f4, %f20, %f52 311*7f963623SChristoph Hellwig fxor %f6, %f22, %f54 312*7f963623SChristoph Hellwig fxor %f8, %f24, %f56 313*7f963623SChristoph Hellwig fxor %f10, %f26, %f58 314*7f963623SChristoph Hellwig fxor %f12, %f28, %f60 315*7f963623SChristoph Hellwig fxor %f14, %f30, %f62 316*7f963623SChristoph Hellwig ldda [%i4] %asi, %f16 317*7f963623SChristoph Hellwig fxor %f48, %f32, %f48 318*7f963623SChristoph Hellwig fxor %f50, %f34, %f50 319*7f963623SChristoph Hellwig fxor %f52, %f36, %f52 320*7f963623SChristoph Hellwig fxor %f54, %f38, %f54 321*7f963623SChristoph Hellwig fxor %f56, %f40, %f56 322*7f963623SChristoph Hellwig fxor %f58, %f42, %f58 323*7f963623SChristoph Hellwig fxor %f60, %f44, %f60 324*7f963623SChristoph Hellwig fxor %f62, %f46, %f62 325*7f963623SChristoph Hellwig ldda [%i5] %asi, %f32 326*7f963623SChristoph Hellwig fxor %f48, %f16, %f48 327*7f963623SChristoph Hellwig fxor %f50, %f18, %f50 328*7f963623SChristoph Hellwig fxor %f52, %f20, %f52 329*7f963623SChristoph Hellwig fxor %f54, %f22, %f54 330*7f963623SChristoph Hellwig fxor %f56, %f24, %f56 331*7f963623SChristoph Hellwig fxor %f58, %f26, %f58 332*7f963623SChristoph Hellwig fxor %f60, %f28, %f60 333*7f963623SChristoph Hellwig fxor %f62, %f30, %f62 334*7f963623SChristoph Hellwig membar #Sync 335*7f963623SChristoph Hellwig fxor %f48, %f32, %f48 336*7f963623SChristoph Hellwig fxor %f50, %f34, %f50 337*7f963623SChristoph Hellwig fxor %f52, %f36, %f52 338*7f963623SChristoph Hellwig fxor %f54, %f38, %f54 339*7f963623SChristoph Hellwig fxor %f56, %f40, %f56 340*7f963623SChristoph Hellwig fxor %f58, %f42, %f58 341*7f963623SChristoph Hellwig fxor %f60, %f44, %f60 342*7f963623SChristoph Hellwig fxor %f62, %f46, %f62 343*7f963623SChristoph Hellwig stda %f48, [%i1] %asi 344*7f963623SChristoph Hellwig membar #Sync|#StoreStore|#StoreLoad 345*7f963623SChristoph Hellwig wr %g1, %g0, %asi 346*7f963623SChristoph Hellwig wr %g0, 0, %fprs 347*7f963623SChristoph Hellwig ret 348*7f963623SChristoph Hellwig restore 349*7f963623SChristoph HellwigENDPROC(xor_vis_5) 350*7f963623SChristoph Hellwig 351*7f963623SChristoph Hellwig /* Niagara versions. */ 352*7f963623SChristoph HellwigENTRY(xor_niagara_2) /* %o0=bytes, %o1=dest, %o2=src */ 353*7f963623SChristoph Hellwig save %sp, -192, %sp 354*7f963623SChristoph Hellwig prefetch [%i1], #n_writes 355*7f963623SChristoph Hellwig prefetch [%i2], #one_read 356*7f963623SChristoph Hellwig rd %asi, %g7 357*7f963623SChristoph Hellwig wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 358*7f963623SChristoph Hellwig srlx %i0, 6, %g1 359*7f963623SChristoph Hellwig mov %i1, %i0 360*7f963623SChristoph Hellwig mov %i2, %i1 361*7f963623SChristoph Hellwig1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src + 0x00 */ 362*7f963623SChristoph Hellwig ldda [%i1 + 0x10] %asi, %i4 /* %i4/%i5 = src + 0x10 */ 363*7f963623SChristoph Hellwig ldda [%i1 + 0x20] %asi, %g2 /* %g2/%g3 = src + 0x20 */ 364*7f963623SChristoph Hellwig ldda [%i1 + 0x30] %asi, %l0 /* %l0/%l1 = src + 0x30 */ 365*7f963623SChristoph Hellwig prefetch [%i1 + 0x40], #one_read 366*7f963623SChristoph Hellwig ldda [%i0 + 0x00] %asi, %o0 /* %o0/%o1 = dest + 0x00 */ 367*7f963623SChristoph Hellwig ldda [%i0 + 0x10] %asi, %o2 /* %o2/%o3 = dest + 0x10 */ 368*7f963623SChristoph Hellwig ldda [%i0 + 0x20] %asi, %o4 /* %o4/%o5 = dest + 0x20 */ 369*7f963623SChristoph Hellwig ldda [%i0 + 0x30] %asi, %l2 /* %l2/%l3 = dest + 0x30 */ 370*7f963623SChristoph Hellwig prefetch [%i0 + 0x40], #n_writes 371*7f963623SChristoph Hellwig xor %o0, %i2, %o0 372*7f963623SChristoph Hellwig xor %o1, %i3, %o1 373*7f963623SChristoph Hellwig stxa %o0, [%i0 + 0x00] %asi 374*7f963623SChristoph Hellwig stxa %o1, [%i0 + 0x08] %asi 375*7f963623SChristoph Hellwig xor %o2, %i4, %o2 376*7f963623SChristoph Hellwig xor %o3, %i5, %o3 377*7f963623SChristoph Hellwig stxa %o2, [%i0 + 0x10] %asi 378*7f963623SChristoph Hellwig stxa %o3, [%i0 + 0x18] %asi 379*7f963623SChristoph Hellwig xor %o4, %g2, %o4 380*7f963623SChristoph Hellwig xor %o5, %g3, %o5 381*7f963623SChristoph Hellwig stxa %o4, [%i0 + 0x20] %asi 382*7f963623SChristoph Hellwig stxa %o5, [%i0 + 0x28] %asi 383*7f963623SChristoph Hellwig xor %l2, %l0, %l2 384*7f963623SChristoph Hellwig xor %l3, %l1, %l3 385*7f963623SChristoph Hellwig stxa %l2, [%i0 + 0x30] %asi 386*7f963623SChristoph Hellwig stxa %l3, [%i0 + 0x38] %asi 387*7f963623SChristoph Hellwig add %i0, 0x40, %i0 388*7f963623SChristoph Hellwig subcc %g1, 1, %g1 389*7f963623SChristoph Hellwig bne,pt %xcc, 1b 390*7f963623SChristoph Hellwig add %i1, 0x40, %i1 391*7f963623SChristoph Hellwig membar #Sync 392*7f963623SChristoph Hellwig wr %g7, 0x0, %asi 393*7f963623SChristoph Hellwig ret 394*7f963623SChristoph Hellwig restore 395*7f963623SChristoph HellwigENDPROC(xor_niagara_2) 396*7f963623SChristoph Hellwig 397*7f963623SChristoph HellwigENTRY(xor_niagara_3) /* %o0=bytes, %o1=dest, %o2=src1, %o3=src2 */ 398*7f963623SChristoph Hellwig save %sp, -192, %sp 399*7f963623SChristoph Hellwig prefetch [%i1], #n_writes 400*7f963623SChristoph Hellwig prefetch [%i2], #one_read 401*7f963623SChristoph Hellwig prefetch [%i3], #one_read 402*7f963623SChristoph Hellwig rd %asi, %g7 403*7f963623SChristoph Hellwig wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 404*7f963623SChristoph Hellwig srlx %i0, 6, %g1 405*7f963623SChristoph Hellwig mov %i1, %i0 406*7f963623SChristoph Hellwig mov %i2, %i1 407*7f963623SChristoph Hellwig mov %i3, %l7 408*7f963623SChristoph Hellwig1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src1 + 0x00 */ 409*7f963623SChristoph Hellwig ldda [%i1 + 0x10] %asi, %i4 /* %i4/%i5 = src1 + 0x10 */ 410*7f963623SChristoph Hellwig ldda [%l7 + 0x00] %asi, %g2 /* %g2/%g3 = src2 + 0x00 */ 411*7f963623SChristoph Hellwig ldda [%l7 + 0x10] %asi, %l0 /* %l0/%l1 = src2 + 0x10 */ 412*7f963623SChristoph Hellwig ldda [%i0 + 0x00] %asi, %o0 /* %o0/%o1 = dest + 0x00 */ 413*7f963623SChristoph Hellwig ldda [%i0 + 0x10] %asi, %o2 /* %o2/%o3 = dest + 0x10 */ 414*7f963623SChristoph Hellwig xor %g2, %i2, %g2 415*7f963623SChristoph Hellwig xor %g3, %i3, %g3 416*7f963623SChristoph Hellwig xor %o0, %g2, %o0 417*7f963623SChristoph Hellwig xor %o1, %g3, %o1 418*7f963623SChristoph Hellwig stxa %o0, [%i0 + 0x00] %asi 419*7f963623SChristoph Hellwig stxa %o1, [%i0 + 0x08] %asi 420*7f963623SChristoph Hellwig ldda [%i1 + 0x20] %asi, %i2 /* %i2/%i3 = src1 + 0x20 */ 421*7f963623SChristoph Hellwig ldda [%l7 + 0x20] %asi, %g2 /* %g2/%g3 = src2 + 0x20 */ 422*7f963623SChristoph Hellwig ldda [%i0 + 0x20] %asi, %o0 /* %o0/%o1 = dest + 0x20 */ 423*7f963623SChristoph Hellwig xor %l0, %i4, %l0 424*7f963623SChristoph Hellwig xor %l1, %i5, %l1 425*7f963623SChristoph Hellwig xor %o2, %l0, %o2 426*7f963623SChristoph Hellwig xor %o3, %l1, %o3 427*7f963623SChristoph Hellwig stxa %o2, [%i0 + 0x10] %asi 428*7f963623SChristoph Hellwig stxa %o3, [%i0 + 0x18] %asi 429*7f963623SChristoph Hellwig ldda [%i1 + 0x30] %asi, %i4 /* %i4/%i5 = src1 + 0x30 */ 430*7f963623SChristoph Hellwig ldda [%l7 + 0x30] %asi, %l0 /* %l0/%l1 = src2 + 0x30 */ 431*7f963623SChristoph Hellwig ldda [%i0 + 0x30] %asi, %o2 /* %o2/%o3 = dest + 0x30 */ 432*7f963623SChristoph Hellwig prefetch [%i1 + 0x40], #one_read 433*7f963623SChristoph Hellwig prefetch [%l7 + 0x40], #one_read 434*7f963623SChristoph Hellwig prefetch [%i0 + 0x40], #n_writes 435*7f963623SChristoph Hellwig xor %g2, %i2, %g2 436*7f963623SChristoph Hellwig xor %g3, %i3, %g3 437*7f963623SChristoph Hellwig xor %o0, %g2, %o0 438*7f963623SChristoph Hellwig xor %o1, %g3, %o1 439*7f963623SChristoph Hellwig stxa %o0, [%i0 + 0x20] %asi 440*7f963623SChristoph Hellwig stxa %o1, [%i0 + 0x28] %asi 441*7f963623SChristoph Hellwig xor %l0, %i4, %l0 442*7f963623SChristoph Hellwig xor %l1, %i5, %l1 443*7f963623SChristoph Hellwig xor %o2, %l0, %o2 444*7f963623SChristoph Hellwig xor %o3, %l1, %o3 445*7f963623SChristoph Hellwig stxa %o2, [%i0 + 0x30] %asi 446*7f963623SChristoph Hellwig stxa %o3, [%i0 + 0x38] %asi 447*7f963623SChristoph Hellwig add %i0, 0x40, %i0 448*7f963623SChristoph Hellwig add %i1, 0x40, %i1 449*7f963623SChristoph Hellwig subcc %g1, 1, %g1 450*7f963623SChristoph Hellwig bne,pt %xcc, 1b 451*7f963623SChristoph Hellwig add %l7, 0x40, %l7 452*7f963623SChristoph Hellwig membar #Sync 453*7f963623SChristoph Hellwig wr %g7, 0x0, %asi 454*7f963623SChristoph Hellwig ret 455*7f963623SChristoph Hellwig restore 456*7f963623SChristoph HellwigENDPROC(xor_niagara_3) 457*7f963623SChristoph Hellwig 458*7f963623SChristoph HellwigENTRY(xor_niagara_4) /* %o0=bytes, %o1=dest, %o2=src1, %o3=src2, %o4=src3 */ 459*7f963623SChristoph Hellwig save %sp, -192, %sp 460*7f963623SChristoph Hellwig prefetch [%i1], #n_writes 461*7f963623SChristoph Hellwig prefetch [%i2], #one_read 462*7f963623SChristoph Hellwig prefetch [%i3], #one_read 463*7f963623SChristoph Hellwig prefetch [%i4], #one_read 464*7f963623SChristoph Hellwig rd %asi, %g7 465*7f963623SChristoph Hellwig wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 466*7f963623SChristoph Hellwig srlx %i0, 6, %g1 467*7f963623SChristoph Hellwig mov %i1, %i0 468*7f963623SChristoph Hellwig mov %i2, %i1 469*7f963623SChristoph Hellwig mov %i3, %l7 470*7f963623SChristoph Hellwig mov %i4, %l6 471*7f963623SChristoph Hellwig1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src1 + 0x00 */ 472*7f963623SChristoph Hellwig ldda [%l7 + 0x00] %asi, %i4 /* %i4/%i5 = src2 + 0x00 */ 473*7f963623SChristoph Hellwig ldda [%l6 + 0x00] %asi, %g2 /* %g2/%g3 = src3 + 0x00 */ 474*7f963623SChristoph Hellwig ldda [%i0 + 0x00] %asi, %l0 /* %l0/%l1 = dest + 0x00 */ 475*7f963623SChristoph Hellwig xor %i4, %i2, %i4 476*7f963623SChristoph Hellwig xor %i5, %i3, %i5 477*7f963623SChristoph Hellwig ldda [%i1 + 0x10] %asi, %i2 /* %i2/%i3 = src1 + 0x10 */ 478*7f963623SChristoph Hellwig xor %g2, %i4, %g2 479*7f963623SChristoph Hellwig xor %g3, %i5, %g3 480*7f963623SChristoph Hellwig ldda [%l7 + 0x10] %asi, %i4 /* %i4/%i5 = src2 + 0x10 */ 481*7f963623SChristoph Hellwig xor %l0, %g2, %l0 482*7f963623SChristoph Hellwig xor %l1, %g3, %l1 483*7f963623SChristoph Hellwig stxa %l0, [%i0 + 0x00] %asi 484*7f963623SChristoph Hellwig stxa %l1, [%i0 + 0x08] %asi 485*7f963623SChristoph Hellwig ldda [%l6 + 0x10] %asi, %g2 /* %g2/%g3 = src3 + 0x10 */ 486*7f963623SChristoph Hellwig ldda [%i0 + 0x10] %asi, %l0 /* %l0/%l1 = dest + 0x10 */ 487*7f963623SChristoph Hellwig 488*7f963623SChristoph Hellwig xor %i4, %i2, %i4 489*7f963623SChristoph Hellwig xor %i5, %i3, %i5 490*7f963623SChristoph Hellwig ldda [%i1 + 0x20] %asi, %i2 /* %i2/%i3 = src1 + 0x20 */ 491*7f963623SChristoph Hellwig xor %g2, %i4, %g2 492*7f963623SChristoph Hellwig xor %g3, %i5, %g3 493*7f963623SChristoph Hellwig ldda [%l7 + 0x20] %asi, %i4 /* %i4/%i5 = src2 + 0x20 */ 494*7f963623SChristoph Hellwig xor %l0, %g2, %l0 495*7f963623SChristoph Hellwig xor %l1, %g3, %l1 496*7f963623SChristoph Hellwig stxa %l0, [%i0 + 0x10] %asi 497*7f963623SChristoph Hellwig stxa %l1, [%i0 + 0x18] %asi 498*7f963623SChristoph Hellwig ldda [%l6 + 0x20] %asi, %g2 /* %g2/%g3 = src3 + 0x20 */ 499*7f963623SChristoph Hellwig ldda [%i0 + 0x20] %asi, %l0 /* %l0/%l1 = dest + 0x20 */ 500*7f963623SChristoph Hellwig 501*7f963623SChristoph Hellwig xor %i4, %i2, %i4 502*7f963623SChristoph Hellwig xor %i5, %i3, %i5 503*7f963623SChristoph Hellwig ldda [%i1 + 0x30] %asi, %i2 /* %i2/%i3 = src1 + 0x30 */ 504*7f963623SChristoph Hellwig xor %g2, %i4, %g2 505*7f963623SChristoph Hellwig xor %g3, %i5, %g3 506*7f963623SChristoph Hellwig ldda [%l7 + 0x30] %asi, %i4 /* %i4/%i5 = src2 + 0x30 */ 507*7f963623SChristoph Hellwig xor %l0, %g2, %l0 508*7f963623SChristoph Hellwig xor %l1, %g3, %l1 509*7f963623SChristoph Hellwig stxa %l0, [%i0 + 0x20] %asi 510*7f963623SChristoph Hellwig stxa %l1, [%i0 + 0x28] %asi 511*7f963623SChristoph Hellwig ldda [%l6 + 0x30] %asi, %g2 /* %g2/%g3 = src3 + 0x30 */ 512*7f963623SChristoph Hellwig ldda [%i0 + 0x30] %asi, %l0 /* %l0/%l1 = dest + 0x30 */ 513*7f963623SChristoph Hellwig 514*7f963623SChristoph Hellwig prefetch [%i1 + 0x40], #one_read 515*7f963623SChristoph Hellwig prefetch [%l7 + 0x40], #one_read 516*7f963623SChristoph Hellwig prefetch [%l6 + 0x40], #one_read 517*7f963623SChristoph Hellwig prefetch [%i0 + 0x40], #n_writes 518*7f963623SChristoph Hellwig 519*7f963623SChristoph Hellwig xor %i4, %i2, %i4 520*7f963623SChristoph Hellwig xor %i5, %i3, %i5 521*7f963623SChristoph Hellwig xor %g2, %i4, %g2 522*7f963623SChristoph Hellwig xor %g3, %i5, %g3 523*7f963623SChristoph Hellwig xor %l0, %g2, %l0 524*7f963623SChristoph Hellwig xor %l1, %g3, %l1 525*7f963623SChristoph Hellwig stxa %l0, [%i0 + 0x30] %asi 526*7f963623SChristoph Hellwig stxa %l1, [%i0 + 0x38] %asi 527*7f963623SChristoph Hellwig 528*7f963623SChristoph Hellwig add %i0, 0x40, %i0 529*7f963623SChristoph Hellwig add %i1, 0x40, %i1 530*7f963623SChristoph Hellwig add %l7, 0x40, %l7 531*7f963623SChristoph Hellwig subcc %g1, 1, %g1 532*7f963623SChristoph Hellwig bne,pt %xcc, 1b 533*7f963623SChristoph Hellwig add %l6, 0x40, %l6 534*7f963623SChristoph Hellwig membar #Sync 535*7f963623SChristoph Hellwig wr %g7, 0x0, %asi 536*7f963623SChristoph Hellwig ret 537*7f963623SChristoph Hellwig restore 538*7f963623SChristoph HellwigENDPROC(xor_niagara_4) 539*7f963623SChristoph Hellwig 540*7f963623SChristoph HellwigENTRY(xor_niagara_5) /* %o0=bytes, %o1=dest, %o2=src1, %o3=src2, %o4=src3, %o5=src4 */ 541*7f963623SChristoph Hellwig save %sp, -192, %sp 542*7f963623SChristoph Hellwig prefetch [%i1], #n_writes 543*7f963623SChristoph Hellwig prefetch [%i2], #one_read 544*7f963623SChristoph Hellwig prefetch [%i3], #one_read 545*7f963623SChristoph Hellwig prefetch [%i4], #one_read 546*7f963623SChristoph Hellwig prefetch [%i5], #one_read 547*7f963623SChristoph Hellwig rd %asi, %g7 548*7f963623SChristoph Hellwig wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 549*7f963623SChristoph Hellwig srlx %i0, 6, %g1 550*7f963623SChristoph Hellwig mov %i1, %i0 551*7f963623SChristoph Hellwig mov %i2, %i1 552*7f963623SChristoph Hellwig mov %i3, %l7 553*7f963623SChristoph Hellwig mov %i4, %l6 554*7f963623SChristoph Hellwig mov %i5, %l5 555*7f963623SChristoph Hellwig1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src1 + 0x00 */ 556*7f963623SChristoph Hellwig ldda [%l7 + 0x00] %asi, %i4 /* %i4/%i5 = src2 + 0x00 */ 557*7f963623SChristoph Hellwig ldda [%l6 + 0x00] %asi, %g2 /* %g2/%g3 = src3 + 0x00 */ 558*7f963623SChristoph Hellwig ldda [%l5 + 0x00] %asi, %l0 /* %l0/%l1 = src4 + 0x00 */ 559*7f963623SChristoph Hellwig ldda [%i0 + 0x00] %asi, %l2 /* %l2/%l3 = dest + 0x00 */ 560*7f963623SChristoph Hellwig xor %i4, %i2, %i4 561*7f963623SChristoph Hellwig xor %i5, %i3, %i5 562*7f963623SChristoph Hellwig ldda [%i1 + 0x10] %asi, %i2 /* %i2/%i3 = src1 + 0x10 */ 563*7f963623SChristoph Hellwig xor %g2, %i4, %g2 564*7f963623SChristoph Hellwig xor %g3, %i5, %g3 565*7f963623SChristoph Hellwig ldda [%l7 + 0x10] %asi, %i4 /* %i4/%i5 = src2 + 0x10 */ 566*7f963623SChristoph Hellwig xor %l0, %g2, %l0 567*7f963623SChristoph Hellwig xor %l1, %g3, %l1 568*7f963623SChristoph Hellwig ldda [%l6 + 0x10] %asi, %g2 /* %g2/%g3 = src3 + 0x10 */ 569*7f963623SChristoph Hellwig xor %l2, %l0, %l2 570*7f963623SChristoph Hellwig xor %l3, %l1, %l3 571*7f963623SChristoph Hellwig stxa %l2, [%i0 + 0x00] %asi 572*7f963623SChristoph Hellwig stxa %l3, [%i0 + 0x08] %asi 573*7f963623SChristoph Hellwig ldda [%l5 + 0x10] %asi, %l0 /* %l0/%l1 = src4 + 0x10 */ 574*7f963623SChristoph Hellwig ldda [%i0 + 0x10] %asi, %l2 /* %l2/%l3 = dest + 0x10 */ 575*7f963623SChristoph Hellwig 576*7f963623SChristoph Hellwig xor %i4, %i2, %i4 577*7f963623SChristoph Hellwig xor %i5, %i3, %i5 578*7f963623SChristoph Hellwig ldda [%i1 + 0x20] %asi, %i2 /* %i2/%i3 = src1 + 0x20 */ 579*7f963623SChristoph Hellwig xor %g2, %i4, %g2 580*7f963623SChristoph Hellwig xor %g3, %i5, %g3 581*7f963623SChristoph Hellwig ldda [%l7 + 0x20] %asi, %i4 /* %i4/%i5 = src2 + 0x20 */ 582*7f963623SChristoph Hellwig xor %l0, %g2, %l0 583*7f963623SChristoph Hellwig xor %l1, %g3, %l1 584*7f963623SChristoph Hellwig ldda [%l6 + 0x20] %asi, %g2 /* %g2/%g3 = src3 + 0x20 */ 585*7f963623SChristoph Hellwig xor %l2, %l0, %l2 586*7f963623SChristoph Hellwig xor %l3, %l1, %l3 587*7f963623SChristoph Hellwig stxa %l2, [%i0 + 0x10] %asi 588*7f963623SChristoph Hellwig stxa %l3, [%i0 + 0x18] %asi 589*7f963623SChristoph Hellwig ldda [%l5 + 0x20] %asi, %l0 /* %l0/%l1 = src4 + 0x20 */ 590*7f963623SChristoph Hellwig ldda [%i0 + 0x20] %asi, %l2 /* %l2/%l3 = dest + 0x20 */ 591*7f963623SChristoph Hellwig 592*7f963623SChristoph Hellwig xor %i4, %i2, %i4 593*7f963623SChristoph Hellwig xor %i5, %i3, %i5 594*7f963623SChristoph Hellwig ldda [%i1 + 0x30] %asi, %i2 /* %i2/%i3 = src1 + 0x30 */ 595*7f963623SChristoph Hellwig xor %g2, %i4, %g2 596*7f963623SChristoph Hellwig xor %g3, %i5, %g3 597*7f963623SChristoph Hellwig ldda [%l7 + 0x30] %asi, %i4 /* %i4/%i5 = src2 + 0x30 */ 598*7f963623SChristoph Hellwig xor %l0, %g2, %l0 599*7f963623SChristoph Hellwig xor %l1, %g3, %l1 600*7f963623SChristoph Hellwig ldda [%l6 + 0x30] %asi, %g2 /* %g2/%g3 = src3 + 0x30 */ 601*7f963623SChristoph Hellwig xor %l2, %l0, %l2 602*7f963623SChristoph Hellwig xor %l3, %l1, %l3 603*7f963623SChristoph Hellwig stxa %l2, [%i0 + 0x20] %asi 604*7f963623SChristoph Hellwig stxa %l3, [%i0 + 0x28] %asi 605*7f963623SChristoph Hellwig ldda [%l5 + 0x30] %asi, %l0 /* %l0/%l1 = src4 + 0x30 */ 606*7f963623SChristoph Hellwig ldda [%i0 + 0x30] %asi, %l2 /* %l2/%l3 = dest + 0x30 */ 607*7f963623SChristoph Hellwig 608*7f963623SChristoph Hellwig prefetch [%i1 + 0x40], #one_read 609*7f963623SChristoph Hellwig prefetch [%l7 + 0x40], #one_read 610*7f963623SChristoph Hellwig prefetch [%l6 + 0x40], #one_read 611*7f963623SChristoph Hellwig prefetch [%l5 + 0x40], #one_read 612*7f963623SChristoph Hellwig prefetch [%i0 + 0x40], #n_writes 613*7f963623SChristoph Hellwig 614*7f963623SChristoph Hellwig xor %i4, %i2, %i4 615*7f963623SChristoph Hellwig xor %i5, %i3, %i5 616*7f963623SChristoph Hellwig xor %g2, %i4, %g2 617*7f963623SChristoph Hellwig xor %g3, %i5, %g3 618*7f963623SChristoph Hellwig xor %l0, %g2, %l0 619*7f963623SChristoph Hellwig xor %l1, %g3, %l1 620*7f963623SChristoph Hellwig xor %l2, %l0, %l2 621*7f963623SChristoph Hellwig xor %l3, %l1, %l3 622*7f963623SChristoph Hellwig stxa %l2, [%i0 + 0x30] %asi 623*7f963623SChristoph Hellwig stxa %l3, [%i0 + 0x38] %asi 624*7f963623SChristoph Hellwig 625*7f963623SChristoph Hellwig add %i0, 0x40, %i0 626*7f963623SChristoph Hellwig add %i1, 0x40, %i1 627*7f963623SChristoph Hellwig add %l7, 0x40, %l7 628*7f963623SChristoph Hellwig add %l6, 0x40, %l6 629*7f963623SChristoph Hellwig subcc %g1, 1, %g1 630*7f963623SChristoph Hellwig bne,pt %xcc, 1b 631*7f963623SChristoph Hellwig add %l5, 0x40, %l5 632*7f963623SChristoph Hellwig membar #Sync 633*7f963623SChristoph Hellwig wr %g7, 0x0, %asi 634*7f963623SChristoph Hellwig ret 635*7f963623SChristoph Hellwig restore 636*7f963623SChristoph HellwigENDPROC(xor_niagara_5) 637