target-arm: Eliminate unnecessary zero-extend in disas_bitfield
For !SF, this initial ext32u can't be optimized away by the current TCG code generator. (It would require backward bit liveness propagation.) But since the range of bits for !SF are already constrained by unallocated_encoding, we'll never reference the high bits anyway. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <rth@twiddle.net> Message-id: 1441909103-24666-10-git-send-email-rth@twiddle.net Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									9924e85829
								
							
						
					
					
						commit
						d3a77b42de
					
				@ -3015,7 +3015,11 @@ static void disas_bitfield(DisasContext *s, uint32_t insn)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tcg_rd = cpu_reg(s, rd);
 | 
					    tcg_rd = cpu_reg(s, rd);
 | 
				
			||||||
    tcg_tmp = read_cpu_reg(s, rn, sf);
 | 
					
 | 
				
			||||||
 | 
					    /* Suppress the zero-extend for !sf.  Since RI and SI are constrained
 | 
				
			||||||
 | 
					       to be smaller than bitsize, we'll never reference data outside the
 | 
				
			||||||
 | 
					       low 32-bits anyway.  */
 | 
				
			||||||
 | 
					    tcg_tmp = read_cpu_reg(s, rn, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Recognize the common aliases.  */
 | 
					    /* Recognize the common aliases.  */
 | 
				
			||||||
    if (opc == 0) { /* SBFM */
 | 
					    if (opc == 0) { /* SBFM */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user