mirror of
				https://github.com/yuzu-emu/unicorn.git
				synced 2025-11-04 02:54:47 +00:00 
			
		
		
		
	target/arm: Use neon_element_offset in neon_load/store_reg
These are the only users of neon_reg_offset, so remove that. Backports 0f2cdc82276a723ee58562b56b9d537a4bd7bfef
This commit is contained in:
		
							parent
							
								
									1b09d0d96f
								
							
						
					
					
						commit
						c1ca9e53da
					
				| 
						 | 
				
			
			@ -1146,7 +1146,8 @@ static long neon_full_reg_offset(unsigned reg)
 | 
			
		|||
    return offsetof(CPUARMState, vfp.zregs[reg >> 1].d[reg & 1]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Return the offset of a 2**SIZE piece of a NEON register, at index ELE,
 | 
			
		||||
/*
 | 
			
		||||
 * Return the offset of a 2**SIZE piece of a NEON register, at index ELE,
 | 
			
		||||
 * where 0 is the least significant end of the register.
 | 
			
		||||
 */
 | 
			
		||||
static inline long
 | 
			
		||||
| 
						 | 
				
			
			@ -1155,7 +1156,8 @@ neon_element_offset(int reg, int element, MemOp size)
 | 
			
		|||
    int element_size = 1 << size;
 | 
			
		||||
    int ofs = element * element_size;
 | 
			
		||||
#ifdef HOST_WORDS_BIGENDIAN
 | 
			
		||||
    /* Calculate the offset assuming fully little-endian,
 | 
			
		||||
    /*
 | 
			
		||||
     * Calculate the offset assuming fully little-endian,
 | 
			
		||||
     * then XOR to account for the order of the 8-byte units.
 | 
			
		||||
     */
 | 
			
		||||
    if (element_size < 8) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1180,28 +1182,18 @@ static inline long vfp_reg_offset(bool dp, unsigned reg)
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Return the offset of a 32-bit piece of a NEON register.
 | 
			
		||||
   zero is the least significant end of the register.  */
 | 
			
		||||
static inline long
 | 
			
		||||
neon_reg_offset (int reg, int n)
 | 
			
		||||
{
 | 
			
		||||
    int sreg;
 | 
			
		||||
    sreg = reg * 2 + n;
 | 
			
		||||
    return vfp_reg_offset(0, sreg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static TCGv_i32 neon_load_reg(DisasContext *s, int reg, int pass)
 | 
			
		||||
{
 | 
			
		||||
    TCGContext *tcg_ctx = s->uc->tcg_ctx;
 | 
			
		||||
    TCGv_i32 tmp = tcg_temp_new_i32(tcg_ctx);
 | 
			
		||||
    tcg_gen_ld_i32(tcg_ctx, tmp, tcg_ctx->cpu_env, neon_reg_offset(reg, pass));
 | 
			
		||||
    tcg_gen_ld_i32(tcg_ctx, tmp, tcg_ctx->cpu_env, neon_element_offset(reg, pass, MO_32));
 | 
			
		||||
    return tmp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void neon_store_reg(DisasContext *s, int reg, int pass, TCGv_i32 var)
 | 
			
		||||
{
 | 
			
		||||
    TCGContext *tcg_ctx = s->uc->tcg_ctx;
 | 
			
		||||
    tcg_gen_st_i32(tcg_ctx, var, tcg_ctx->cpu_env, neon_reg_offset(reg, pass));
 | 
			
		||||
    tcg_gen_st_i32(tcg_ctx, var, tcg_ctx->cpu_env, neon_element_offset(reg, pass, MO_32));
 | 
			
		||||
    tcg_temp_free_i32(tcg_ctx, var);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue