mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 04:06:46 +00:00 
			
		
		
		
	target-ppc: implement vnegw/d instructions
Vector Integer Negate Instructions: vnegw: Vector Negate Word vnegd: Vector Negate Doubleword Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
		
							parent
							
								
									c6363bae17
								
							
						
					
					
						commit
						cc8b6e76e3
					
				| @ -272,6 +272,8 @@ DEF_HELPER_2(vextsh2w, void, avr, avr) | ||||
| DEF_HELPER_2(vextsb2d, void, avr, avr) | ||||
| DEF_HELPER_2(vextsh2d, void, avr, avr) | ||||
| DEF_HELPER_2(vextsw2d, void, avr, avr) | ||||
| DEF_HELPER_2(vnegw, void, avr, avr) | ||||
| DEF_HELPER_2(vnegd, void, avr, avr) | ||||
| DEF_HELPER_2(vupkhpx, void, avr, avr) | ||||
| DEF_HELPER_2(vupklpx, void, avr, avr) | ||||
| DEF_HELPER_2(vupkhsb, void, avr, avr) | ||||
|  | ||||
| @ -1949,6 +1949,18 @@ VEXT_SIGNED(vextsh2d, s64, UINT16_MAX, int16_t, int64_t) | ||||
| VEXT_SIGNED(vextsw2d, s64, UINT32_MAX, int32_t, int64_t) | ||||
| #undef VEXT_SIGNED | ||||
| 
 | ||||
| #define VNEG(name, element)                                         \ | ||||
| void helper_##name(ppc_avr_t *r, ppc_avr_t *b)                      \ | ||||
| {                                                                   \ | ||||
|     int i;                                                          \ | ||||
|     VECTOR_FOR_INORDER_I(i, element) {                              \ | ||||
|         r->element[i] = -b->element[i];                             \ | ||||
|     }                                                               \ | ||||
| } | ||||
| VNEG(vnegw, s32) | ||||
| VNEG(vnegd, s64) | ||||
| #undef VNEG | ||||
| 
 | ||||
| #define VSPLTI(suffix, element, splat_type)                     \ | ||||
|     void helper_vspltis##suffix(ppc_avr_t *r, uint32_t splat)   \ | ||||
|     {                                                           \ | ||||
|  | ||||
| @ -815,6 +815,8 @@ GEN_VXFORM_NOA(vclzb, 1, 28) | ||||
| GEN_VXFORM_NOA(vclzh, 1, 29) | ||||
| GEN_VXFORM_NOA(vclzw, 1, 30) | ||||
| GEN_VXFORM_NOA(vclzd, 1, 31) | ||||
| GEN_VXFORM_NOA_2(vnegw, 1, 24, 6) | ||||
| GEN_VXFORM_NOA_2(vnegd, 1, 24, 7) | ||||
| GEN_VXFORM_NOA_2(vextsb2w, 1, 24, 16) | ||||
| GEN_VXFORM_NOA_2(vextsh2w, 1, 24, 17) | ||||
| GEN_VXFORM_NOA_2(vextsb2d, 1, 24, 24) | ||||
|  | ||||
| @ -215,6 +215,8 @@ GEN_VXFORM_DUAL_INV(vspltish, vinserth, 6, 13, 0x00000000, 0x100000, | ||||
| GEN_VXFORM_DUAL_INV(vspltisw, vinsertw, 6, 14, 0x00000000, 0x100000, | ||||
|                                                PPC_ALTIVEC), | ||||
| GEN_VXFORM_300_EXT(vinsertd, 6, 15, 0x100000), | ||||
| GEN_VXFORM_300_EO(vnegw, 0x01, 0x18, 0x06), | ||||
| GEN_VXFORM_300_EO(vnegd, 0x01, 0x18, 0x07), | ||||
| GEN_VXFORM_300_EO(vextsb2w, 0x01, 0x18, 0x10), | ||||
| GEN_VXFORM_300_EO(vextsh2w, 0x01, 0x18, 0x11), | ||||
| GEN_VXFORM_300_EO(vextsb2d, 0x01, 0x18, 0x18), | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Nikunj A Dadhania
						Nikunj A Dadhania