1#include "s390x_arch.h" 2.text 3.globl poly1305_init 4.type poly1305_init,@function 5.align 16 6poly1305_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 45poly1305_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 108poly1305_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 626poly1305_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