162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#include <linux/export.h>
462306a36Sopenharmony_ci#include <linux/linkage.h>
562306a36Sopenharmony_ci#include <asm/nospec-insn.h>
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci	.section .noinstr.text, "ax"
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci	GEN_BR_THUNK %r14
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciSYM_FUNC_START(__ashlti3)
1262306a36Sopenharmony_ci	lmg	%r0,%r1,0(%r3)
1362306a36Sopenharmony_ci	cije	%r4,0,1f
1462306a36Sopenharmony_ci	lhi	%r3,64
1562306a36Sopenharmony_ci	sr	%r3,%r4
1662306a36Sopenharmony_ci	jnh	0f
1762306a36Sopenharmony_ci	srlg	%r3,%r1,0(%r3)
1862306a36Sopenharmony_ci	sllg	%r0,%r0,0(%r4)
1962306a36Sopenharmony_ci	sllg	%r1,%r1,0(%r4)
2062306a36Sopenharmony_ci	ogr	%r0,%r3
2162306a36Sopenharmony_ci	j	1f
2262306a36Sopenharmony_ci0:	sllg	%r0,%r1,-64(%r4)
2362306a36Sopenharmony_ci	lghi	%r1,0
2462306a36Sopenharmony_ci1:	stmg	%r0,%r1,0(%r2)
2562306a36Sopenharmony_ci	BR_EX	%r14
2662306a36Sopenharmony_ciSYM_FUNC_END(__ashlti3)
2762306a36Sopenharmony_ciEXPORT_SYMBOL(__ashlti3)
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciSYM_FUNC_START(__ashrti3)
3062306a36Sopenharmony_ci	lmg	%r0,%r1,0(%r3)
3162306a36Sopenharmony_ci	cije	%r4,0,1f
3262306a36Sopenharmony_ci	lhi	%r3,64
3362306a36Sopenharmony_ci	sr	%r3,%r4
3462306a36Sopenharmony_ci	jnh	0f
3562306a36Sopenharmony_ci	sllg	%r3,%r0,0(%r3)
3662306a36Sopenharmony_ci	srlg	%r1,%r1,0(%r4)
3762306a36Sopenharmony_ci	srag	%r0,%r0,0(%r4)
3862306a36Sopenharmony_ci	ogr	%r1,%r3
3962306a36Sopenharmony_ci	j	1f
4062306a36Sopenharmony_ci0:	srag	%r1,%r0,-64(%r4)
4162306a36Sopenharmony_ci	srag	%r0,%r0,63
4262306a36Sopenharmony_ci1:	stmg	%r0,%r1,0(%r2)
4362306a36Sopenharmony_ci	BR_EX	%r14
4462306a36Sopenharmony_ciSYM_FUNC_END(__ashrti3)
4562306a36Sopenharmony_ciEXPORT_SYMBOL(__ashrti3)
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciSYM_FUNC_START(__lshrti3)
4862306a36Sopenharmony_ci	lmg	%r0,%r1,0(%r3)
4962306a36Sopenharmony_ci	cije	%r4,0,1f
5062306a36Sopenharmony_ci	lhi	%r3,64
5162306a36Sopenharmony_ci	sr	%r3,%r4
5262306a36Sopenharmony_ci	jnh	0f
5362306a36Sopenharmony_ci	sllg	%r3,%r0,0(%r3)
5462306a36Sopenharmony_ci	srlg	%r1,%r1,0(%r4)
5562306a36Sopenharmony_ci	srlg	%r0,%r0,0(%r4)
5662306a36Sopenharmony_ci	ogr	%r1,%r3
5762306a36Sopenharmony_ci	j	1f
5862306a36Sopenharmony_ci0:	srlg	%r1,%r0,-64(%r4)
5962306a36Sopenharmony_ci	lghi	%r0,0
6062306a36Sopenharmony_ci1:	stmg	%r0,%r1,0(%r2)
6162306a36Sopenharmony_ci	BR_EX	%r14
6262306a36Sopenharmony_ciSYM_FUNC_END(__lshrti3)
6362306a36Sopenharmony_ciEXPORT_SYMBOL(__lshrti3)
64