target/openrisc: Use movcond where appropriate
Reviewed-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
		
							parent
							
								
									9745807191
								
							
						
					
					
						commit
						784696d119
					
				@ -214,12 +214,16 @@ static void gen_jump(DisasContext *dc, int32_t n26, uint32_t reg, uint32_t op0)
 | 
				
			|||||||
    case 0x03:     /* l.bnf */
 | 
					    case 0x03:     /* l.bnf */
 | 
				
			||||||
    case 0x04:     /* l.bf  */
 | 
					    case 0x04:     /* l.bf  */
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            TCGLabel *lab = gen_new_label();
 | 
					            TCGv t_next = tcg_const_tl(dc->pc + 8);
 | 
				
			||||||
            tcg_gen_movi_tl(jmp_pc, dc->pc+8);
 | 
					            TCGv t_true = tcg_const_tl(tmp_pc);
 | 
				
			||||||
            tcg_gen_brcondi_tl(op0 == 0x03 ? TCG_COND_NE : TCG_COND_EQ,
 | 
					            TCGv t_zero = tcg_const_tl(0);
 | 
				
			||||||
                               cpu_sr_f, 0, lab);
 | 
					
 | 
				
			||||||
            tcg_gen_movi_tl(jmp_pc, tmp_pc);
 | 
					            tcg_gen_movcond_tl(op0 == 0x03 ? TCG_COND_EQ : TCG_COND_NE,
 | 
				
			||||||
            gen_set_label(lab);
 | 
					                               jmp_pc, cpu_sr_f, t_zero, t_true, t_next);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            tcg_temp_free(t_next);
 | 
				
			||||||
 | 
					            tcg_temp_free(t_true);
 | 
				
			||||||
 | 
					            tcg_temp_free(t_zero);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 0x11:     /* l.jr */
 | 
					    case 0x11:     /* l.jr */
 | 
				
			||||||
@ -502,14 +506,10 @@ static void dec_calc(DisasContext *dc, uint32_t insn)
 | 
				
			|||||||
        case 0xe: /* l.cmov */
 | 
					        case 0xe: /* l.cmov */
 | 
				
			||||||
            LOG_DIS("l.cmov r%d, r%d, r%d\n", rd, ra, rb);
 | 
					            LOG_DIS("l.cmov r%d, r%d, r%d\n", rd, ra, rb);
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                TCGLabel *lab = gen_new_label();
 | 
					                TCGv zero = tcg_const_tl(0);
 | 
				
			||||||
                TCGv res = tcg_temp_local_new();
 | 
					                tcg_gen_movcond_tl(TCG_COND_NE, cpu_R[rd], cpu_sr_f, zero,
 | 
				
			||||||
                tcg_gen_mov_tl(res, cpu_R[rb]);
 | 
					                                   cpu_R[ra], cpu_R[rb]);
 | 
				
			||||||
                tcg_gen_brcondi_tl(TCG_COND_EQ, cpu_sr_f, 0, lab);
 | 
					                tcg_temp_free(zero);
 | 
				
			||||||
                tcg_gen_mov_tl(res, cpu_R[ra]);
 | 
					 | 
				
			||||||
                gen_set_label(lab);
 | 
					 | 
				
			||||||
                tcg_gen_mov_tl(cpu_R[rd], res);
 | 
					 | 
				
			||||||
                tcg_temp_free(res);
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user