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