1b087dfabSPatrick Steuer/* SPDX-License-Identifier: GPL-2.0 */ 2b087dfabSPatrick Steuer/* 3b087dfabSPatrick Steuer * Original implementation written by Andy Polyakov, @dot-asm. 4b087dfabSPatrick Steuer * This is an adaptation of the original code for kernel use. 5b087dfabSPatrick Steuer * 6b087dfabSPatrick Steuer * Copyright (C) 2006-2019 CRYPTOGAMS by <appro@openssl.org>. All Rights Reserved. 7b087dfabSPatrick Steuer */ 8b087dfabSPatrick Steuer 9b087dfabSPatrick Steuer#include <linux/linkage.h> 10b087dfabSPatrick Steuer#include <asm/nospec-insn.h> 11*fd2527f2SHeiko Carstens#include <asm/fpu-insn.h> 12b087dfabSPatrick Steuer 13b087dfabSPatrick Steuer#define SP %r15 14b087dfabSPatrick Steuer#define FRAME (16 * 8 + 4 * 8) 15b087dfabSPatrick Steuer 16b087dfabSPatrick Steuer .data 173e5e5107SHeiko Carstens .balign 32 18b087dfabSPatrick Steuer 193e5e5107SHeiko CarstensSYM_DATA_START_LOCAL(sigma) 20b087dfabSPatrick Steuer .long 0x61707865,0x3320646e,0x79622d32,0x6b206574 # endian-neutral 21b087dfabSPatrick Steuer .long 1,0,0,0 22b087dfabSPatrick Steuer .long 2,0,0,0 23b087dfabSPatrick Steuer .long 3,0,0,0 24b087dfabSPatrick Steuer .long 0x03020100,0x07060504,0x0b0a0908,0x0f0e0d0c # byte swap 25b087dfabSPatrick Steuer 26b087dfabSPatrick Steuer .long 0,1,2,3 27b087dfabSPatrick Steuer .long 0x61707865,0x61707865,0x61707865,0x61707865 # smashed sigma 28b087dfabSPatrick Steuer .long 0x3320646e,0x3320646e,0x3320646e,0x3320646e 29b087dfabSPatrick Steuer .long 0x79622d32,0x79622d32,0x79622d32,0x79622d32 30b087dfabSPatrick Steuer .long 0x6b206574,0x6b206574,0x6b206574,0x6b206574 313e5e5107SHeiko CarstensSYM_DATA_END(sigma) 32b087dfabSPatrick Steuer 33b087dfabSPatrick Steuer .previous 34b087dfabSPatrick Steuer 35b087dfabSPatrick Steuer GEN_BR_THUNK %r14 36b087dfabSPatrick Steuer 37b087dfabSPatrick Steuer .text 38b087dfabSPatrick Steuer 39b087dfabSPatrick Steuer############################################################################# 40b087dfabSPatrick Steuer# void chacha20_vx_4x(u8 *out, counst u8 *inp, size_t len, 41b087dfabSPatrick Steuer# counst u32 *key, const u32 *counter) 42b087dfabSPatrick Steuer 43b087dfabSPatrick Steuer#define OUT %r2 44b087dfabSPatrick Steuer#define INP %r3 45b087dfabSPatrick Steuer#define LEN %r4 46b087dfabSPatrick Steuer#define KEY %r5 47b087dfabSPatrick Steuer#define COUNTER %r6 48b087dfabSPatrick Steuer 49b087dfabSPatrick Steuer#define BEPERM %v31 50b087dfabSPatrick Steuer#define CTR %v26 51b087dfabSPatrick Steuer 52b087dfabSPatrick Steuer#define K0 %v16 53b087dfabSPatrick Steuer#define K1 %v17 54b087dfabSPatrick Steuer#define K2 %v18 55b087dfabSPatrick Steuer#define K3 %v19 56b087dfabSPatrick Steuer 57b087dfabSPatrick Steuer#define XA0 %v0 58b087dfabSPatrick Steuer#define XA1 %v1 59b087dfabSPatrick Steuer#define XA2 %v2 60b087dfabSPatrick Steuer#define XA3 %v3 61b087dfabSPatrick Steuer 62b087dfabSPatrick Steuer#define XB0 %v4 63b087dfabSPatrick Steuer#define XB1 %v5 64b087dfabSPatrick Steuer#define XB2 %v6 65b087dfabSPatrick Steuer#define XB3 %v7 66b087dfabSPatrick Steuer 67b087dfabSPatrick Steuer#define XC0 %v8 68b087dfabSPatrick Steuer#define XC1 %v9 69b087dfabSPatrick Steuer#define XC2 %v10 70b087dfabSPatrick Steuer#define XC3 %v11 71b087dfabSPatrick Steuer 72b087dfabSPatrick Steuer#define XD0 %v12 73b087dfabSPatrick Steuer#define XD1 %v13 74b087dfabSPatrick Steuer#define XD2 %v14 75b087dfabSPatrick Steuer#define XD3 %v15 76b087dfabSPatrick Steuer 77b087dfabSPatrick Steuer#define XT0 %v27 78b087dfabSPatrick Steuer#define XT1 %v28 79b087dfabSPatrick Steuer#define XT2 %v29 80b087dfabSPatrick Steuer#define XT3 %v30 81b087dfabSPatrick Steuer 823e5e5107SHeiko CarstensSYM_FUNC_START(chacha20_vx_4x) 83b087dfabSPatrick Steuer stmg %r6,%r7,6*8(SP) 84b087dfabSPatrick Steuer 853e5e5107SHeiko Carstens larl %r7,sigma 86b087dfabSPatrick Steuer lhi %r0,10 87b087dfabSPatrick Steuer lhi %r1,0 88b087dfabSPatrick Steuer 89b087dfabSPatrick Steuer VL K0,0,,%r7 # load sigma 90b087dfabSPatrick Steuer VL K1,0,,KEY # load key 91b087dfabSPatrick Steuer VL K2,16,,KEY 92b087dfabSPatrick Steuer VL K3,0,,COUNTER # load counter 93b087dfabSPatrick Steuer 94b087dfabSPatrick Steuer VL BEPERM,0x40,,%r7 95b087dfabSPatrick Steuer VL CTR,0x50,,%r7 96b087dfabSPatrick Steuer 97b087dfabSPatrick Steuer VLM XA0,XA3,0x60,%r7,4 # load [smashed] sigma 98b087dfabSPatrick Steuer 99b087dfabSPatrick Steuer VREPF XB0,K1,0 # smash the key 100b087dfabSPatrick Steuer VREPF XB1,K1,1 101b087dfabSPatrick Steuer VREPF XB2,K1,2 102b087dfabSPatrick Steuer VREPF XB3,K1,3 103b087dfabSPatrick Steuer 104b087dfabSPatrick Steuer VREPF XD0,K3,0 105b087dfabSPatrick Steuer VREPF XD1,K3,1 106b087dfabSPatrick Steuer VREPF XD2,K3,2 107b087dfabSPatrick Steuer VREPF XD3,K3,3 108b087dfabSPatrick Steuer VAF XD0,XD0,CTR 109b087dfabSPatrick Steuer 110b087dfabSPatrick Steuer VREPF XC0,K2,0 111b087dfabSPatrick Steuer VREPF XC1,K2,1 112b087dfabSPatrick Steuer VREPF XC2,K2,2 113b087dfabSPatrick Steuer VREPF XC3,K2,3 114b087dfabSPatrick Steuer 115b087dfabSPatrick Steuer.Loop_4x: 116b087dfabSPatrick Steuer VAF XA0,XA0,XB0 117b087dfabSPatrick Steuer VX XD0,XD0,XA0 118b087dfabSPatrick Steuer VERLLF XD0,XD0,16 119b087dfabSPatrick Steuer 120b087dfabSPatrick Steuer VAF XA1,XA1,XB1 121b087dfabSPatrick Steuer VX XD1,XD1,XA1 122b087dfabSPatrick Steuer VERLLF XD1,XD1,16 123b087dfabSPatrick Steuer 124b087dfabSPatrick Steuer VAF XA2,XA2,XB2 125b087dfabSPatrick Steuer VX XD2,XD2,XA2 126b087dfabSPatrick Steuer VERLLF XD2,XD2,16 127b087dfabSPatrick Steuer 128b087dfabSPatrick Steuer VAF XA3,XA3,XB3 129b087dfabSPatrick Steuer VX XD3,XD3,XA3 130b087dfabSPatrick Steuer VERLLF XD3,XD3,16 131b087dfabSPatrick Steuer 132b087dfabSPatrick Steuer VAF XC0,XC0,XD0 133b087dfabSPatrick Steuer VX XB0,XB0,XC0 134b087dfabSPatrick Steuer VERLLF XB0,XB0,12 135b087dfabSPatrick Steuer 136b087dfabSPatrick Steuer VAF XC1,XC1,XD1 137b087dfabSPatrick Steuer VX XB1,XB1,XC1 138b087dfabSPatrick Steuer VERLLF XB1,XB1,12 139b087dfabSPatrick Steuer 140b087dfabSPatrick Steuer VAF XC2,XC2,XD2 141b087dfabSPatrick Steuer VX XB2,XB2,XC2 142b087dfabSPatrick Steuer VERLLF XB2,XB2,12 143b087dfabSPatrick Steuer 144b087dfabSPatrick Steuer VAF XC3,XC3,XD3 145b087dfabSPatrick Steuer VX XB3,XB3,XC3 146b087dfabSPatrick Steuer VERLLF XB3,XB3,12 147b087dfabSPatrick Steuer 148b087dfabSPatrick Steuer VAF XA0,XA0,XB0 149b087dfabSPatrick Steuer VX XD0,XD0,XA0 150b087dfabSPatrick Steuer VERLLF XD0,XD0,8 151b087dfabSPatrick Steuer 152b087dfabSPatrick Steuer VAF XA1,XA1,XB1 153b087dfabSPatrick Steuer VX XD1,XD1,XA1 154b087dfabSPatrick Steuer VERLLF XD1,XD1,8 155b087dfabSPatrick Steuer 156b087dfabSPatrick Steuer VAF XA2,XA2,XB2 157b087dfabSPatrick Steuer VX XD2,XD2,XA2 158b087dfabSPatrick Steuer VERLLF XD2,XD2,8 159b087dfabSPatrick Steuer 160b087dfabSPatrick Steuer VAF XA3,XA3,XB3 161b087dfabSPatrick Steuer VX XD3,XD3,XA3 162b087dfabSPatrick Steuer VERLLF XD3,XD3,8 163b087dfabSPatrick Steuer 164b087dfabSPatrick Steuer VAF XC0,XC0,XD0 165b087dfabSPatrick Steuer VX XB0,XB0,XC0 166b087dfabSPatrick Steuer VERLLF XB0,XB0,7 167b087dfabSPatrick Steuer 168b087dfabSPatrick Steuer VAF XC1,XC1,XD1 169b087dfabSPatrick Steuer VX XB1,XB1,XC1 170b087dfabSPatrick Steuer VERLLF XB1,XB1,7 171b087dfabSPatrick Steuer 172b087dfabSPatrick Steuer VAF XC2,XC2,XD2 173b087dfabSPatrick Steuer VX XB2,XB2,XC2 174b087dfabSPatrick Steuer VERLLF XB2,XB2,7 175b087dfabSPatrick Steuer 176b087dfabSPatrick Steuer VAF XC3,XC3,XD3 177b087dfabSPatrick Steuer VX XB3,XB3,XC3 178b087dfabSPatrick Steuer VERLLF XB3,XB3,7 179b087dfabSPatrick Steuer 180b087dfabSPatrick Steuer VAF XA0,XA0,XB1 181b087dfabSPatrick Steuer VX XD3,XD3,XA0 182b087dfabSPatrick Steuer VERLLF XD3,XD3,16 183b087dfabSPatrick Steuer 184b087dfabSPatrick Steuer VAF XA1,XA1,XB2 185b087dfabSPatrick Steuer VX XD0,XD0,XA1 186b087dfabSPatrick Steuer VERLLF XD0,XD0,16 187b087dfabSPatrick Steuer 188b087dfabSPatrick Steuer VAF XA2,XA2,XB3 189b087dfabSPatrick Steuer VX XD1,XD1,XA2 190b087dfabSPatrick Steuer VERLLF XD1,XD1,16 191b087dfabSPatrick Steuer 192b087dfabSPatrick Steuer VAF XA3,XA3,XB0 193b087dfabSPatrick Steuer VX XD2,XD2,XA3 194b087dfabSPatrick Steuer VERLLF XD2,XD2,16 195b087dfabSPatrick Steuer 196b087dfabSPatrick Steuer VAF XC2,XC2,XD3 197b087dfabSPatrick Steuer VX XB1,XB1,XC2 198b087dfabSPatrick Steuer VERLLF XB1,XB1,12 199b087dfabSPatrick Steuer 200b087dfabSPatrick Steuer VAF XC3,XC3,XD0 201b087dfabSPatrick Steuer VX XB2,XB2,XC3 202b087dfabSPatrick Steuer VERLLF XB2,XB2,12 203b087dfabSPatrick Steuer 204b087dfabSPatrick Steuer VAF XC0,XC0,XD1 205b087dfabSPatrick Steuer VX XB3,XB3,XC0 206b087dfabSPatrick Steuer VERLLF XB3,XB3,12 207b087dfabSPatrick Steuer 208b087dfabSPatrick Steuer VAF XC1,XC1,XD2 209b087dfabSPatrick Steuer VX XB0,XB0,XC1 210b087dfabSPatrick Steuer VERLLF XB0,XB0,12 211b087dfabSPatrick Steuer 212b087dfabSPatrick Steuer VAF XA0,XA0,XB1 213b087dfabSPatrick Steuer VX XD3,XD3,XA0 214b087dfabSPatrick Steuer VERLLF XD3,XD3,8 215b087dfabSPatrick Steuer 216b087dfabSPatrick Steuer VAF XA1,XA1,XB2 217b087dfabSPatrick Steuer VX XD0,XD0,XA1 218b087dfabSPatrick Steuer VERLLF XD0,XD0,8 219b087dfabSPatrick Steuer 220b087dfabSPatrick Steuer VAF XA2,XA2,XB3 221b087dfabSPatrick Steuer VX XD1,XD1,XA2 222b087dfabSPatrick Steuer VERLLF XD1,XD1,8 223b087dfabSPatrick Steuer 224b087dfabSPatrick Steuer VAF XA3,XA3,XB0 225b087dfabSPatrick Steuer VX XD2,XD2,XA3 226b087dfabSPatrick Steuer VERLLF XD2,XD2,8 227b087dfabSPatrick Steuer 228b087dfabSPatrick Steuer VAF XC2,XC2,XD3 229b087dfabSPatrick Steuer VX XB1,XB1,XC2 230b087dfabSPatrick Steuer VERLLF XB1,XB1,7 231b087dfabSPatrick Steuer 232b087dfabSPatrick Steuer VAF XC3,XC3,XD0 233b087dfabSPatrick Steuer VX XB2,XB2,XC3 234b087dfabSPatrick Steuer VERLLF XB2,XB2,7 235b087dfabSPatrick Steuer 236b087dfabSPatrick Steuer VAF XC0,XC0,XD1 237b087dfabSPatrick Steuer VX XB3,XB3,XC0 238b087dfabSPatrick Steuer VERLLF XB3,XB3,7 239b087dfabSPatrick Steuer 240b087dfabSPatrick Steuer VAF XC1,XC1,XD2 241b087dfabSPatrick Steuer VX XB0,XB0,XC1 242b087dfabSPatrick Steuer VERLLF XB0,XB0,7 243b087dfabSPatrick Steuer brct %r0,.Loop_4x 244b087dfabSPatrick Steuer 245b087dfabSPatrick Steuer VAF XD0,XD0,CTR 246b087dfabSPatrick Steuer 247b087dfabSPatrick Steuer VMRHF XT0,XA0,XA1 # transpose data 248b087dfabSPatrick Steuer VMRHF XT1,XA2,XA3 249b087dfabSPatrick Steuer VMRLF XT2,XA0,XA1 250b087dfabSPatrick Steuer VMRLF XT3,XA2,XA3 251b087dfabSPatrick Steuer VPDI XA0,XT0,XT1,0b0000 252b087dfabSPatrick Steuer VPDI XA1,XT0,XT1,0b0101 253b087dfabSPatrick Steuer VPDI XA2,XT2,XT3,0b0000 254b087dfabSPatrick Steuer VPDI XA3,XT2,XT3,0b0101 255b087dfabSPatrick Steuer 256b087dfabSPatrick Steuer VMRHF XT0,XB0,XB1 257b087dfabSPatrick Steuer VMRHF XT1,XB2,XB3 258b087dfabSPatrick Steuer VMRLF XT2,XB0,XB1 259b087dfabSPatrick Steuer VMRLF XT3,XB2,XB3 260b087dfabSPatrick Steuer VPDI XB0,XT0,XT1,0b0000 261b087dfabSPatrick Steuer VPDI XB1,XT0,XT1,0b0101 262b087dfabSPatrick Steuer VPDI XB2,XT2,XT3,0b0000 263b087dfabSPatrick Steuer VPDI XB3,XT2,XT3,0b0101 264b087dfabSPatrick Steuer 265b087dfabSPatrick Steuer VMRHF XT0,XC0,XC1 266b087dfabSPatrick Steuer VMRHF XT1,XC2,XC3 267b087dfabSPatrick Steuer VMRLF XT2,XC0,XC1 268b087dfabSPatrick Steuer VMRLF XT3,XC2,XC3 269b087dfabSPatrick Steuer VPDI XC0,XT0,XT1,0b0000 270b087dfabSPatrick Steuer VPDI XC1,XT0,XT1,0b0101 271b087dfabSPatrick Steuer VPDI XC2,XT2,XT3,0b0000 272b087dfabSPatrick Steuer VPDI XC3,XT2,XT3,0b0101 273b087dfabSPatrick Steuer 274b087dfabSPatrick Steuer VMRHF XT0,XD0,XD1 275b087dfabSPatrick Steuer VMRHF XT1,XD2,XD3 276b087dfabSPatrick Steuer VMRLF XT2,XD0,XD1 277b087dfabSPatrick Steuer VMRLF XT3,XD2,XD3 278b087dfabSPatrick Steuer VPDI XD0,XT0,XT1,0b0000 279b087dfabSPatrick Steuer VPDI XD1,XT0,XT1,0b0101 280b087dfabSPatrick Steuer VPDI XD2,XT2,XT3,0b0000 281b087dfabSPatrick Steuer VPDI XD3,XT2,XT3,0b0101 282b087dfabSPatrick Steuer 283b087dfabSPatrick Steuer VAF XA0,XA0,K0 284b087dfabSPatrick Steuer VAF XB0,XB0,K1 285b087dfabSPatrick Steuer VAF XC0,XC0,K2 286b087dfabSPatrick Steuer VAF XD0,XD0,K3 287b087dfabSPatrick Steuer 288b087dfabSPatrick Steuer VPERM XA0,XA0,XA0,BEPERM 289b087dfabSPatrick Steuer VPERM XB0,XB0,XB0,BEPERM 290b087dfabSPatrick Steuer VPERM XC0,XC0,XC0,BEPERM 291b087dfabSPatrick Steuer VPERM XD0,XD0,XD0,BEPERM 292b087dfabSPatrick Steuer 293b087dfabSPatrick Steuer VLM XT0,XT3,0,INP,0 294b087dfabSPatrick Steuer 295b087dfabSPatrick Steuer VX XT0,XT0,XA0 296b087dfabSPatrick Steuer VX XT1,XT1,XB0 297b087dfabSPatrick Steuer VX XT2,XT2,XC0 298b087dfabSPatrick Steuer VX XT3,XT3,XD0 299b087dfabSPatrick Steuer 300b087dfabSPatrick Steuer VSTM XT0,XT3,0,OUT,0 301b087dfabSPatrick Steuer 302b087dfabSPatrick Steuer la INP,0x40(INP) 303b087dfabSPatrick Steuer la OUT,0x40(OUT) 304b087dfabSPatrick Steuer aghi LEN,-0x40 305b087dfabSPatrick Steuer 306b087dfabSPatrick Steuer VAF XA0,XA1,K0 307b087dfabSPatrick Steuer VAF XB0,XB1,K1 308b087dfabSPatrick Steuer VAF XC0,XC1,K2 309b087dfabSPatrick Steuer VAF XD0,XD1,K3 310b087dfabSPatrick Steuer 311b087dfabSPatrick Steuer VPERM XA0,XA0,XA0,BEPERM 312b087dfabSPatrick Steuer VPERM XB0,XB0,XB0,BEPERM 313b087dfabSPatrick Steuer VPERM XC0,XC0,XC0,BEPERM 314b087dfabSPatrick Steuer VPERM XD0,XD0,XD0,BEPERM 315b087dfabSPatrick Steuer 316731efc96SVasily Gorbik clgfi LEN,0x40 317b087dfabSPatrick Steuer jl .Ltail_4x 318b087dfabSPatrick Steuer 319b087dfabSPatrick Steuer VLM XT0,XT3,0,INP,0 320b087dfabSPatrick Steuer 321b087dfabSPatrick Steuer VX XT0,XT0,XA0 322b087dfabSPatrick Steuer VX XT1,XT1,XB0 323b087dfabSPatrick Steuer VX XT2,XT2,XC0 324b087dfabSPatrick Steuer VX XT3,XT3,XD0 325b087dfabSPatrick Steuer 326b087dfabSPatrick Steuer VSTM XT0,XT3,0,OUT,0 327b087dfabSPatrick Steuer 328b087dfabSPatrick Steuer la INP,0x40(INP) 329b087dfabSPatrick Steuer la OUT,0x40(OUT) 330b087dfabSPatrick Steuer aghi LEN,-0x40 331b087dfabSPatrick Steuer je .Ldone_4x 332b087dfabSPatrick Steuer 333b087dfabSPatrick Steuer VAF XA0,XA2,K0 334b087dfabSPatrick Steuer VAF XB0,XB2,K1 335b087dfabSPatrick Steuer VAF XC0,XC2,K2 336b087dfabSPatrick Steuer VAF XD0,XD2,K3 337b087dfabSPatrick Steuer 338b087dfabSPatrick Steuer VPERM XA0,XA0,XA0,BEPERM 339b087dfabSPatrick Steuer VPERM XB0,XB0,XB0,BEPERM 340b087dfabSPatrick Steuer VPERM XC0,XC0,XC0,BEPERM 341b087dfabSPatrick Steuer VPERM XD0,XD0,XD0,BEPERM 342b087dfabSPatrick Steuer 343731efc96SVasily Gorbik clgfi LEN,0x40 344b087dfabSPatrick Steuer jl .Ltail_4x 345b087dfabSPatrick Steuer 346b087dfabSPatrick Steuer VLM XT0,XT3,0,INP,0 347b087dfabSPatrick Steuer 348b087dfabSPatrick Steuer VX XT0,XT0,XA0 349b087dfabSPatrick Steuer VX XT1,XT1,XB0 350b087dfabSPatrick Steuer VX XT2,XT2,XC0 351b087dfabSPatrick Steuer VX XT3,XT3,XD0 352b087dfabSPatrick Steuer 353b087dfabSPatrick Steuer VSTM XT0,XT3,0,OUT,0 354b087dfabSPatrick Steuer 355b087dfabSPatrick Steuer la INP,0x40(INP) 356b087dfabSPatrick Steuer la OUT,0x40(OUT) 357b087dfabSPatrick Steuer aghi LEN,-0x40 358b087dfabSPatrick Steuer je .Ldone_4x 359b087dfabSPatrick Steuer 360b087dfabSPatrick Steuer VAF XA0,XA3,K0 361b087dfabSPatrick Steuer VAF XB0,XB3,K1 362b087dfabSPatrick Steuer VAF XC0,XC3,K2 363b087dfabSPatrick Steuer VAF XD0,XD3,K3 364b087dfabSPatrick Steuer 365b087dfabSPatrick Steuer VPERM XA0,XA0,XA0,BEPERM 366b087dfabSPatrick Steuer VPERM XB0,XB0,XB0,BEPERM 367b087dfabSPatrick Steuer VPERM XC0,XC0,XC0,BEPERM 368b087dfabSPatrick Steuer VPERM XD0,XD0,XD0,BEPERM 369b087dfabSPatrick Steuer 370731efc96SVasily Gorbik clgfi LEN,0x40 371b087dfabSPatrick Steuer jl .Ltail_4x 372b087dfabSPatrick Steuer 373b087dfabSPatrick Steuer VLM XT0,XT3,0,INP,0 374b087dfabSPatrick Steuer 375b087dfabSPatrick Steuer VX XT0,XT0,XA0 376b087dfabSPatrick Steuer VX XT1,XT1,XB0 377b087dfabSPatrick Steuer VX XT2,XT2,XC0 378b087dfabSPatrick Steuer VX XT3,XT3,XD0 379b087dfabSPatrick Steuer 380b087dfabSPatrick Steuer VSTM XT0,XT3,0,OUT,0 381b087dfabSPatrick Steuer 382b087dfabSPatrick Steuer.Ldone_4x: 383b087dfabSPatrick Steuer lmg %r6,%r7,6*8(SP) 384b087dfabSPatrick Steuer BR_EX %r14 385b087dfabSPatrick Steuer 386b087dfabSPatrick Steuer.Ltail_4x: 387b087dfabSPatrick Steuer VLR XT0,XC0 388b087dfabSPatrick Steuer VLR XT1,XD0 389b087dfabSPatrick Steuer 390b087dfabSPatrick Steuer VST XA0,8*8+0x00,,SP 391b087dfabSPatrick Steuer VST XB0,8*8+0x10,,SP 392b087dfabSPatrick Steuer VST XT0,8*8+0x20,,SP 393b087dfabSPatrick Steuer VST XT1,8*8+0x30,,SP 394b087dfabSPatrick Steuer 395b087dfabSPatrick Steuer lghi %r1,0 396b087dfabSPatrick Steuer 397b087dfabSPatrick Steuer.Loop_tail_4x: 398b087dfabSPatrick Steuer llgc %r5,0(%r1,INP) 399b087dfabSPatrick Steuer llgc %r6,8*8(%r1,SP) 400b087dfabSPatrick Steuer xr %r6,%r5 401b087dfabSPatrick Steuer stc %r6,0(%r1,OUT) 402b087dfabSPatrick Steuer la %r1,1(%r1) 403b087dfabSPatrick Steuer brct LEN,.Loop_tail_4x 404b087dfabSPatrick Steuer 405b087dfabSPatrick Steuer lmg %r6,%r7,6*8(SP) 406b087dfabSPatrick Steuer BR_EX %r14 4073e5e5107SHeiko CarstensSYM_FUNC_END(chacha20_vx_4x) 408b087dfabSPatrick Steuer 409b087dfabSPatrick Steuer#undef OUT 410b087dfabSPatrick Steuer#undef INP 411b087dfabSPatrick Steuer#undef LEN 412b087dfabSPatrick Steuer#undef KEY 413b087dfabSPatrick Steuer#undef COUNTER 414b087dfabSPatrick Steuer 415b087dfabSPatrick Steuer#undef BEPERM 416b087dfabSPatrick Steuer 417b087dfabSPatrick Steuer#undef K0 418b087dfabSPatrick Steuer#undef K1 419b087dfabSPatrick Steuer#undef K2 420b087dfabSPatrick Steuer#undef K3 421b087dfabSPatrick Steuer 422b087dfabSPatrick Steuer 423b087dfabSPatrick Steuer############################################################################# 424b087dfabSPatrick Steuer# void chacha20_vx(u8 *out, counst u8 *inp, size_t len, 425b087dfabSPatrick Steuer# counst u32 *key, const u32 *counter) 426b087dfabSPatrick Steuer 427b087dfabSPatrick Steuer#define OUT %r2 428b087dfabSPatrick Steuer#define INP %r3 429b087dfabSPatrick Steuer#define LEN %r4 430b087dfabSPatrick Steuer#define KEY %r5 431b087dfabSPatrick Steuer#define COUNTER %r6 432b087dfabSPatrick Steuer 433b087dfabSPatrick Steuer#define BEPERM %v31 434b087dfabSPatrick Steuer 435b087dfabSPatrick Steuer#define K0 %v27 436b087dfabSPatrick Steuer#define K1 %v24 437b087dfabSPatrick Steuer#define K2 %v25 438b087dfabSPatrick Steuer#define K3 %v26 439b087dfabSPatrick Steuer 440b087dfabSPatrick Steuer#define A0 %v0 441b087dfabSPatrick Steuer#define B0 %v1 442b087dfabSPatrick Steuer#define C0 %v2 443b087dfabSPatrick Steuer#define D0 %v3 444b087dfabSPatrick Steuer 445b087dfabSPatrick Steuer#define A1 %v4 446b087dfabSPatrick Steuer#define B1 %v5 447b087dfabSPatrick Steuer#define C1 %v6 448b087dfabSPatrick Steuer#define D1 %v7 449b087dfabSPatrick Steuer 450b087dfabSPatrick Steuer#define A2 %v8 451b087dfabSPatrick Steuer#define B2 %v9 452b087dfabSPatrick Steuer#define C2 %v10 453b087dfabSPatrick Steuer#define D2 %v11 454b087dfabSPatrick Steuer 455b087dfabSPatrick Steuer#define A3 %v12 456b087dfabSPatrick Steuer#define B3 %v13 457b087dfabSPatrick Steuer#define C3 %v14 458b087dfabSPatrick Steuer#define D3 %v15 459b087dfabSPatrick Steuer 460b087dfabSPatrick Steuer#define A4 %v16 461b087dfabSPatrick Steuer#define B4 %v17 462b087dfabSPatrick Steuer#define C4 %v18 463b087dfabSPatrick Steuer#define D4 %v19 464b087dfabSPatrick Steuer 465b087dfabSPatrick Steuer#define A5 %v20 466b087dfabSPatrick Steuer#define B5 %v21 467b087dfabSPatrick Steuer#define C5 %v22 468b087dfabSPatrick Steuer#define D5 %v23 469b087dfabSPatrick Steuer 470b087dfabSPatrick Steuer#define T0 %v27 471b087dfabSPatrick Steuer#define T1 %v28 472b087dfabSPatrick Steuer#define T2 %v29 473b087dfabSPatrick Steuer#define T3 %v30 474b087dfabSPatrick Steuer 4753e5e5107SHeiko CarstensSYM_FUNC_START(chacha20_vx) 476731efc96SVasily Gorbik clgfi LEN,256 477b087dfabSPatrick Steuer jle chacha20_vx_4x 478b087dfabSPatrick Steuer stmg %r6,%r7,6*8(SP) 479b087dfabSPatrick Steuer 480b087dfabSPatrick Steuer lghi %r1,-FRAME 481b087dfabSPatrick Steuer lgr %r0,SP 482b087dfabSPatrick Steuer la SP,0(%r1,SP) 483b087dfabSPatrick Steuer stg %r0,0(SP) # back-chain 484b087dfabSPatrick Steuer 4853e5e5107SHeiko Carstens larl %r7,sigma 486b087dfabSPatrick Steuer lhi %r0,10 487b087dfabSPatrick Steuer 488b087dfabSPatrick Steuer VLM K1,K2,0,KEY,0 # load key 489b087dfabSPatrick Steuer VL K3,0,,COUNTER # load counter 490b087dfabSPatrick Steuer 491b087dfabSPatrick Steuer VLM K0,BEPERM,0,%r7,4 # load sigma, increments, ... 492b087dfabSPatrick Steuer 493b087dfabSPatrick Steuer.Loop_outer_vx: 494b087dfabSPatrick Steuer VLR A0,K0 495b087dfabSPatrick Steuer VLR B0,K1 496b087dfabSPatrick Steuer VLR A1,K0 497b087dfabSPatrick Steuer VLR B1,K1 498b087dfabSPatrick Steuer VLR A2,K0 499b087dfabSPatrick Steuer VLR B2,K1 500b087dfabSPatrick Steuer VLR A3,K0 501b087dfabSPatrick Steuer VLR B3,K1 502b087dfabSPatrick Steuer VLR A4,K0 503b087dfabSPatrick Steuer VLR B4,K1 504b087dfabSPatrick Steuer VLR A5,K0 505b087dfabSPatrick Steuer VLR B5,K1 506b087dfabSPatrick Steuer 507b087dfabSPatrick Steuer VLR D0,K3 508b087dfabSPatrick Steuer VAF D1,K3,T1 # K[3]+1 509b087dfabSPatrick Steuer VAF D2,K3,T2 # K[3]+2 510b087dfabSPatrick Steuer VAF D3,K3,T3 # K[3]+3 511b087dfabSPatrick Steuer VAF D4,D2,T2 # K[3]+4 512b087dfabSPatrick Steuer VAF D5,D2,T3 # K[3]+5 513b087dfabSPatrick Steuer 514b087dfabSPatrick Steuer VLR C0,K2 515b087dfabSPatrick Steuer VLR C1,K2 516b087dfabSPatrick Steuer VLR C2,K2 517b087dfabSPatrick Steuer VLR C3,K2 518b087dfabSPatrick Steuer VLR C4,K2 519b087dfabSPatrick Steuer VLR C5,K2 520b087dfabSPatrick Steuer 521b087dfabSPatrick Steuer VLR T1,D1 522b087dfabSPatrick Steuer VLR T2,D2 523b087dfabSPatrick Steuer VLR T3,D3 524b087dfabSPatrick Steuer 525b087dfabSPatrick Steuer.Loop_vx: 526b087dfabSPatrick Steuer VAF A0,A0,B0 527b087dfabSPatrick Steuer VAF A1,A1,B1 528b087dfabSPatrick Steuer VAF A2,A2,B2 529b087dfabSPatrick Steuer VAF A3,A3,B3 530b087dfabSPatrick Steuer VAF A4,A4,B4 531b087dfabSPatrick Steuer VAF A5,A5,B5 532b087dfabSPatrick Steuer VX D0,D0,A0 533b087dfabSPatrick Steuer VX D1,D1,A1 534b087dfabSPatrick Steuer VX D2,D2,A2 535b087dfabSPatrick Steuer VX D3,D3,A3 536b087dfabSPatrick Steuer VX D4,D4,A4 537b087dfabSPatrick Steuer VX D5,D5,A5 538b087dfabSPatrick Steuer VERLLF D0,D0,16 539b087dfabSPatrick Steuer VERLLF D1,D1,16 540b087dfabSPatrick Steuer VERLLF D2,D2,16 541b087dfabSPatrick Steuer VERLLF D3,D3,16 542b087dfabSPatrick Steuer VERLLF D4,D4,16 543b087dfabSPatrick Steuer VERLLF D5,D5,16 544b087dfabSPatrick Steuer 545b087dfabSPatrick Steuer VAF C0,C0,D0 546b087dfabSPatrick Steuer VAF C1,C1,D1 547b087dfabSPatrick Steuer VAF C2,C2,D2 548b087dfabSPatrick Steuer VAF C3,C3,D3 549b087dfabSPatrick Steuer VAF C4,C4,D4 550b087dfabSPatrick Steuer VAF C5,C5,D5 551b087dfabSPatrick Steuer VX B0,B0,C0 552b087dfabSPatrick Steuer VX B1,B1,C1 553b087dfabSPatrick Steuer VX B2,B2,C2 554b087dfabSPatrick Steuer VX B3,B3,C3 555b087dfabSPatrick Steuer VX B4,B4,C4 556b087dfabSPatrick Steuer VX B5,B5,C5 557b087dfabSPatrick Steuer VERLLF B0,B0,12 558b087dfabSPatrick Steuer VERLLF B1,B1,12 559b087dfabSPatrick Steuer VERLLF B2,B2,12 560b087dfabSPatrick Steuer VERLLF B3,B3,12 561b087dfabSPatrick Steuer VERLLF B4,B4,12 562b087dfabSPatrick Steuer VERLLF B5,B5,12 563b087dfabSPatrick Steuer 564b087dfabSPatrick Steuer VAF A0,A0,B0 565b087dfabSPatrick Steuer VAF A1,A1,B1 566b087dfabSPatrick Steuer VAF A2,A2,B2 567b087dfabSPatrick Steuer VAF A3,A3,B3 568b087dfabSPatrick Steuer VAF A4,A4,B4 569b087dfabSPatrick Steuer VAF A5,A5,B5 570b087dfabSPatrick Steuer VX D0,D0,A0 571b087dfabSPatrick Steuer VX D1,D1,A1 572b087dfabSPatrick Steuer VX D2,D2,A2 573b087dfabSPatrick Steuer VX D3,D3,A3 574b087dfabSPatrick Steuer VX D4,D4,A4 575b087dfabSPatrick Steuer VX D5,D5,A5 576b087dfabSPatrick Steuer VERLLF D0,D0,8 577b087dfabSPatrick Steuer VERLLF D1,D1,8 578b087dfabSPatrick Steuer VERLLF D2,D2,8 579b087dfabSPatrick Steuer VERLLF D3,D3,8 580b087dfabSPatrick Steuer VERLLF D4,D4,8 581b087dfabSPatrick Steuer VERLLF D5,D5,8 582b087dfabSPatrick Steuer 583b087dfabSPatrick Steuer VAF C0,C0,D0 584b087dfabSPatrick Steuer VAF C1,C1,D1 585b087dfabSPatrick Steuer VAF C2,C2,D2 586b087dfabSPatrick Steuer VAF C3,C3,D3 587b087dfabSPatrick Steuer VAF C4,C4,D4 588b087dfabSPatrick Steuer VAF C5,C5,D5 589b087dfabSPatrick Steuer VX B0,B0,C0 590b087dfabSPatrick Steuer VX B1,B1,C1 591b087dfabSPatrick Steuer VX B2,B2,C2 592b087dfabSPatrick Steuer VX B3,B3,C3 593b087dfabSPatrick Steuer VX B4,B4,C4 594b087dfabSPatrick Steuer VX B5,B5,C5 595b087dfabSPatrick Steuer VERLLF B0,B0,7 596b087dfabSPatrick Steuer VERLLF B1,B1,7 597b087dfabSPatrick Steuer VERLLF B2,B2,7 598b087dfabSPatrick Steuer VERLLF B3,B3,7 599b087dfabSPatrick Steuer VERLLF B4,B4,7 600b087dfabSPatrick Steuer VERLLF B5,B5,7 601b087dfabSPatrick Steuer 602b087dfabSPatrick Steuer VSLDB C0,C0,C0,8 603b087dfabSPatrick Steuer VSLDB C1,C1,C1,8 604b087dfabSPatrick Steuer VSLDB C2,C2,C2,8 605b087dfabSPatrick Steuer VSLDB C3,C3,C3,8 606b087dfabSPatrick Steuer VSLDB C4,C4,C4,8 607b087dfabSPatrick Steuer VSLDB C5,C5,C5,8 608b087dfabSPatrick Steuer VSLDB B0,B0,B0,4 609b087dfabSPatrick Steuer VSLDB B1,B1,B1,4 610b087dfabSPatrick Steuer VSLDB B2,B2,B2,4 611b087dfabSPatrick Steuer VSLDB B3,B3,B3,4 612b087dfabSPatrick Steuer VSLDB B4,B4,B4,4 613b087dfabSPatrick Steuer VSLDB B5,B5,B5,4 614b087dfabSPatrick Steuer VSLDB D0,D0,D0,12 615b087dfabSPatrick Steuer VSLDB D1,D1,D1,12 616b087dfabSPatrick Steuer VSLDB D2,D2,D2,12 617b087dfabSPatrick Steuer VSLDB D3,D3,D3,12 618b087dfabSPatrick Steuer VSLDB D4,D4,D4,12 619b087dfabSPatrick Steuer VSLDB D5,D5,D5,12 620b087dfabSPatrick Steuer 621b087dfabSPatrick Steuer VAF A0,A0,B0 622b087dfabSPatrick Steuer VAF A1,A1,B1 623b087dfabSPatrick Steuer VAF A2,A2,B2 624b087dfabSPatrick Steuer VAF A3,A3,B3 625b087dfabSPatrick Steuer VAF A4,A4,B4 626b087dfabSPatrick Steuer VAF A5,A5,B5 627b087dfabSPatrick Steuer VX D0,D0,A0 628b087dfabSPatrick Steuer VX D1,D1,A1 629b087dfabSPatrick Steuer VX D2,D2,A2 630b087dfabSPatrick Steuer VX D3,D3,A3 631b087dfabSPatrick Steuer VX D4,D4,A4 632b087dfabSPatrick Steuer VX D5,D5,A5 633b087dfabSPatrick Steuer VERLLF D0,D0,16 634b087dfabSPatrick Steuer VERLLF D1,D1,16 635b087dfabSPatrick Steuer VERLLF D2,D2,16 636b087dfabSPatrick Steuer VERLLF D3,D3,16 637b087dfabSPatrick Steuer VERLLF D4,D4,16 638b087dfabSPatrick Steuer VERLLF D5,D5,16 639b087dfabSPatrick Steuer 640b087dfabSPatrick Steuer VAF C0,C0,D0 641b087dfabSPatrick Steuer VAF C1,C1,D1 642b087dfabSPatrick Steuer VAF C2,C2,D2 643b087dfabSPatrick Steuer VAF C3,C3,D3 644b087dfabSPatrick Steuer VAF C4,C4,D4 645b087dfabSPatrick Steuer VAF C5,C5,D5 646b087dfabSPatrick Steuer VX B0,B0,C0 647b087dfabSPatrick Steuer VX B1,B1,C1 648b087dfabSPatrick Steuer VX B2,B2,C2 649b087dfabSPatrick Steuer VX B3,B3,C3 650b087dfabSPatrick Steuer VX B4,B4,C4 651b087dfabSPatrick Steuer VX B5,B5,C5 652b087dfabSPatrick Steuer VERLLF B0,B0,12 653b087dfabSPatrick Steuer VERLLF B1,B1,12 654b087dfabSPatrick Steuer VERLLF B2,B2,12 655b087dfabSPatrick Steuer VERLLF B3,B3,12 656b087dfabSPatrick Steuer VERLLF B4,B4,12 657b087dfabSPatrick Steuer VERLLF B5,B5,12 658b087dfabSPatrick Steuer 659b087dfabSPatrick Steuer VAF A0,A0,B0 660b087dfabSPatrick Steuer VAF A1,A1,B1 661b087dfabSPatrick Steuer VAF A2,A2,B2 662b087dfabSPatrick Steuer VAF A3,A3,B3 663b087dfabSPatrick Steuer VAF A4,A4,B4 664b087dfabSPatrick Steuer VAF A5,A5,B5 665b087dfabSPatrick Steuer VX D0,D0,A0 666b087dfabSPatrick Steuer VX D1,D1,A1 667b087dfabSPatrick Steuer VX D2,D2,A2 668b087dfabSPatrick Steuer VX D3,D3,A3 669b087dfabSPatrick Steuer VX D4,D4,A4 670b087dfabSPatrick Steuer VX D5,D5,A5 671b087dfabSPatrick Steuer VERLLF D0,D0,8 672b087dfabSPatrick Steuer VERLLF D1,D1,8 673b087dfabSPatrick Steuer VERLLF D2,D2,8 674b087dfabSPatrick Steuer VERLLF D3,D3,8 675b087dfabSPatrick Steuer VERLLF D4,D4,8 676b087dfabSPatrick Steuer VERLLF D5,D5,8 677b087dfabSPatrick Steuer 678b087dfabSPatrick Steuer VAF C0,C0,D0 679b087dfabSPatrick Steuer VAF C1,C1,D1 680b087dfabSPatrick Steuer VAF C2,C2,D2 681b087dfabSPatrick Steuer VAF C3,C3,D3 682b087dfabSPatrick Steuer VAF C4,C4,D4 683b087dfabSPatrick Steuer VAF C5,C5,D5 684b087dfabSPatrick Steuer VX B0,B0,C0 685b087dfabSPatrick Steuer VX B1,B1,C1 686b087dfabSPatrick Steuer VX B2,B2,C2 687b087dfabSPatrick Steuer VX B3,B3,C3 688b087dfabSPatrick Steuer VX B4,B4,C4 689b087dfabSPatrick Steuer VX B5,B5,C5 690b087dfabSPatrick Steuer VERLLF B0,B0,7 691b087dfabSPatrick Steuer VERLLF B1,B1,7 692b087dfabSPatrick Steuer VERLLF B2,B2,7 693b087dfabSPatrick Steuer VERLLF B3,B3,7 694b087dfabSPatrick Steuer VERLLF B4,B4,7 695b087dfabSPatrick Steuer VERLLF B5,B5,7 696b087dfabSPatrick Steuer 697b087dfabSPatrick Steuer VSLDB C0,C0,C0,8 698b087dfabSPatrick Steuer VSLDB C1,C1,C1,8 699b087dfabSPatrick Steuer VSLDB C2,C2,C2,8 700b087dfabSPatrick Steuer VSLDB C3,C3,C3,8 701b087dfabSPatrick Steuer VSLDB C4,C4,C4,8 702b087dfabSPatrick Steuer VSLDB C5,C5,C5,8 703b087dfabSPatrick Steuer VSLDB B0,B0,B0,12 704b087dfabSPatrick Steuer VSLDB B1,B1,B1,12 705b087dfabSPatrick Steuer VSLDB B2,B2,B2,12 706b087dfabSPatrick Steuer VSLDB B3,B3,B3,12 707b087dfabSPatrick Steuer VSLDB B4,B4,B4,12 708b087dfabSPatrick Steuer VSLDB B5,B5,B5,12 709b087dfabSPatrick Steuer VSLDB D0,D0,D0,4 710b087dfabSPatrick Steuer VSLDB D1,D1,D1,4 711b087dfabSPatrick Steuer VSLDB D2,D2,D2,4 712b087dfabSPatrick Steuer VSLDB D3,D3,D3,4 713b087dfabSPatrick Steuer VSLDB D4,D4,D4,4 714b087dfabSPatrick Steuer VSLDB D5,D5,D5,4 715b087dfabSPatrick Steuer brct %r0,.Loop_vx 716b087dfabSPatrick Steuer 717b087dfabSPatrick Steuer VAF A0,A0,K0 718b087dfabSPatrick Steuer VAF B0,B0,K1 719b087dfabSPatrick Steuer VAF C0,C0,K2 720b087dfabSPatrick Steuer VAF D0,D0,K3 721b087dfabSPatrick Steuer VAF A1,A1,K0 722b087dfabSPatrick Steuer VAF D1,D1,T1 # +K[3]+1 723b087dfabSPatrick Steuer 724b087dfabSPatrick Steuer VPERM A0,A0,A0,BEPERM 725b087dfabSPatrick Steuer VPERM B0,B0,B0,BEPERM 726b087dfabSPatrick Steuer VPERM C0,C0,C0,BEPERM 727b087dfabSPatrick Steuer VPERM D0,D0,D0,BEPERM 728b087dfabSPatrick Steuer 729731efc96SVasily Gorbik clgfi LEN,0x40 730b087dfabSPatrick Steuer jl .Ltail_vx 731b087dfabSPatrick Steuer 732b087dfabSPatrick Steuer VAF D2,D2,T2 # +K[3]+2 733b087dfabSPatrick Steuer VAF D3,D3,T3 # +K[3]+3 734b087dfabSPatrick Steuer VLM T0,T3,0,INP,0 735b087dfabSPatrick Steuer 736b087dfabSPatrick Steuer VX A0,A0,T0 737b087dfabSPatrick Steuer VX B0,B0,T1 738b087dfabSPatrick Steuer VX C0,C0,T2 739b087dfabSPatrick Steuer VX D0,D0,T3 740b087dfabSPatrick Steuer 741b087dfabSPatrick Steuer VLM K0,T3,0,%r7,4 # re-load sigma and increments 742b087dfabSPatrick Steuer 743b087dfabSPatrick Steuer VSTM A0,D0,0,OUT,0 744b087dfabSPatrick Steuer 745b087dfabSPatrick Steuer la INP,0x40(INP) 746b087dfabSPatrick Steuer la OUT,0x40(OUT) 747b087dfabSPatrick Steuer aghi LEN,-0x40 748b087dfabSPatrick Steuer je .Ldone_vx 749b087dfabSPatrick Steuer 750b087dfabSPatrick Steuer VAF B1,B1,K1 751b087dfabSPatrick Steuer VAF C1,C1,K2 752b087dfabSPatrick Steuer 753b087dfabSPatrick Steuer VPERM A0,A1,A1,BEPERM 754b087dfabSPatrick Steuer VPERM B0,B1,B1,BEPERM 755b087dfabSPatrick Steuer VPERM C0,C1,C1,BEPERM 756b087dfabSPatrick Steuer VPERM D0,D1,D1,BEPERM 757b087dfabSPatrick Steuer 758731efc96SVasily Gorbik clgfi LEN,0x40 759b087dfabSPatrick Steuer jl .Ltail_vx 760b087dfabSPatrick Steuer 761b087dfabSPatrick Steuer VLM A1,D1,0,INP,0 762b087dfabSPatrick Steuer 763b087dfabSPatrick Steuer VX A0,A0,A1 764b087dfabSPatrick Steuer VX B0,B0,B1 765b087dfabSPatrick Steuer VX C0,C0,C1 766b087dfabSPatrick Steuer VX D0,D0,D1 767b087dfabSPatrick Steuer 768b087dfabSPatrick Steuer VSTM A0,D0,0,OUT,0 769b087dfabSPatrick Steuer 770b087dfabSPatrick Steuer la INP,0x40(INP) 771b087dfabSPatrick Steuer la OUT,0x40(OUT) 772b087dfabSPatrick Steuer aghi LEN,-0x40 773b087dfabSPatrick Steuer je .Ldone_vx 774b087dfabSPatrick Steuer 775b087dfabSPatrick Steuer VAF A2,A2,K0 776b087dfabSPatrick Steuer VAF B2,B2,K1 777b087dfabSPatrick Steuer VAF C2,C2,K2 778b087dfabSPatrick Steuer 779b087dfabSPatrick Steuer VPERM A0,A2,A2,BEPERM 780b087dfabSPatrick Steuer VPERM B0,B2,B2,BEPERM 781b087dfabSPatrick Steuer VPERM C0,C2,C2,BEPERM 782b087dfabSPatrick Steuer VPERM D0,D2,D2,BEPERM 783b087dfabSPatrick Steuer 784731efc96SVasily Gorbik clgfi LEN,0x40 785b087dfabSPatrick Steuer jl .Ltail_vx 786b087dfabSPatrick Steuer 787b087dfabSPatrick Steuer VLM A1,D1,0,INP,0 788b087dfabSPatrick Steuer 789b087dfabSPatrick Steuer VX A0,A0,A1 790b087dfabSPatrick Steuer VX B0,B0,B1 791b087dfabSPatrick Steuer VX C0,C0,C1 792b087dfabSPatrick Steuer VX D0,D0,D1 793b087dfabSPatrick Steuer 794b087dfabSPatrick Steuer VSTM A0,D0,0,OUT,0 795b087dfabSPatrick Steuer 796b087dfabSPatrick Steuer la INP,0x40(INP) 797b087dfabSPatrick Steuer la OUT,0x40(OUT) 798b087dfabSPatrick Steuer aghi LEN,-0x40 799b087dfabSPatrick Steuer je .Ldone_vx 800b087dfabSPatrick Steuer 801b087dfabSPatrick Steuer VAF A3,A3,K0 802b087dfabSPatrick Steuer VAF B3,B3,K1 803b087dfabSPatrick Steuer VAF C3,C3,K2 804b087dfabSPatrick Steuer VAF D2,K3,T3 # K[3]+3 805b087dfabSPatrick Steuer 806b087dfabSPatrick Steuer VPERM A0,A3,A3,BEPERM 807b087dfabSPatrick Steuer VPERM B0,B3,B3,BEPERM 808b087dfabSPatrick Steuer VPERM C0,C3,C3,BEPERM 809b087dfabSPatrick Steuer VPERM D0,D3,D3,BEPERM 810b087dfabSPatrick Steuer 811731efc96SVasily Gorbik clgfi LEN,0x40 812b087dfabSPatrick Steuer jl .Ltail_vx 813b087dfabSPatrick Steuer 814b087dfabSPatrick Steuer VAF D3,D2,T1 # K[3]+4 815b087dfabSPatrick Steuer VLM A1,D1,0,INP,0 816b087dfabSPatrick Steuer 817b087dfabSPatrick Steuer VX A0,A0,A1 818b087dfabSPatrick Steuer VX B0,B0,B1 819b087dfabSPatrick Steuer VX C0,C0,C1 820b087dfabSPatrick Steuer VX D0,D0,D1 821b087dfabSPatrick Steuer 822b087dfabSPatrick Steuer VSTM A0,D0,0,OUT,0 823b087dfabSPatrick Steuer 824b087dfabSPatrick Steuer la INP,0x40(INP) 825b087dfabSPatrick Steuer la OUT,0x40(OUT) 826b087dfabSPatrick Steuer aghi LEN,-0x40 827b087dfabSPatrick Steuer je .Ldone_vx 828b087dfabSPatrick Steuer 829b087dfabSPatrick Steuer VAF A4,A4,K0 830b087dfabSPatrick Steuer VAF B4,B4,K1 831b087dfabSPatrick Steuer VAF C4,C4,K2 832b087dfabSPatrick Steuer VAF D4,D4,D3 # +K[3]+4 833b087dfabSPatrick Steuer VAF D3,D3,T1 # K[3]+5 834b087dfabSPatrick Steuer VAF K3,D2,T3 # K[3]+=6 835b087dfabSPatrick Steuer 836b087dfabSPatrick Steuer VPERM A0,A4,A4,BEPERM 837b087dfabSPatrick Steuer VPERM B0,B4,B4,BEPERM 838b087dfabSPatrick Steuer VPERM C0,C4,C4,BEPERM 839b087dfabSPatrick Steuer VPERM D0,D4,D4,BEPERM 840b087dfabSPatrick Steuer 841731efc96SVasily Gorbik clgfi LEN,0x40 842b087dfabSPatrick Steuer jl .Ltail_vx 843b087dfabSPatrick Steuer 844b087dfabSPatrick Steuer VLM A1,D1,0,INP,0 845b087dfabSPatrick Steuer 846b087dfabSPatrick Steuer VX A0,A0,A1 847b087dfabSPatrick Steuer VX B0,B0,B1 848b087dfabSPatrick Steuer VX C0,C0,C1 849b087dfabSPatrick Steuer VX D0,D0,D1 850b087dfabSPatrick Steuer 851b087dfabSPatrick Steuer VSTM A0,D0,0,OUT,0 852b087dfabSPatrick Steuer 853b087dfabSPatrick Steuer la INP,0x40(INP) 854b087dfabSPatrick Steuer la OUT,0x40(OUT) 855b087dfabSPatrick Steuer aghi LEN,-0x40 856b087dfabSPatrick Steuer je .Ldone_vx 857b087dfabSPatrick Steuer 858b087dfabSPatrick Steuer VAF A5,A5,K0 859b087dfabSPatrick Steuer VAF B5,B5,K1 860b087dfabSPatrick Steuer VAF C5,C5,K2 861b087dfabSPatrick Steuer VAF D5,D5,D3 # +K[3]+5 862b087dfabSPatrick Steuer 863b087dfabSPatrick Steuer VPERM A0,A5,A5,BEPERM 864b087dfabSPatrick Steuer VPERM B0,B5,B5,BEPERM 865b087dfabSPatrick Steuer VPERM C0,C5,C5,BEPERM 866b087dfabSPatrick Steuer VPERM D0,D5,D5,BEPERM 867b087dfabSPatrick Steuer 868731efc96SVasily Gorbik clgfi LEN,0x40 869b087dfabSPatrick Steuer jl .Ltail_vx 870b087dfabSPatrick Steuer 871b087dfabSPatrick Steuer VLM A1,D1,0,INP,0 872b087dfabSPatrick Steuer 873b087dfabSPatrick Steuer VX A0,A0,A1 874b087dfabSPatrick Steuer VX B0,B0,B1 875b087dfabSPatrick Steuer VX C0,C0,C1 876b087dfabSPatrick Steuer VX D0,D0,D1 877b087dfabSPatrick Steuer 878b087dfabSPatrick Steuer VSTM A0,D0,0,OUT,0 879b087dfabSPatrick Steuer 880b087dfabSPatrick Steuer la INP,0x40(INP) 881b087dfabSPatrick Steuer la OUT,0x40(OUT) 882b087dfabSPatrick Steuer lhi %r0,10 883b087dfabSPatrick Steuer aghi LEN,-0x40 884b087dfabSPatrick Steuer jne .Loop_outer_vx 885b087dfabSPatrick Steuer 886b087dfabSPatrick Steuer.Ldone_vx: 887b087dfabSPatrick Steuer lmg %r6,%r7,FRAME+6*8(SP) 888b087dfabSPatrick Steuer la SP,FRAME(SP) 889b087dfabSPatrick Steuer BR_EX %r14 890b087dfabSPatrick Steuer 891b087dfabSPatrick Steuer.Ltail_vx: 892b087dfabSPatrick Steuer VSTM A0,D0,8*8,SP,3 893b087dfabSPatrick Steuer lghi %r1,0 894b087dfabSPatrick Steuer 895b087dfabSPatrick Steuer.Loop_tail_vx: 896b087dfabSPatrick Steuer llgc %r5,0(%r1,INP) 897b087dfabSPatrick Steuer llgc %r6,8*8(%r1,SP) 898b087dfabSPatrick Steuer xr %r6,%r5 899b087dfabSPatrick Steuer stc %r6,0(%r1,OUT) 900b087dfabSPatrick Steuer la %r1,1(%r1) 901b087dfabSPatrick Steuer brct LEN,.Loop_tail_vx 902b087dfabSPatrick Steuer 903b087dfabSPatrick Steuer lmg %r6,%r7,FRAME+6*8(SP) 904b087dfabSPatrick Steuer la SP,FRAME(SP) 905b087dfabSPatrick Steuer BR_EX %r14 9063e5e5107SHeiko CarstensSYM_FUNC_END(chacha20_vx) 907b087dfabSPatrick Steuer 908b087dfabSPatrick Steuer.previous 909