1 #include "s390x_arch.h" 2 .text 3 .globl poly1305_init 4 .type poly1305_init,@function 5 .align 16 6 poly1305_init: 7 lghi %r0,0 8 lghi %r1,-1 9 stg %r0,0(%r2) 10 stg %r0,8(%r2) 11 stg %r0,16(%r2) 12 st %r0,24(%r2) 13 lgr %r5,%r2 14 lghi %r2,0 15 clgr %r3,%r0 16 je .Lno_key 17 lrvg %r2,0(%r3) 18 lrvg %r3,8(%r3) 19 nihl %r1,65472 20 srlg %r0,%r1,4 21 srlg %r1,%r1,4 22 nill %r1,65532 23 ngr %r2,%r0 24 ngr %r3,%r1 25 stmg %r2,%r3,32(%r5) 26 larl %r1,OPENSSL_s390xcap_P 27 lg %r0,16(%r1) 28 srlg %r0,%r0,62 29 nill %r0,1 30 lcgr %r0,%r0 31 larl %r1,.Lpoly1305_blocks 32 larl %r2,.Lpoly1305_blocks_vx 33 larl %r3,.Lpoly1305_emit 34 xgr %r2,%r1 35 ngr %r2,%r0 36 xgr %r2,%r1 37 stmg %r2,%r3,0(%r4) 38 lghi %r2,1 39 .Lno_key: 40 br %r14 41 .size poly1305_init,.-poly1305_init 42 .globl poly1305_blocks 43 .type poly1305_blocks,@function 44 .align 16 45 poly1305_blocks: 46 .Lpoly1305_blocks: 47 ltgr %r0,%r4 48 jz .Lno_data 49 stmg %r6,%r14,6*8(%r15) 50 lg %r11,0(%r2) 51 lg %r13,8(%r2) 52 lg %r14,16(%r2) 53 .Lpoly1305_blocks_entry: 54 srlg %r4,%r4,4 55 llgfr %r5,%r5 56 lg %r0,32(%r2) 57 lg %r1,40(%r2) 58 stg %r2,2*8(%r15) 59 srlg %r2,%r1,2 60 algr %r2,%r1 61 j .Loop 62 .align 16 63 .Loop: 64 lrvg %r7,0(%r3) 65 lrvg %r9,8(%r3) 66 la %r3,16(%r3) 67 algr %r7,%r11 68 alcgr %r9,%r13 69 alcgr %r14,%r5 70 lgr %r11,%r7 71 mlgr %r6,%r0 72 lgr %r13,%r9 73 mlgr %r8,%r2 74 mlgr %r10,%r1 75 mlgr %r12,%r0 76 algr %r7,%r9 77 lgr %r9,%r14 78 alcgr %r6,%r8 79 lghi %r8,0 80 algr %r13,%r11 81 alcgr %r12,%r10 82 msgr %r9,%r2 83 msgr %r14,%r0 84 algr %r13,%r9 85 alcgr %r12,%r8 86 algr %r13,%r6 87 alcgr %r14,%r12 88 lghi %r11,-4 89 ngr %r11,%r14 90 srlg %r10,%r14,2 91 algr %r11,%r10 92 lghi %r12,3 93 ngr %r14,%r12 94 algr %r11,%r7 95 alcgr %r13,%r8 96 alcgr %r14,%r8 97 brctg %r4,.Loop 98 lg %r2,2*8(%r15) 99 stg %r11,0(%r2) 100 stg %r13,8(%r2) 101 stg %r14,16(%r2) 102 lmg %r6,%r14,6*8(%r15) 103 .Lno_data: 104 br %r14 105 .size poly1305_blocks,.-poly1305_blocks 106 .type poly1305_blocks_vx,@function 107 .align 16 108 poly1305_blocks_vx: 109 .Lpoly1305_blocks_vx: 110 .word 0xc24e,000000,0x0080 # clgfi %r4,128 111 jhe __poly1305_blocks_vx 112 stmg %r6,%r14,6*8(%r15) 113 lg %r10,0(%r2) 114 lg %r12,8(%r2) 115 lg %r9,16(%r2) 116 llgfr %r0,%r10 117 srlg %r11,%r10,32 118 llgfr %r1,%r12 119 srlg %r13,%r12,32 120 srlg %r14,%r9,32 121 sllg %r0,%r0,26 122 algr %r11,%r0 123 sllg %r0,%r13,52 124 srlg %r13,%r13,12 125 sllg %r1,%r1,14 126 algr %r11,%r0 127 alcgr %r13,%r1 128 sllg %r0,%r14,40 129 srlg %r14,%r14,24 130 lghi %r1,0 131 algr %r13,%r0 132 alcgr %r14,%r1 133 llgf %r0,24(%r2) 134 lcgr %r0,%r0 135 xgr %r11,%r10 136 xgr %r13,%r12 137 xgr %r14,%r9 138 ngr %r11,%r0 139 ngr %r13,%r0 140 ngr %r14,%r0 141 xgr %r11,%r10 142 xgr %r13,%r12 143 xgr %r14,%r9 144 lhi %r0,0 145 st %r0,24(%r2) 146 j .Lpoly1305_blocks_entry 147 .size poly1305_blocks_vx,.-poly1305_blocks_vx 148 .type __poly1305_mul,@function 149 .align 16 150 __poly1305_mul: 151 .word 0xe730,0xa000,0x28a5 # vmlo %v19,%v0,%v10,2 152 .word 0xe740,0xb000,0x28a5 # vmlo %v20,%v0,%v11,2 153 .word 0xe750,0xd000,0x28a5 # vmlo %v21,%v0,%v13,2 154 .word 0xe760,0xf000,0x28a5 # vmlo %v22,%v0,%v15,2 155 .word 0xe770,0x1000,0x2aa5 # vmlo %v23,%v0,%v17,2 156 .word 0xe731,0x2200,0x3bad # vmalo %v19,%v1,%v18,%v19,2 157 .word 0xe741,0xa200,0x49ad # vmalo %v20,%v1,%v10,%v20,2 158 .word 0xe751,0xb200,0x59ad # vmalo %v21,%v1,%v11,%v21,2 159 .word 0xe761,0xd200,0x69ad # vmalo %v22,%v1,%v13,%v22,2 160 .word 0xe771,0xf200,0x79ad # vmalo %v23,%v1,%v15,%v23,2 161 .word 0xe732,0x0200,0x3bad # vmalo %v19,%v2,%v16,%v19,2 162 .word 0xe742,0x2200,0x4bad # vmalo %v20,%v2,%v18,%v20,2 163 .word 0xe752,0xa200,0x59ad # vmalo %v21,%v2,%v10,%v21,2 164 .word 0xe762,0xb200,0x69ad # vmalo %v22,%v2,%v11,%v22,2 165 .word 0xe772,0xd200,0x79ad # vmalo %v23,%v2,%v13,%v23,2 166 .word 0xe733,0xe200,0x39ad # vmalo %v19,%v3,%v14,%v19,2 167 .word 0xe743,0x0200,0x4bad # vmalo %v20,%v3,%v16,%v20,2 168 .word 0xe753,0x2200,0x5bad # vmalo %v21,%v3,%v18,%v21,2 169 .word 0xe763,0xa200,0x69ad # vmalo %v22,%v3,%v10,%v22,2 170 .word 0xe773,0xb200,0x79ad # vmalo %v23,%v3,%v11,%v23,2 171 .word 0xe734,0xc200,0x39ad # vmalo %v19,%v4,%v12,%v19,2 172 .word 0xe744,0xe200,0x49ad # vmalo %v20,%v4,%v14,%v20,2 173 .word 0xe754,0x0200,0x5bad # vmalo %v21,%v4,%v16,%v21,2 174 .word 0xe764,0x2200,0x6bad # vmalo %v22,%v4,%v18,%v22,2 175 .word 0xe774,0xa200,0x79ad # vmalo %v23,%v4,%v10,%v23,2 176 .word 0xe746,0x001a,0x3438 # vesrl %v4,%v22,26,3 177 .word 0xe713,0x001a,0x3438 # vesrl %v1,%v19,26,3 178 .word 0xe736,0xc000,0x0668 # vn %v3,%v22,%v28 179 .word 0xe703,0xc000,0x0668 # vn %v0,%v19,%v28 180 .word 0xe744,0x7000,0x32f3 # va %v4,%v4,%v23,3 181 .word 0xe711,0x4000,0x32f3 # va %v1,%v1,%v20,3 182 .word 0xe774,0x001a,0x3838 # vesrl %v23,%v4,26,3 183 .word 0xe741,0x001a,0x3838 # vesrl %v20,%v1,26,3 184 .word 0xe744,0xc000,0x0268 # vn %v4,%v4,%v28 185 .word 0xe711,0xc000,0x0268 # vn %v1,%v1,%v28 186 .word 0xe700,0x7000,0x32f3 # va %v0,%v0,%v23,3 187 .word 0xe725,0x4000,0x36f3 # va %v2,%v21,%v20,3 188 .word 0xe777,0x0002,0x3c30 # vesl %v23,%v23,2,3 189 .word 0xe752,0x001a,0x3838 # vesrl %v21,%v2,26,3 190 .word 0xe722,0xc000,0x0268 # vn %v2,%v2,%v28 191 .word 0xe700,0x7000,0x32f3 # va %v0,%v0,%v23,3 192 .word 0xe733,0x5000,0x32f3 # va %v3,%v3,%v21,3 193 .word 0xe730,0x001a,0x3838 # vesrl %v19,%v0,26,3 194 .word 0xe763,0x001a,0x3838 # vesrl %v22,%v3,26,3 195 .word 0xe700,0xc000,0x0268 # vn %v0,%v0,%v28 196 .word 0xe733,0xc000,0x0268 # vn %v3,%v3,%v28 197 .word 0xe711,0x3000,0x32f3 # va %v1,%v1,%v19,3 198 .word 0xe744,0x6000,0x32f3 # va %v4,%v4,%v22,3 199 br %r14 200 .size __poly1305_mul,.-__poly1305_mul 201 .type __poly1305_blocks_vx,@function 202 .align 16 203 __poly1305_blocks_vx: 204 lgr %r0,%r15 205 stmg %r10,%r15,10*8(%r15) 206 aghi %r15,-(160+8*8) 207 stg %r0,0(%r15) 208 std %f8,160+0*8(%r15) 209 std %f9,160+1*8(%r15) 210 std %f10,160+2*8(%r15) 211 std %f11,160+3*8(%r15) 212 std %f12,160+4*8(%r15) 213 std %f13,160+5*8(%r15) 214 std %f14,160+6*8(%r15) 215 std %f15,160+7*8(%r15) 216 larl %r1,.Lconst 217 .word 0xe7c0,0x263f,0x3846 # vgm %v28,38,63,3 218 .word 0xe7df,0x1010,0x0c36 # vlm %v29,%v31,16(%r1) 219 .word 0xe300,0x2018,0x0012 # lt %r0,24(%r2) 220 jnz .Lskip_init 221 lg %r11,32(%r2) 222 lg %r13,40(%r2) 223 .word 0xecab,0x26bf,0x2655 # risbg %r10,%r11,38,191,38 224 srlg %r12,%r11,52 225 .word 0xecbb,0x26bf,0x0055 # risbg %r11,%r11,38,191,0 226 .word 0xe7ab,000000,0x3022 # vlvg %v10,%r11,0,3 227 .word 0xeccd,0x2633,0x0c55 # risbg %r12,%r13,38,51,12 228 .word 0xe7ba,000000,0x3022 # vlvg %v11,%r10,0,3 229 .word 0xecad,0x263f,0x3255 # risbg %r10,%r13,38,63,50 230 .word 0xe7dc,000000,0x3022 # vlvg %v13,%r12,0,3 231 srlg %r12,%r13,40 232 .word 0xe7fa,000000,0x3022 # vlvg %v15,%r10,0,3 233 .word 0xe71c,000000,0x3822 # vlvg %v17,%r12,0,3 234 .word 0xe7cb,0x0002,0x3030 # vesl %v12,%v11,2,3 235 .word 0xe7ed,0x0002,0x3030 # vesl %v14,%v13,2,3 236 .word 0xe70f,0x0002,0x3830 # vesl %v16,%v15,2,3 237 .word 0xe721,0x0002,0x3c30 # vesl %v18,%v17,2,3 238 .word 0xe70a,000000,0x0056 # vlr %v0,%v10 239 .word 0xe71b,000000,0x0056 # vlr %v1,%v11 240 .word 0xe72d,000000,0x0056 # vlr %v2,%v13 241 .word 0xe73f,000000,0x0056 # vlr %v3,%v15 242 .word 0xe741,000000,0x0456 # vlr %v4,%v17 243 .word 0xe7cc,0xb000,0x30f3 # va %v12,%v12,%v11,3 244 .word 0xe7ee,0xd000,0x30f3 # va %v14,%v14,%v13,3 245 .word 0xe700,0xf000,0x3cf3 # va %v16,%v16,%v15,3 246 .word 0xe722,0x1000,0x3ef3 # va %v18,%v18,%v17,3 247 brasl %r14,__poly1305_mul 248 .word 0xe7a0,0xa000,0x0084 # vpdi %v10,%v0,%v10,0 249 .word 0xe7b1,0xb000,0x0084 # vpdi %v11,%v1,%v11,0 250 .word 0xe7d2,0xd000,0x0084 # vpdi %v13,%v2,%v13,0 251 .word 0xe7f3,0xf000,0x0084 # vpdi %v15,%v3,%v15,0 252 .word 0xe714,0x1000,0x0a84 # vpdi %v17,%v4,%v17,0 253 .word 0xe700,000000,0x0084 # vpdi %v0,%v0,%v0,0 254 .word 0xe711,0x1000,0x0084 # vpdi %v1,%v1,%v1,0 255 .word 0xe722,0x2000,0x0084 # vpdi %v2,%v2,%v2,0 256 .word 0xe733,0x3000,0x0084 # vpdi %v3,%v3,%v3,0 257 .word 0xe744,0x4000,0x0084 # vpdi %v4,%v4,%v4,0 258 .word 0xe7cb,0x0002,0x3030 # vesl %v12,%v11,2,3 259 .word 0xe7ed,0x0002,0x3030 # vesl %v14,%v13,2,3 260 .word 0xe70f,0x0002,0x3830 # vesl %v16,%v15,2,3 261 .word 0xe721,0x0002,0x3c30 # vesl %v18,%v17,2,3 262 .word 0xe7cc,0xb000,0x30f3 # va %v12,%v12,%v11,3 263 .word 0xe7ee,0xd000,0x30f3 # va %v14,%v14,%v13,3 264 .word 0xe700,0xf000,0x3cf3 # va %v16,%v16,%v15,3 265 .word 0xe722,0x1000,0x3ef3 # va %v18,%v18,%v17,3 266 brasl %r14,__poly1305_mul 267 .word 0xe750,0x1000,0x0006 # vl %v5,0(%r1) 268 .word 0xe7aa,000000,0x508c # vperm %v10,%v10,%v0,%v5 269 .word 0xe7bb,0x1000,0x508c # vperm %v11,%v11,%v1,%v5 270 .word 0xe7dd,0x2000,0x508c # vperm %v13,%v13,%v2,%v5 271 .word 0xe7ff,0x3000,0x508c # vperm %v15,%v15,%v3,%v5 272 .word 0xe711,0x4000,0x5c8c # vperm %v17,%v17,%v4,%v5 273 .word 0xe7cb,0x0002,0x2030 # vesl %v12,%v11,2,2 274 .word 0xe7ed,0x0002,0x2030 # vesl %v14,%v13,2,2 275 .word 0xe70f,0x0002,0x2830 # vesl %v16,%v15,2,2 276 .word 0xe721,0x0002,0x2c30 # vesl %v18,%v17,2,2 277 .word 0xe7cc,0xb000,0x20f3 # va %v12,%v12,%v11,2 278 .word 0xe7ee,0xd000,0x20f3 # va %v14,%v14,%v13,2 279 .word 0xe700,0xf000,0x2cf3 # va %v16,%v16,%v15,2 280 .word 0xe722,0x1000,0x2ef3 # va %v18,%v18,%v17,2 281 lg %r11,0(%r2) 282 lg %r13,8(%r2) 283 lg %r14,16(%r2) 284 .word 0xe700,000000,0x0044 # vgbm %v0,0 285 .word 0xe710,000000,0x0044 # vgbm %v1,0 286 .word 0xe720,000000,0x0044 # vgbm %v2,0 287 .word 0xe730,000000,0x0044 # vgbm %v3,0 288 .word 0xe740,000000,0x0044 # vgbm %v4,0 289 .word 0xecab,0x26bf,0x2655 # risbg %r10,%r11,38,191,38 290 srlg %r12,%r11,52 291 .word 0xecbb,0x26bf,0x0055 # risbg %r11,%r11,38,191,0 292 .word 0xe70b,000000,0x3022 # vlvg %v0,%r11,0,3 293 .word 0xeccd,0x2633,0x0c55 # risbg %r12,%r13,38,51,12 294 .word 0xe71a,000000,0x3022 # vlvg %v1,%r10,0,3 295 .word 0xecad,0x263f,0x3255 # risbg %r10,%r13,38,63,50 296 .word 0xe72c,000000,0x3022 # vlvg %v2,%r12,0,3 297 srlg %r12,%r13,40 298 .word 0xe73a,000000,0x3022 # vlvg %v3,%r10,0,3 299 .word 0xecce,0x2527,0x1855 # risbg %r12,%r14,37,39,24 300 .word 0xe74c,000000,0x3022 # vlvg %v4,%r12,0,3 301 lhi %r0,1 302 st %r0,24(%r2) 303 .word 0xe7a2,0x2030,0x043e # vstm %v10,%v18,48(%r2) 304 .word 0xe7aa,0xa000,0x0084 # vpdi %v10,%v10,%v10,0 305 .word 0xe7bb,0xb000,0x0084 # vpdi %v11,%v11,%v11,0 306 .word 0xe7cc,0xc000,0x0084 # vpdi %v12,%v12,%v12,0 307 .word 0xe7dd,0xd000,0x0084 # vpdi %v13,%v13,%v13,0 308 .word 0xe7ee,0xe000,0x0084 # vpdi %v14,%v14,%v14,0 309 .word 0xe7ff,0xf000,0x0084 # vpdi %v15,%v15,%v15,0 310 .word 0xe700,000000,0x0e84 # vpdi %v16,%v16,%v16,0 311 .word 0xe711,0x1000,0x0e84 # vpdi %v17,%v17,%v17,0 312 .word 0xe722,0x2000,0x0e84 # vpdi %v18,%v18,%v18,0 313 j .Loaded_hash 314 .align 16 315 .Lskip_init: 316 .word 0xe700,0x2000,0x2004 # vllez %v0,0(%r2),2 317 .word 0xe710,0x2004,0x2004 # vllez %v1,4(%r2),2 318 .word 0xe720,0x2008,0x2004 # vllez %v2,8(%r2),2 319 .word 0xe730,0x200c,0x2004 # vllez %v3,12(%r2),2 320 .word 0xe740,0x2010,0x2004 # vllez %v4,16(%r2),2 321 .word 0xe7a0,0x2030,0x3005 # vlrep %v10,0x30(%r2),3 322 .word 0xe7b0,0x2040,0x3005 # vlrep %v11,0x40(%r2),3 323 .word 0xe7c0,0x2050,0x3005 # vlrep %v12,0x50(%r2),3 324 .word 0xe7d0,0x2060,0x3005 # vlrep %v13,0x60(%r2),3 325 .word 0xe7e0,0x2070,0x3005 # vlrep %v14,0x70(%r2),3 326 .word 0xe7f0,0x2080,0x3005 # vlrep %v15,0x80(%r2),3 327 .word 0xe700,0x2090,0x3805 # vlrep %v16,0x90(%r2),3 328 .word 0xe710,0x20a0,0x3805 # vlrep %v17,0xa0(%r2),3 329 .word 0xe720,0x20b0,0x3805 # vlrep %v18,0xb0(%r2),3 330 .Loaded_hash: 331 .word 0xe760,000000,0x0044 # vgbm %v6,0 332 .word 0xe780,000000,0x0044 # vgbm %v8,0 333 .word 0xe78b,0x3000,0x0c36 # vlm %v24,%v27,0x00(%r3) 334 la %r3,0x40(%r3) 335 .word 0xe7c0,0x061f,0x3846 # vgm %v28,6,31,3 336 .word 0xe790,0x0505,0x2046 # vgm %v9,5,5,2 337 .word 0xe75a,0xb000,0xd78c # vperm %v5,%v26,%v27,%v29 338 .word 0xe77a,0xb000,0xf78c # vperm %v7,%v26,%v27,%v31 339 .word 0xe7aa,0xb000,0xef8c # vperm %v26,%v26,%v27,%v30 340 .word 0xe765,0xc006,0x3272 # verim %v6,%v5,%v28,6,3 341 .word 0xe755,0x0020,0x3030 # vesl %v5,%v5,32,3 342 .word 0xe777,0x001c,0x3030 # vesl %v7,%v7,28,3 343 .word 0xe78a,0xc012,0x3672 # verim %v8,%v26,%v28,18,3 344 .word 0xe79a,0xc03a,0x3672 # verim %v9,%v26,%v28,58,3 345 .word 0xe755,0xc000,0x0268 # vn %v5,%v5,%v28 346 .word 0xe777,0xc000,0x0268 # vn %v7,%v7,%v28 347 .word 0xe799,0x0002,0x2038 # vesrl %v9,%v9,2,2 348 .word 0xe7c0,0x263f,0x3846 # vgm %v28,38,63,3 349 .word 0xe7a8,0x9000,0xdf8c # vperm %v26,%v24,%v25,%v29 350 .word 0xe7b8,0x9000,0xef8c # vperm %v27,%v24,%v25,%v30 351 .word 0xe798,0x9000,0xff8c # vperm %v25,%v24,%v25,%v31 352 .word 0xe75a,0xc000,0x3672 # verim %v5,%v26,%v28,0,3 353 .word 0xe76a,0xc026,0x3672 # verim %v6,%v26,%v28,38,3 354 .word 0xe779,0xc03c,0x3672 # verim %v7,%v25,%v28,60,3 355 .word 0xe78b,0xc032,0x3672 # verim %v8,%v27,%v28,50,3 356 .word 0xe7bb,0x0028,0x3c38 # vesrl %v27,%v27,40,3 357 .word 0xe799,0xb000,0x026a # vo %v9,%v9,%v27 358 srlg %r0,%r4,6 359 aghi %r0,-1 360 .align 16 361 .Loop_vx: 362 .word 0xe735,0xa000,0x28a4 # vmle %v19,%v5,%v10,2 363 .word 0xe745,0xb000,0x28a4 # vmle %v20,%v5,%v11,2 364 .word 0xe755,0xd000,0x28a4 # vmle %v21,%v5,%v13,2 365 .word 0xe765,0xf000,0x28a4 # vmle %v22,%v5,%v15,2 366 .word 0xe775,0x1000,0x2aa4 # vmle %v23,%v5,%v17,2 367 .word 0xe736,0x2200,0x3bac # vmale %v19,%v6,%v18,%v19,2 368 .word 0xe746,0xa200,0x49ac # vmale %v20,%v6,%v10,%v20,2 369 .word 0xe756,0xb200,0x59ac # vmale %v21,%v6,%v11,%v21,2 370 .word 0xe766,0xd200,0x69ac # vmale %v22,%v6,%v13,%v22,2 371 .word 0xe776,0xf200,0x79ac # vmale %v23,%v6,%v15,%v23,2 372 .word 0xe722,0x7000,0x20f3 # va %v2,%v2,%v7,2 373 .word 0xe700,0x5000,0x20f3 # va %v0,%v0,%v5,2 374 .word 0xe733,0x8000,0x20f3 # va %v3,%v3,%v8,2 375 .word 0xe711,0x6000,0x20f3 # va %v1,%v1,%v6,2 376 .word 0xe744,0x9000,0x20f3 # va %v4,%v4,%v9,2 377 .word 0xe737,0x0200,0x3bac # vmale %v19,%v7,%v16,%v19,2 378 .word 0xe747,0x2200,0x4bac # vmale %v20,%v7,%v18,%v20,2 379 .word 0xe757,0xa200,0x59ac # vmale %v21,%v7,%v10,%v21,2 380 .word 0xe767,0xb200,0x69ac # vmale %v22,%v7,%v11,%v22,2 381 .word 0xe777,0xd200,0x79ac # vmale %v23,%v7,%v13,%v23,2 382 .word 0xe78b,0x3000,0x0c36 # vlm %v24,%v27,0x00(%r3) 383 la %r3,0x40(%r3) 384 .word 0xe7c0,0x061f,0x3846 # vgm %v28,6,31,3 385 .word 0xe738,0xe200,0x39ac # vmale %v19,%v8,%v14,%v19,2 386 .word 0xe748,0x0200,0x4bac # vmale %v20,%v8,%v16,%v20,2 387 .word 0xe758,0x2200,0x5bac # vmale %v21,%v8,%v18,%v21,2 388 .word 0xe768,0xa200,0x69ac # vmale %v22,%v8,%v10,%v22,2 389 .word 0xe778,0xb200,0x79ac # vmale %v23,%v8,%v11,%v23,2 390 .word 0xe75a,0xb000,0xd78c # vperm %v5,%v26,%v27,%v29 391 .word 0xe77a,0xb000,0xf78c # vperm %v7,%v26,%v27,%v31 392 .word 0xe7aa,0xb000,0xef8c # vperm %v26,%v26,%v27,%v30 393 .word 0xe739,0xc200,0x39ac # vmale %v19,%v9,%v12,%v19,2 394 .word 0xe749,0xe200,0x49ac # vmale %v20,%v9,%v14,%v20,2 395 .word 0xe759,0x0200,0x5bac # vmale %v21,%v9,%v16,%v21,2 396 .word 0xe769,0x2200,0x6bac # vmale %v22,%v9,%v18,%v22,2 397 .word 0xe779,0xa200,0x79ac # vmale %v23,%v9,%v10,%v23,2 398 .word 0xe765,0xc006,0x3272 # verim %v6,%v5,%v28,6,3 399 .word 0xe755,0x0020,0x3030 # vesl %v5,%v5,32,3 400 .word 0xe777,0x001c,0x3030 # vesl %v7,%v7,28,3 401 .word 0xe78a,0xc012,0x3672 # verim %v8,%v26,%v28,18,3 402 .word 0xe730,0xa200,0x39ad # vmalo %v19,%v0,%v10,%v19,2 403 .word 0xe740,0xb200,0x49ad # vmalo %v20,%v0,%v11,%v20,2 404 .word 0xe750,0xd200,0x59ad # vmalo %v21,%v0,%v13,%v21,2 405 .word 0xe760,0xf200,0x69ad # vmalo %v22,%v0,%v15,%v22,2 406 .word 0xe770,0x1200,0x7bad # vmalo %v23,%v0,%v17,%v23,2 407 .word 0xe790,0x0505,0x2046 # vgm %v9,5,5,2 408 .word 0xe79a,0xc03a,0x3672 # verim %v9,%v26,%v28,58,3 409 .word 0xe755,0xc000,0x0268 # vn %v5,%v5,%v28 410 .word 0xe777,0xc000,0x0268 # vn %v7,%v7,%v28 411 .word 0xe799,0x0002,0x2038 # vesrl %v9,%v9,2,2 412 .word 0xe731,0x2200,0x3bad # vmalo %v19,%v1,%v18,%v19,2 413 .word 0xe741,0xa200,0x49ad # vmalo %v20,%v1,%v10,%v20,2 414 .word 0xe751,0xb200,0x59ad # vmalo %v21,%v1,%v11,%v21,2 415 .word 0xe761,0xd200,0x69ad # vmalo %v22,%v1,%v13,%v22,2 416 .word 0xe771,0xf200,0x79ad # vmalo %v23,%v1,%v15,%v23,2 417 .word 0xe7c0,0x263f,0x3846 # vgm %v28,38,63,3 418 .word 0xe7a8,0x9000,0xdf8c # vperm %v26,%v24,%v25,%v29 419 .word 0xe7b8,0x9000,0xef8c # vperm %v27,%v24,%v25,%v30 420 .word 0xe798,0x9000,0xff8c # vperm %v25,%v24,%v25,%v31 421 .word 0xe732,0x0200,0x3bad # vmalo %v19,%v2,%v16,%v19,2 422 .word 0xe742,0x2200,0x4bad # vmalo %v20,%v2,%v18,%v20,2 423 .word 0xe752,0xa200,0x59ad # vmalo %v21,%v2,%v10,%v21,2 424 .word 0xe762,0xb200,0x69ad # vmalo %v22,%v2,%v11,%v22,2 425 .word 0xe772,0xd200,0x79ad # vmalo %v23,%v2,%v13,%v23,2 426 .word 0xe75a,0xc000,0x3672 # verim %v5,%v26,%v28,0,3 427 .word 0xe76a,0xc026,0x3672 # verim %v6,%v26,%v28,38,3 428 .word 0xe779,0xc03c,0x3672 # verim %v7,%v25,%v28,60,3 429 .word 0xe733,0xe200,0x39ad # vmalo %v19,%v3,%v14,%v19,2 430 .word 0xe743,0x0200,0x4bad # vmalo %v20,%v3,%v16,%v20,2 431 .word 0xe753,0x2200,0x5bad # vmalo %v21,%v3,%v18,%v21,2 432 .word 0xe763,0xa200,0x69ad # vmalo %v22,%v3,%v10,%v22,2 433 .word 0xe773,0xb200,0x79ad # vmalo %v23,%v3,%v11,%v23,2 434 .word 0xe78b,0xc032,0x3672 # verim %v8,%v27,%v28,50,3 435 .word 0xe7bb,0x0028,0x3c38 # vesrl %v27,%v27,40,3 436 .word 0xe799,0xb000,0x026a # vo %v9,%v9,%v27 437 .word 0xe734,0xc200,0x39ad # vmalo %v19,%v4,%v12,%v19,2 438 .word 0xe744,0xe200,0x49ad # vmalo %v20,%v4,%v14,%v20,2 439 .word 0xe754,0x0200,0x5bad # vmalo %v21,%v4,%v16,%v21,2 440 .word 0xe764,0x2200,0x6bad # vmalo %v22,%v4,%v18,%v22,2 441 .word 0xe774,0xa200,0x79ad # vmalo %v23,%v4,%v10,%v23,2 442 .word 0xe746,0x001a,0x3438 # vesrl %v4,%v22,26,3 443 .word 0xe713,0x001a,0x3438 # vesrl %v1,%v19,26,3 444 .word 0xe736,0xc000,0x0668 # vn %v3,%v22,%v28 445 .word 0xe703,0xc000,0x0668 # vn %v0,%v19,%v28 446 .word 0xe744,0x7000,0x32f3 # va %v4,%v4,%v23,3 447 .word 0xe711,0x4000,0x32f3 # va %v1,%v1,%v20,3 448 .word 0xe774,0x001a,0x3838 # vesrl %v23,%v4,26,3 449 .word 0xe741,0x001a,0x3838 # vesrl %v20,%v1,26,3 450 .word 0xe744,0xc000,0x0268 # vn %v4,%v4,%v28 451 .word 0xe711,0xc000,0x0268 # vn %v1,%v1,%v28 452 .word 0xe700,0x7000,0x32f3 # va %v0,%v0,%v23,3 453 .word 0xe725,0x4000,0x36f3 # va %v2,%v21,%v20,3 454 .word 0xe777,0x0002,0x3c30 # vesl %v23,%v23,2,3 455 .word 0xe752,0x001a,0x3838 # vesrl %v21,%v2,26,3 456 .word 0xe722,0xc000,0x0268 # vn %v2,%v2,%v28 457 .word 0xe700,0x7000,0x32f3 # va %v0,%v0,%v23,3 458 .word 0xe733,0x5000,0x32f3 # va %v3,%v3,%v21,3 459 .word 0xe730,0x001a,0x3838 # vesrl %v19,%v0,26,3 460 .word 0xe763,0x001a,0x3838 # vesrl %v22,%v3,26,3 461 .word 0xe700,0xc000,0x0268 # vn %v0,%v0,%v28 462 .word 0xe733,0xc000,0x0268 # vn %v3,%v3,%v28 463 .word 0xe711,0x3000,0x32f3 # va %v1,%v1,%v19,3 464 .word 0xe744,0x6000,0x32f3 # va %v4,%v4,%v22,3 465 brctg %r0,.Loop_vx 466 .word 0xe7a2,0x2030,0x0436 # vlm %v10,%v18,48(%r2) 467 lghi %r0,48 468 lcgr %r4,%r4 469 ngr %r4,%r0 470 slgr %r3,%r4 471 .Last: 472 .word 0xe735,0xa000,0x28a4 # vmle %v19,%v5,%v10,2 473 .word 0xe745,0xb000,0x28a4 # vmle %v20,%v5,%v11,2 474 .word 0xe755,0xd000,0x28a4 # vmle %v21,%v5,%v13,2 475 .word 0xe765,0xf000,0x28a4 # vmle %v22,%v5,%v15,2 476 .word 0xe775,0x1000,0x2aa4 # vmle %v23,%v5,%v17,2 477 .word 0xe736,0x2200,0x3bac # vmale %v19,%v6,%v18,%v19,2 478 .word 0xe746,0xa200,0x49ac # vmale %v20,%v6,%v10,%v20,2 479 .word 0xe756,0xb200,0x59ac # vmale %v21,%v6,%v11,%v21,2 480 .word 0xe766,0xd200,0x69ac # vmale %v22,%v6,%v13,%v22,2 481 .word 0xe776,0xf200,0x79ac # vmale %v23,%v6,%v15,%v23,2 482 .word 0xe700,0x5000,0x20f3 # va %v0,%v0,%v5,2 483 .word 0xe711,0x6000,0x20f3 # va %v1,%v1,%v6,2 484 .word 0xe722,0x7000,0x20f3 # va %v2,%v2,%v7,2 485 .word 0xe733,0x8000,0x20f3 # va %v3,%v3,%v8,2 486 .word 0xe744,0x9000,0x20f3 # va %v4,%v4,%v9,2 487 .word 0xe737,0x0200,0x3bac # vmale %v19,%v7,%v16,%v19,2 488 .word 0xe747,0x2200,0x4bac # vmale %v20,%v7,%v18,%v20,2 489 .word 0xe757,0xa200,0x59ac # vmale %v21,%v7,%v10,%v21,2 490 .word 0xe767,0xb200,0x69ac # vmale %v22,%v7,%v11,%v22,2 491 .word 0xe777,0xd200,0x79ac # vmale %v23,%v7,%v13,%v23,2 492 .word 0xe738,0xe200,0x39ac # vmale %v19,%v8,%v14,%v19,2 493 .word 0xe748,0x0200,0x4bac # vmale %v20,%v8,%v16,%v20,2 494 .word 0xe758,0x2200,0x5bac # vmale %v21,%v8,%v18,%v21,2 495 .word 0xe768,0xa200,0x69ac # vmale %v22,%v8,%v10,%v22,2 496 .word 0xe778,0xb200,0x79ac # vmale %v23,%v8,%v11,%v23,2 497 .word 0xe739,0xc200,0x39ac # vmale %v19,%v9,%v12,%v19,2 498 .word 0xe749,0xe200,0x49ac # vmale %v20,%v9,%v14,%v20,2 499 .word 0xe759,0x0200,0x5bac # vmale %v21,%v9,%v16,%v21,2 500 .word 0xe769,0x2200,0x6bac # vmale %v22,%v9,%v18,%v22,2 501 .word 0xe779,0xa200,0x79ac # vmale %v23,%v9,%v10,%v23,2 502 .word 0xe730,0xa200,0x39ad # vmalo %v19,%v0,%v10,%v19,2 503 .word 0xe740,0xb200,0x49ad # vmalo %v20,%v0,%v11,%v20,2 504 .word 0xe750,0xd200,0x59ad # vmalo %v21,%v0,%v13,%v21,2 505 .word 0xe760,0xf200,0x69ad # vmalo %v22,%v0,%v15,%v22,2 506 .word 0xe770,0x1200,0x7bad # vmalo %v23,%v0,%v17,%v23,2 507 .word 0xe731,0x2200,0x3bad # vmalo %v19,%v1,%v18,%v19,2 508 .word 0xe741,0xa200,0x49ad # vmalo %v20,%v1,%v10,%v20,2 509 .word 0xe751,0xb200,0x59ad # vmalo %v21,%v1,%v11,%v21,2 510 .word 0xe761,0xd200,0x69ad # vmalo %v22,%v1,%v13,%v22,2 511 .word 0xe771,0xf200,0x79ad # vmalo %v23,%v1,%v15,%v23,2 512 .word 0xe732,0x0200,0x3bad # vmalo %v19,%v2,%v16,%v19,2 513 .word 0xe742,0x2200,0x4bad # vmalo %v20,%v2,%v18,%v20,2 514 .word 0xe752,0xa200,0x59ad # vmalo %v21,%v2,%v10,%v21,2 515 .word 0xe762,0xb200,0x69ad # vmalo %v22,%v2,%v11,%v22,2 516 .word 0xe772,0xd200,0x79ad # vmalo %v23,%v2,%v13,%v23,2 517 .word 0xe733,0xe200,0x39ad # vmalo %v19,%v3,%v14,%v19,2 518 .word 0xe743,0x0200,0x4bad # vmalo %v20,%v3,%v16,%v20,2 519 .word 0xe753,0x2200,0x5bad # vmalo %v21,%v3,%v18,%v21,2 520 .word 0xe763,0xa200,0x69ad # vmalo %v22,%v3,%v10,%v22,2 521 .word 0xe773,0xb200,0x79ad # vmalo %v23,%v3,%v11,%v23,2 522 .word 0xe734,0xc200,0x39ad # vmalo %v19,%v4,%v12,%v19,2 523 .word 0xe744,0xe200,0x49ad # vmalo %v20,%v4,%v14,%v20,2 524 .word 0xe754,0x0200,0x5bad # vmalo %v21,%v4,%v16,%v21,2 525 .word 0xe764,0x2200,0x6bad # vmalo %v22,%v4,%v18,%v22,2 526 .word 0xe774,0xa200,0x79ad # vmalo %v23,%v4,%v10,%v23,2 527 .word 0xe700,000000,0x0044 # vgbm %v0,0 528 .word 0xe733,000000,0x3c67 # vsumq %v19,%v19,%v0,3 529 .word 0xe744,000000,0x3c67 # vsumq %v20,%v20,%v0,3 530 .word 0xe755,000000,0x3c67 # vsumq %v21,%v21,%v0,3 531 .word 0xe766,000000,0x3c67 # vsumq %v22,%v22,%v0,3 532 .word 0xe777,000000,0x3c67 # vsumq %v23,%v23,%v0,3 533 .word 0xe746,0x001a,0x3438 # vesrl %v4,%v22,26,3 534 .word 0xe713,0x001a,0x3438 # vesrl %v1,%v19,26,3 535 .word 0xe736,0xc000,0x0668 # vn %v3,%v22,%v28 536 .word 0xe703,0xc000,0x0668 # vn %v0,%v19,%v28 537 .word 0xe744,0x7000,0x32f3 # va %v4,%v4,%v23,3 538 .word 0xe711,0x4000,0x32f3 # va %v1,%v1,%v20,3 539 .word 0xe774,0x001a,0x3838 # vesrl %v23,%v4,26,3 540 .word 0xe741,0x001a,0x3838 # vesrl %v20,%v1,26,3 541 .word 0xe744,0xc000,0x0268 # vn %v4,%v4,%v28 542 .word 0xe711,0xc000,0x0268 # vn %v1,%v1,%v28 543 .word 0xe700,0x7000,0x32f3 # va %v0,%v0,%v23,3 544 .word 0xe725,0x4000,0x36f3 # va %v2,%v21,%v20,3 545 .word 0xe777,0x0002,0x3c30 # vesl %v23,%v23,2,3 546 .word 0xe752,0x001a,0x3838 # vesrl %v21,%v2,26,3 547 .word 0xe722,0xc000,0x0268 # vn %v2,%v2,%v28 548 .word 0xe700,0x7000,0x32f3 # va %v0,%v0,%v23,3 549 .word 0xe733,0x5000,0x32f3 # va %v3,%v3,%v21,3 550 .word 0xe730,0x001a,0x3838 # vesrl %v19,%v0,26,3 551 .word 0xe763,0x001a,0x3838 # vesrl %v22,%v3,26,3 552 .word 0xe700,0xc000,0x0268 # vn %v0,%v0,%v28 553 .word 0xe733,0xc000,0x0268 # vn %v3,%v3,%v28 554 .word 0xe711,0x3000,0x32f3 # va %v1,%v1,%v19,3 555 .word 0xe744,0x6000,0x32f3 # va %v4,%v4,%v22,3 556 .word 0xc24e,000000,000000 # clgfi %r4,0 557 je .Ldone 558 .word 0xe78b,0x3000,0x0c36 # vlm %v24,%v27,0x00(%r3) 559 .word 0xe7c0,0x061f,0x3846 # vgm %v28,6,31,3 560 .word 0xe790,0x0505,0x2046 # vgm %v9,5,5,2 561 .word 0xe75a,0xb000,0xd78c # vperm %v5,%v26,%v27,%v29 562 .word 0xe77a,0xb000,0xf78c # vperm %v7,%v26,%v27,%v31 563 .word 0xe7aa,0xb000,0xef8c # vperm %v26,%v26,%v27,%v30 564 .word 0xe734,0x1030,0x0806 # vl %v19,0x30(%r4,%r1) 565 .word 0xe744,0x1060,0x0806 # vl %v20,0x60(%r4,%r1) 566 .word 0xe765,0xc006,0x3272 # verim %v6,%v5,%v28,6,3 567 .word 0xe755,0x0020,0x3030 # vesl %v5,%v5,32,3 568 .word 0xe777,0x001c,0x3030 # vesl %v7,%v7,28,3 569 .word 0xe78a,0xc012,0x3672 # verim %v8,%v26,%v28,18,3 570 .word 0xe79a,0xc03a,0x3672 # verim %v9,%v26,%v28,58,3 571 .word 0xe755,0xc000,0x0268 # vn %v5,%v5,%v28 572 .word 0xe777,0xc000,0x0268 # vn %v7,%v7,%v28 573 .word 0xe799,0x0002,0x2038 # vesrl %v9,%v9,2,2 574 .word 0xe7c0,0x263f,0x3846 # vgm %v28,38,63,3 575 .word 0xe7a8,0x9000,0xdf8c # vperm %v26,%v24,%v25,%v29 576 .word 0xe7b8,0x9000,0xef8c # vperm %v27,%v24,%v25,%v30 577 .word 0xe798,0x9000,0xff8c # vperm %v25,%v24,%v25,%v31 578 .word 0xe75a,0xc000,0x3672 # verim %v5,%v26,%v28,0,3 579 .word 0xe76a,0xc026,0x3672 # verim %v6,%v26,%v28,38,3 580 .word 0xe779,0xc03c,0x3672 # verim %v7,%v25,%v28,60,3 581 .word 0xe78b,0xc032,0x3672 # verim %v8,%v27,%v28,50,3 582 .word 0xe7bb,0x0028,0x3c38 # vesrl %v27,%v27,40,3 583 .word 0xe799,0xb000,0x026a # vo %v9,%v9,%v27 584 .word 0xe700,000000,0x318c # vperm %v0,%v0,%v0,%v19 585 .word 0xe755,0x4000,0x0268 # vn %v5,%v5,%v20 586 .word 0xe711,0x1000,0x318c # vperm %v1,%v1,%v1,%v19 587 .word 0xe766,0x4000,0x0268 # vn %v6,%v6,%v20 588 .word 0xe722,0x2000,0x318c # vperm %v2,%v2,%v2,%v19 589 .word 0xe777,0x4000,0x0268 # vn %v7,%v7,%v20 590 .word 0xe733,0x3000,0x318c # vperm %v3,%v3,%v3,%v19 591 .word 0xe788,0x4000,0x0268 # vn %v8,%v8,%v20 592 .word 0xe744,0x4000,0x318c # vperm %v4,%v4,%v4,%v19 593 .word 0xe799,0x4000,0x0268 # vn %v9,%v9,%v20 594 .word 0xe755,000000,0x20f3 # va %v5,%v5,%v0,2 595 .word 0xe700,000000,0x0044 # vgbm %v0,0 596 .word 0xe766,0x1000,0x20f3 # va %v6,%v6,%v1,2 597 .word 0xe710,000000,0x0044 # vgbm %v1,0 598 .word 0xe777,0x2000,0x20f3 # va %v7,%v7,%v2,2 599 .word 0xe720,000000,0x0044 # vgbm %v2,0 600 .word 0xe788,0x3000,0x20f3 # va %v8,%v8,%v3,2 601 .word 0xe730,000000,0x0044 # vgbm %v3,0 602 .word 0xe799,0x4000,0x20f3 # va %v9,%v9,%v4,2 603 .word 0xe740,000000,0x0044 # vgbm %v4,0 604 lghi %r4,0 605 j .Last 606 .Ldone: 607 .word 0xe700,0x2000,0x300b # vstef %v0,0(%r2),3 608 .word 0xe710,0x2004,0x300b # vstef %v1,4(%r2),3 609 .word 0xe720,0x2008,0x300b # vstef %v2,8(%r2),3 610 .word 0xe730,0x200c,0x300b # vstef %v3,12(%r2),3 611 .word 0xe740,0x2010,0x300b # vstef %v4,16(%r2),3 612 ld %f8,160+0*8(%r15) 613 ld %f9,160+1*8(%r15) 614 ld %f10,160+2*8(%r15) 615 ld %f11,160+3*8(%r15) 616 ld %f12,160+4*8(%r15) 617 ld %f13,160+5*8(%r15) 618 ld %f14,160+6*8(%r15) 619 ld %f15,160+7*8(%r15) 620 lmg %r10,%r15,160+8*8+10*8(%r15) 621 br %r14 622 .size __poly1305_blocks_vx,.-__poly1305_blocks_vx 623 .globl poly1305_emit 624 .type poly1305_emit,@function 625 .align 16 626 poly1305_emit: 627 .Lpoly1305_emit: 628 stmg %r6,%r10,6*8(%r15) 629 lg %r8,0(%r2) 630 lg %r9,8(%r2) 631 lg %r10,16(%r2) 632 llgfr %r0,%r8 633 srlg %r5,%r8,32 634 llgfr %r1,%r9 635 srlg %r6,%r9,32 636 srlg %r7,%r10,32 637 sllg %r0,%r0,26 638 algr %r5,%r0 639 sllg %r0,%r6,52 640 srlg %r6,%r6,12 641 sllg %r1,%r1,14 642 algr %r5,%r0 643 alcgr %r6,%r1 644 sllg %r0,%r7,40 645 srlg %r7,%r7,24 646 lghi %r1,0 647 algr %r6,%r0 648 alcgr %r7,%r1 649 llgf %r0,24(%r2) 650 lcgr %r0,%r0 651 xgr %r5,%r8 652 xgr %r6,%r9 653 xgr %r7,%r10 654 ngr %r5,%r0 655 ngr %r6,%r0 656 ngr %r7,%r0 657 xgr %r5,%r8 658 xgr %r6,%r9 659 xgr %r7,%r10 660 lghi %r0,5 661 lgr %r8,%r5 662 lgr %r9,%r6 663 algr %r5,%r0 664 alcgr %r6,%r1 665 alcgr %r7,%r1 666 srlg %r7,%r7,2 667 slgr %r1,%r7 668 lg %r10,0(%r4) 669 lg %r2,8(%r4) 670 xgr %r5,%r8 671 xgr %r6,%r9 672 ngr %r5,%r1 673 ngr %r6,%r1 674 xgr %r5,%r8 675 rllg %r8,%r10,32 676 xgr %r6,%r9 677 rllg %r9,%r2,32 678 algr %r5,%r8 679 alcgr %r6,%r9 680 strvg %r5,0(%r3) 681 strvg %r6,8(%r3) 682 lmg %r6,%r10,6*8(%r15) 683 br %r14 684 .size poly1305_emit,.-poly1305_emit 685 .align 16 686 .Lconst: 687 .long 67438087,336926231,202182159,471670303 688 .long 117835012,50462976,387323156,319951120 689 .long 252579084,185207048,522067228,454695192 690 .long 0,151521030,0,421009174 691 .long 0,0,0,202182159 692 .long 202182159,0,0,0 693 .long 0,0,202182159,0 694 .long 4294967295,0,4294967295,4294967295 695 .long 4294967295,0,4294967295,0 696 .long 0,0,4294967295,0 697 .string "Poly1305 for s390x, CRYPTOGAMS by <appro@openssl.org>" 698