Skip to content

Commit 3d5939e

Browse files
committed
tcg/aarch64: Use 'z' constraint
Note that 'Z' is still used for addsub2. Signed-off-by: Richard Henderson <[email protected]>
1 parent 6b8abd2 commit 3d5939e

File tree

2 files changed

+26
-32
lines changed

2 files changed

+26
-32
lines changed

tcg/aarch64/tcg-target-con-set.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,27 @@
1111
*/
1212
C_O0_I1(r)
1313
C_O0_I2(r, rC)
14-
C_O0_I2(rZ, r)
14+
C_O0_I2(rz, r)
1515
C_O0_I2(w, r)
16-
C_O0_I3(rZ, rZ, r)
16+
C_O0_I3(rz, rz, r)
1717
C_O1_I1(r, r)
1818
C_O1_I1(w, r)
1919
C_O1_I1(w, w)
2020
C_O1_I1(w, wr)
21-
C_O1_I2(r, 0, rZ)
21+
C_O1_I2(r, 0, rz)
2222
C_O1_I2(r, r, r)
2323
C_O1_I2(r, r, rA)
2424
C_O1_I2(r, r, rAL)
2525
C_O1_I2(r, r, rC)
2626
C_O1_I2(r, r, ri)
2727
C_O1_I2(r, r, rL)
28-
C_O1_I2(r, rZ, rZ)
28+
C_O1_I2(r, rz, rz)
2929
C_O1_I2(w, 0, w)
3030
C_O1_I2(w, w, w)
3131
C_O1_I2(w, w, wN)
3232
C_O1_I2(w, w, wO)
3333
C_O1_I2(w, w, wZ)
3434
C_O1_I3(w, w, w, w)
35-
C_O1_I4(r, r, rC, rZ, rZ)
35+
C_O1_I4(r, r, rC, rz, rz)
3636
C_O2_I1(r, r, r)
37-
C_O2_I4(r, r, rZ, rZ, rA, rMZ)
37+
C_O2_I4(r, r, rz, rz, rA, rMZ)

tcg/aarch64/tcg-target.c.inc

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2125,10 +2125,6 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, TCGType ext,
21252125
TCGArg a2 = args[2];
21262126
int c2 = const_args[2];
21272127

2128-
/* Some operands are defined with "rZ" constraint, a register or
2129-
the zero register. These need not actually test args[I] == 0. */
2130-
#define REG0(I) (const_args[I] ? TCG_REG_XZR : (TCGReg)args[I])
2131-
21322128
switch (opc) {
21332129
case INDEX_op_goto_ptr:
21342130
tcg_out_insn(s, 3207, BR, a0);
@@ -2171,18 +2167,18 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, TCGType ext,
21712167

21722168
case INDEX_op_st8_i32:
21732169
case INDEX_op_st8_i64:
2174-
tcg_out_ldst(s, I3312_STRB, REG0(0), a1, a2, 0);
2170+
tcg_out_ldst(s, I3312_STRB, a0, a1, a2, 0);
21752171
break;
21762172
case INDEX_op_st16_i32:
21772173
case INDEX_op_st16_i64:
2178-
tcg_out_ldst(s, I3312_STRH, REG0(0), a1, a2, 1);
2174+
tcg_out_ldst(s, I3312_STRH, a0, a1, a2, 1);
21792175
break;
21802176
case INDEX_op_st_i32:
21812177
case INDEX_op_st32_i64:
2182-
tcg_out_ldst(s, I3312_STRW, REG0(0), a1, a2, 2);
2178+
tcg_out_ldst(s, I3312_STRW, a0, a1, a2, 2);
21832179
break;
21842180
case INDEX_op_st_i64:
2185-
tcg_out_ldst(s, I3312_STRX, REG0(0), a1, a2, 3);
2181+
tcg_out_ldst(s, I3312_STRX, a0, a1, a2, 3);
21862182
break;
21872183

21882184
case INDEX_op_add_i32:
@@ -2395,7 +2391,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, TCGType ext,
23952391
/* FALLTHRU */
23962392
case INDEX_op_movcond_i64:
23972393
tcg_out_cmp(s, ext, args[5], a1, a2, c2);
2398-
tcg_out_insn(s, 3506, CSEL, ext, a0, REG0(3), REG0(4), args[5]);
2394+
tcg_out_insn(s, 3506, CSEL, ext, a0, args[3], args[4], args[5]);
23992395
break;
24002396

24012397
case INDEX_op_qemu_ld_i32:
@@ -2404,13 +2400,13 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, TCGType ext,
24042400
break;
24052401
case INDEX_op_qemu_st_i32:
24062402
case INDEX_op_qemu_st_i64:
2407-
tcg_out_qemu_st(s, REG0(0), a1, a2, ext);
2403+
tcg_out_qemu_st(s, a0, a1, a2, ext);
24082404
break;
24092405
case INDEX_op_qemu_ld_i128:
24102406
tcg_out_qemu_ldst_i128(s, a0, a1, a2, args[3], true);
24112407
break;
24122408
case INDEX_op_qemu_st_i128:
2413-
tcg_out_qemu_ldst_i128(s, REG0(0), REG0(1), a2, args[3], false);
2409+
tcg_out_qemu_ldst_i128(s, a0, a1, a2, args[3], false);
24142410
break;
24152411

24162412
case INDEX_op_bswap64_i64:
@@ -2439,7 +2435,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, TCGType ext,
24392435

24402436
case INDEX_op_deposit_i64:
24412437
case INDEX_op_deposit_i32:
2442-
tcg_out_dep(s, ext, a0, REG0(2), args[3], args[4]);
2438+
tcg_out_dep(s, ext, a0, a2, args[3], args[4]);
24432439
break;
24442440

24452441
case INDEX_op_extract_i64:
@@ -2459,25 +2455,25 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, TCGType ext,
24592455

24602456
case INDEX_op_extract2_i64:
24612457
case INDEX_op_extract2_i32:
2462-
tcg_out_extr(s, ext, a0, REG0(2), REG0(1), args[3]);
2458+
tcg_out_extr(s, ext, a0, a2, a1, args[3]);
24632459
break;
24642460

24652461
case INDEX_op_add2_i32:
2466-
tcg_out_addsub2(s, TCG_TYPE_I32, a0, a1, REG0(2), REG0(3),
2462+
tcg_out_addsub2(s, TCG_TYPE_I32, a0, a1, a2, args[3],
24672463
(int32_t)args[4], args[5], const_args[4],
24682464
const_args[5], false);
24692465
break;
24702466
case INDEX_op_add2_i64:
2471-
tcg_out_addsub2(s, TCG_TYPE_I64, a0, a1, REG0(2), REG0(3), args[4],
2467+
tcg_out_addsub2(s, TCG_TYPE_I64, a0, a1, a2, args[3], args[4],
24722468
args[5], const_args[4], const_args[5], false);
24732469
break;
24742470
case INDEX_op_sub2_i32:
2475-
tcg_out_addsub2(s, TCG_TYPE_I32, a0, a1, REG0(2), REG0(3),
2471+
tcg_out_addsub2(s, TCG_TYPE_I32, a0, a1, a2, args[3],
24762472
(int32_t)args[4], args[5], const_args[4],
24772473
const_args[5], true);
24782474
break;
24792475
case INDEX_op_sub2_i64:
2480-
tcg_out_addsub2(s, TCG_TYPE_I64, a0, a1, REG0(2), REG0(3), args[4],
2476+
tcg_out_addsub2(s, TCG_TYPE_I64, a0, a1, a2, args[3], args[4],
24812477
args[5], const_args[4], const_args[5], true);
24822478
break;
24832479

@@ -2513,8 +2509,6 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, TCGType ext,
25132509
default:
25142510
g_assert_not_reached();
25152511
}
2516-
2517-
#undef REG0
25182512
}
25192513

25202514
static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc,
@@ -3010,7 +3004,7 @@ tcg_target_op_def(TCGOpcode op, TCGType type, unsigned flags)
30103004
case INDEX_op_st16_i64:
30113005
case INDEX_op_st32_i64:
30123006
case INDEX_op_st_i64:
3013-
return C_O0_I2(rZ, r);
3007+
return C_O0_I2(rz, r);
30143008

30153009
case INDEX_op_add_i32:
30163010
case INDEX_op_add_i64:
@@ -3076,7 +3070,7 @@ tcg_target_op_def(TCGOpcode op, TCGType type, unsigned flags)
30763070

30773071
case INDEX_op_movcond_i32:
30783072
case INDEX_op_movcond_i64:
3079-
return C_O1_I4(r, r, rC, rZ, rZ);
3073+
return C_O1_I4(r, r, rC, rz, rz);
30803074

30813075
case INDEX_op_qemu_ld_i32:
30823076
case INDEX_op_qemu_ld_i64:
@@ -3085,23 +3079,23 @@ tcg_target_op_def(TCGOpcode op, TCGType type, unsigned flags)
30853079
return C_O2_I1(r, r, r);
30863080
case INDEX_op_qemu_st_i32:
30873081
case INDEX_op_qemu_st_i64:
3088-
return C_O0_I2(rZ, r);
3082+
return C_O0_I2(rz, r);
30893083
case INDEX_op_qemu_st_i128:
3090-
return C_O0_I3(rZ, rZ, r);
3084+
return C_O0_I3(rz, rz, r);
30913085

30923086
case INDEX_op_deposit_i32:
30933087
case INDEX_op_deposit_i64:
3094-
return C_O1_I2(r, 0, rZ);
3088+
return C_O1_I2(r, 0, rz);
30953089

30963090
case INDEX_op_extract2_i32:
30973091
case INDEX_op_extract2_i64:
3098-
return C_O1_I2(r, rZ, rZ);
3092+
return C_O1_I2(r, rz, rz);
30993093

31003094
case INDEX_op_add2_i32:
31013095
case INDEX_op_add2_i64:
31023096
case INDEX_op_sub2_i32:
31033097
case INDEX_op_sub2_i64:
3104-
return C_O2_I4(r, r, rZ, rZ, rA, rMZ);
3098+
return C_O2_I4(r, r, rz, rz, rA, rMZ);
31053099

31063100
case INDEX_op_add_vec:
31073101
case INDEX_op_sub_vec:

0 commit comments

Comments
 (0)