static void tcg_out_tlb_check (TCGContext *s, int r0, int r1, int r2,

                               int addr_reg, int addr_reg2, int s_bits,

                               int offset1, int offset2, uint8_t **label_ptr)

{

    uint16_t retranst;



    tcg_out32 (s, (RLWINM

                   | RA (r0)

                   | RS (addr_reg)

                   | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS))

                   | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS))

                   | ME (31 - CPU_TLB_ENTRY_BITS)

                   )

        );

    tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0));

    tcg_out32 (s, (LWZU

                   | RT (r1)

                   | RA (r0)

                   | offset1

                   )

        );

    tcg_out32 (s, (RLWINM

                   | RA (r2)

                   | RS (addr_reg)

                   | SH (0)

                   | MB ((32 - s_bits) & 31)

                   | ME (31 - TARGET_PAGE_BITS)

                   )

        );



    tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1));

#if TARGET_LONG_BITS == 64

    tcg_out32 (s, LWZ | RT (r1) | RA (r0) | 4);

    tcg_out32 (s, CMP | BF (6) | RA (addr_reg2) | RB (r1));

    tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ));

#endif



    /* Use a conditional branch-and-link so that we load a pointer to

       somewhere within the current opcode, for passing on to the helper.

       This address cannot be used for a tail call, but it's shorter

       than forming an address from scratch.  */

    *label_ptr = s->code_ptr;

    retranst = ((uint16_t *) s->code_ptr)[1] & ~3;

    tcg_out32(s, BC | BI(7, CR_EQ) | retranst | BO_COND_FALSE | LK);



    /* r0 now contains &env->tlb_table[mem_index][index].addr_x */

    tcg_out32 (s, (LWZ

                   | RT (r0)

                   | RA (r0)

                   | offset2

                   )

        );

    /* r0 = env->tlb_table[mem_index][index].addend */

    tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg));

    /* r0 = env->tlb_table[mem_index][index].addend + addr */



}

static void tcg_out_tlb_check (TCGContext *s, int r0, int r1, int r2,

                               int addr_reg, int addr_reg2, int s_bits,

                               int offset1, int offset2, uint8_t **label_ptr)

{

    uint16_t retranst;



    tcg_out32 (s, (RLWINM

                   | RA (r0)

                   | RS (addr_reg)

                   | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS))

                   | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS))

                   | ME (31 - CPU_TLB_ENTRY_BITS)

                   )

        );

    tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0));

    tcg_out32 (s, (LWZU

                   | RT (r1)

                   | RA (r0)

                   | offset1

                   )

        );

    tcg_out32 (s, (RLWINM

                   | RA (r2)

                   | RS (addr_reg)

                   | SH (0)

                   | MB ((32 - s_bits) & 31)

                   | ME (31 - TARGET_PAGE_BITS)

                   )

        );



    tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1));

#if TARGET_LONG_BITS == 64

    tcg_out32 (s, LWZ | RT (r1) | RA (r0) | 4);

    tcg_out32 (s, CMP | BF (6) | RA (addr_reg2) | RB (r1));

    tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ));

#endif



    







    *label_ptr = s->code_ptr;

    retranst = ((uint16_t *) s->code_ptr)[1] & ~3;

    tcg_out32(s, BC | BI(7, CR_EQ) | retranst | BO_COND_FALSE | LK);



    

    tcg_out32 (s, (LWZ

                   | RT (r0)

                   | RA (r0)

                   | offset2

                   )

        );

    

    tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg));

    



}

static void tcg_out_tlb_check (TCGContext *s, int r0, int r1, int r2,                                int addr_reg, int addr_reg2, int s_bits,                                int offset1, int offset2, uint8_t **label_ptr)     tcg_out32 (s, (RLWINM                    | RA (r0)                    | RS (addr_reg)                    | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS))                    | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS))                    | ME (31 - CPU_TLB_ENTRY_BITS)                    )         );     tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0));     tcg_out32 (s, (LWZU                    | RT (r1)                    | RA (r0)                    | offset1                    )         );     tcg_out32 (s, (RLWINM                    | RA (r2)                    | RS (addr_reg)                    | SH (0)                    | MB ((32 - s_bits) & 31)                    | ME (31 - TARGET_PAGE_BITS)                    )         );     tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1)); #if TARGET_LONG_BITS == 64     tcg_out32 (s, LWZ | RT (r1) | RA (r0) | 4);     tcg_out32 (s, CMP | BF (6) | RA (addr_reg2) | RB (r1));     tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); #endif     tcg_out32 (s, (LWZ                    | RT (r0)                    | RA (r0)                    | offset2                    )         );     tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); #if TARGET_LONG_BITS == 64 #endif         ); #endif #if TARGET_LONG_BITS == 64 #endif         ); #endif
static void FUNC_0 (TCGContext *VAR_0, int VAR_1, int VAR_2, int VAR_3,

                               int VAR_4, int VAR_5, int VAR_6,

                               int VAR_7, int VAR_8, uint8_t **VAR_9)

{

    uint16_t retranst;



    tcg_out32 (VAR_0, (RLWINM

                   | RA (VAR_1)

                   | RS (VAR_4)

                   | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS))

                   | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS))

                   | ME (31 - CPU_TLB_ENTRY_BITS)

                   )

        );

    tcg_out32 (VAR_0, ADD | RT (VAR_1) | RA (VAR_1) | RB (TCG_AREG0));

    tcg_out32 (VAR_0, (LWZU

                   | RT (VAR_2)

                   | RA (VAR_1)

                   | VAR_7

                   )

        );

    tcg_out32 (VAR_0, (RLWINM

                   | RA (VAR_3)

                   | RS (VAR_4)

                   | SH (0)

                   | MB ((32 - VAR_6) & 31)

                   | ME (31 - TARGET_PAGE_BITS)

                   )

        );



    tcg_out32 (VAR_0, CMP | BF (7) | RA (VAR_3) | RB (VAR_2));

#if TARGET_LONG_BITS == 64

    tcg_out32 (VAR_0, LWZ | RT (VAR_2) | RA (VAR_1) | 4);

    tcg_out32 (VAR_0, CMP | BF (6) | RA (VAR_5) | RB (VAR_2));

    tcg_out32 (VAR_0, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ));

#endif



    







    *VAR_9 = VAR_0->code_ptr;

    retranst = ((uint16_t *) VAR_0->code_ptr)[1] & ~3;

    tcg_out32(VAR_0, BC | BI(7, CR_EQ) | retranst | BO_COND_FALSE | LK);



    

    tcg_out32 (VAR_0, (LWZ

                   | RT (VAR_1)

                   | RA (VAR_1)

                   | VAR_8

                   )

        );

    

    tcg_out32 (VAR_0, ADD | RT (VAR_1) | RA (VAR_1) | RB (VAR_4));

    



}

static void FUNC_0 (TCGContext *VAR_0, int VAR_1, int VAR_2, int VAR_3,
int VAR_4, int VAR_5, int VAR_6,
int VAR_7, int VAR_8, uint8_t **VAR_9)
{ uint16_t retranst; tcg_out32 (VAR_0, (RLWINM
| RA (VAR_1)
| RS (VAR_4)
| SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS))
| MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS))
| ME (31 - CPU_TLB_ENTRY_BITS)
)
); tcg_out32 (VAR_0, ADD | RT (VAR_1) | RA (VAR_1) | RB (TCG_AREG0)); tcg_out32 (VAR_0, (LWZU
| RT (VAR_2)
| RA (VAR_1)
| VAR_7
)
); tcg_out32 (VAR_0, (RLWINM
| RA (VAR_3)
| RS (VAR_4)
| SH (0)
| MB ((32 - VAR_6) & 31)
| ME (31 - TARGET_PAGE_BITS)
)
); tcg_out32 (VAR_0, CMP | BF (7) | RA (VAR_3) | RB (VAR_2)); #if TARGET_LONG_BITS == 64
tcg_out32 (VAR_0, LWZ | RT (VAR_2) | RA (VAR_1) | 4); tcg_out32 (VAR_0, CMP | BF (6) | RA (VAR_5) | RB (VAR_2)); tcg_out32 (VAR_0, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); #endif
*VAR_9 = VAR_0->code_ptr; retranst = ((uint16_t *) VAR_0->code_ptr)[1] & ~3; tcg_out32(VAR_0, BC | BI(7, CR_EQ) | retranst | BO_COND_FALSE | LK); tcg_out32 (VAR_0, (LWZ
| RT (VAR_1)
| RA (VAR_1)
| VAR_8
)
); tcg_out32 (VAR_0, ADD | RT (VAR_1) | RA (VAR_1) | RB (VAR_4)); }