diff options
| -rw-r--r-- | arch/s390/include/asm/fpu-insn.h | 168 | 
1 files changed, 84 insertions, 84 deletions
| diff --git a/arch/s390/include/asm/fpu-insn.h b/arch/s390/include/asm/fpu-insn.h index 0f1b59eb4c5a..f668bffd6dd3 100644 --- a/arch/s390/include/asm/fpu-insn.h +++ b/arch/s390/include/asm/fpu-insn.h @@ -176,7 +176,19 @@ static __always_inline void fpu_vgfmg(u8 v1, u8 v2, u8 v3)  		     : "memory");  } -#ifdef CONFIG_CC_IS_CLANG +#ifdef CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS + +static __always_inline void fpu_vl(u8 v1, const void *vxr) +{ +	instrument_read(vxr, sizeof(__vector128)); +	asm volatile("VL	%[v1],%O[vxr],,%R[vxr]\n" +		     : +		     : [vxr] "Q" (*(__vector128 *)vxr), +		       [v1] "I" (v1) +		     : "memory"); +} + +#else /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  static __always_inline void fpu_vl(u8 v1, const void *vxr)  { @@ -190,19 +202,7 @@ static __always_inline void fpu_vl(u8 v1, const void *vxr)  		: "memory", "1");  } -#else /* CONFIG_CC_IS_CLANG */ - -static __always_inline void fpu_vl(u8 v1, const void *vxr) -{ -	instrument_read(vxr, sizeof(__vector128)); -	asm volatile("VL	%[v1],%O[vxr],,%R[vxr]\n" -		     : -		     : [vxr] "Q" (*(__vector128 *)vxr), -		       [v1] "I" (v1) -		     : "memory"); -} - -#endif /* CONFIG_CC_IS_CLANG */ +#endif /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  static __always_inline void fpu_vleib(u8 v, s16 val, u8 index)  { @@ -231,7 +231,7 @@ static __always_inline u64 fpu_vlgvf(u8 v, u16 index)  	return val;  } -#ifdef CONFIG_CC_IS_CLANG +#ifdef CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS  static __always_inline void fpu_vll(u8 v1, u32 index, const void *vxr)  { @@ -239,17 +239,15 @@ static __always_inline void fpu_vll(u8 v1, u32 index, const void *vxr)  	size = min(index + 1, sizeof(__vector128));  	instrument_read(vxr, size); -	asm volatile( -		"	la	1,%[vxr]\n" -		"	VLL	%[v1],%[index],0,1\n" -		: -		: [vxr] "R" (*(u8 *)vxr), -		  [index] "d" (index), -		  [v1] "I" (v1) -		: "memory", "1"); +	asm volatile("VLL	%[v1],%[index],%O[vxr],%R[vxr]\n" +		     : +		     : [vxr] "Q" (*(u8 *)vxr), +		       [index] "d" (index), +		       [v1] "I" (v1) +		     : "memory");  } -#else /* CONFIG_CC_IS_CLANG */ +#else /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  static __always_inline void fpu_vll(u8 v1, u32 index, const void *vxr)  { @@ -257,17 +255,19 @@ static __always_inline void fpu_vll(u8 v1, u32 index, const void *vxr)  	size = min(index + 1, sizeof(__vector128));  	instrument_read(vxr, size); -	asm volatile("VLL	%[v1],%[index],%O[vxr],%R[vxr]\n" -		     : -		     : [vxr] "Q" (*(u8 *)vxr), -		       [index] "d" (index), -		       [v1] "I" (v1) -		     : "memory"); +	asm volatile( +		"	la	1,%[vxr]\n" +		"	VLL	%[v1],%[index],0,1\n" +		: +		: [vxr] "R" (*(u8 *)vxr), +		  [index] "d" (index), +		  [v1] "I" (v1) +		: "memory", "1");  } -#endif /* CONFIG_CC_IS_CLANG */ +#endif /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */ -#ifdef CONFIG_CC_IS_CLANG +#ifdef CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS  #define fpu_vlm(_v1, _v3, _vxrs)					\  ({									\ @@ -277,17 +277,15 @@ static __always_inline void fpu_vll(u8 v1, u32 index, const void *vxr)  	} *_v = (void *)(_vxrs);					\  									\  	instrument_read(_v, size);					\ -	asm volatile(							\ -		"	la	1,%[vxrs]\n"				\ -		"	VLM	%[v1],%[v3],0,1\n"			\ -		:							\ -		: [vxrs] "R" (*_v),					\ -		  [v1] "I" (_v1), [v3] "I" (_v3)			\ -		: "memory", "1");					\ +	asm volatile("VLM	%[v1],%[v3],%O[vxrs],%R[vxrs]\n"	\ +		     :							\ +		     : [vxrs] "Q" (*_v),				\ +		       [v1] "I" (_v1), [v3] "I" (_v3)			\ +		     : "memory");					\  	(_v3) - (_v1) + 1;						\  }) -#else /* CONFIG_CC_IS_CLANG */ +#else /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  #define fpu_vlm(_v1, _v3, _vxrs)					\  ({									\ @@ -297,15 +295,17 @@ static __always_inline void fpu_vll(u8 v1, u32 index, const void *vxr)  	} *_v = (void *)(_vxrs);					\  									\  	instrument_read(_v, size);					\ -	asm volatile("VLM	%[v1],%[v3],%O[vxrs],%R[vxrs]\n"	\ -		     :							\ -		     : [vxrs] "Q" (*_v),				\ -		       [v1] "I" (_v1), [v3] "I" (_v3)			\ -		     : "memory");					\ +	asm volatile(							\ +		"	la	1,%[vxrs]\n"				\ +		"	VLM	%[v1],%[v3],0,1\n"			\ +		:							\ +		: [vxrs] "R" (*_v),					\ +		  [v1] "I" (_v1), [v3] "I" (_v3)			\ +		: "memory", "1");					\  	(_v3) - (_v1) + 1;						\  }) -#endif /* CONFIG_CC_IS_CLANG */ +#endif /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  static __always_inline void fpu_vlr(u8 v1, u8 v2)  { @@ -355,7 +355,18 @@ static __always_inline void fpu_vsrlb(u8 v1, u8 v2, u8 v3)  		     : "memory");  } -#ifdef CONFIG_CC_IS_CLANG +#ifdef CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS + +static __always_inline void fpu_vst(u8 v1, const void *vxr) +{ +	instrument_write(vxr, sizeof(__vector128)); +	asm volatile("VST	%[v1],%O[vxr],,%R[vxr]\n" +		     : [vxr] "=Q" (*(__vector128 *)vxr) +		     : [v1] "I" (v1) +		     : "memory"); +} + +#else /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  static __always_inline void fpu_vst(u8 v1, const void *vxr)  { @@ -368,20 +379,23 @@ static __always_inline void fpu_vst(u8 v1, const void *vxr)  		: "memory", "1");  } -#else /* CONFIG_CC_IS_CLANG */ +#endif /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */ -static __always_inline void fpu_vst(u8 v1, const void *vxr) +#ifdef CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS + +static __always_inline void fpu_vstl(u8 v1, u32 index, const void *vxr)  { -	instrument_write(vxr, sizeof(__vector128)); -	asm volatile("VST	%[v1],%O[vxr],,%R[vxr]\n" -		     : [vxr] "=Q" (*(__vector128 *)vxr) -		     : [v1] "I" (v1) +	unsigned int size; + +	size = min(index + 1, sizeof(__vector128)); +	instrument_write(vxr, size); +	asm volatile("VSTL	%[v1],%[index],%O[vxr],%R[vxr]\n" +		     : [vxr] "=Q" (*(u8 *)vxr) +		     : [index] "d" (index), [v1] "I" (v1)  		     : "memory");  } -#endif /* CONFIG_CC_IS_CLANG */ - -#ifdef CONFIG_CC_IS_CLANG +#else /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  static __always_inline void fpu_vstl(u8 v1, u32 index, const void *vxr)  { @@ -397,23 +411,9 @@ static __always_inline void fpu_vstl(u8 v1, u32 index, const void *vxr)  		: "memory", "1");  } -#else /* CONFIG_CC_IS_CLANG */ +#endif /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */ -static __always_inline void fpu_vstl(u8 v1, u32 index, const void *vxr) -{ -	unsigned int size; - -	size = min(index + 1, sizeof(__vector128)); -	instrument_write(vxr, size); -	asm volatile("VSTL	%[v1],%[index],%O[vxr],%R[vxr]\n" -		     : [vxr] "=Q" (*(u8 *)vxr) -		     : [index] "d" (index), [v1] "I" (v1) -		     : "memory"); -} - -#endif /* CONFIG_CC_IS_CLANG */ - -#ifdef CONFIG_CC_IS_CLANG +#ifdef CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS  #define fpu_vstm(_v1, _v3, _vxrs)					\  ({									\ @@ -423,16 +423,14 @@ static __always_inline void fpu_vstl(u8 v1, u32 index, const void *vxr)  	} *_v = (void *)(_vxrs);					\  									\  	instrument_write(_v, size);					\ -	asm volatile(							\ -		"	la	1,%[vxrs]\n"				\ -		"	VSTM	%[v1],%[v3],0,1\n"			\ -		: [vxrs] "=R" (*_v)					\ -		: [v1] "I" (_v1), [v3] "I" (_v3)			\ -		: "memory", "1");					\ +	asm volatile("VSTM	%[v1],%[v3],%O[vxrs],%R[vxrs]\n"	\ +		     : [vxrs] "=Q" (*_v)				\ +		     : [v1] "I" (_v1), [v3] "I" (_v3)			\ +		     : "memory");					\  	(_v3) - (_v1) + 1;						\  }) -#else /* CONFIG_CC_IS_CLANG */ +#else /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  #define fpu_vstm(_v1, _v3, _vxrs)					\  ({									\ @@ -442,14 +440,16 @@ static __always_inline void fpu_vstl(u8 v1, u32 index, const void *vxr)  	} *_v = (void *)(_vxrs);					\  									\  	instrument_write(_v, size);					\ -	asm volatile("VSTM	%[v1],%[v3],%O[vxrs],%R[vxrs]\n"	\ -		     : [vxrs] "=Q" (*_v)				\ -		     : [v1] "I" (_v1), [v3] "I" (_v3)			\ -		     : "memory");					\ +	asm volatile(							\ +		"	la	1,%[vxrs]\n"				\ +		"	VSTM	%[v1],%[v3],0,1\n"			\ +		: [vxrs] "=R" (*_v)					\ +		: [v1] "I" (_v1), [v3] "I" (_v3)			\ +		: "memory", "1");					\  	(_v3) - (_v1) + 1;						\  }) -#endif /* CONFIG_CC_IS_CLANG */ +#endif /* CONFIG_CC_HAS_ASM_AOR_FORMAT_FLAGS */  static __always_inline void fpu_vupllf(u8 v1, u8 v2)  { | 
