Skip to content

Commit 220db7a

Browse files
committed
tcg/s390x: Implement TCG_TARGET_HAS_minmax_vec
Reviewed-by: David Hildenbrand <[email protected]> Signed-off-by: Richard Henderson <[email protected]>
1 parent 22cb37b commit 220db7a

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

tcg/s390x/tcg-target.c.inc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,10 @@ typedef enum S390Opcode {
282282
VRRc_VESRAV = 0xe77a,
283283
VRRc_VESRLV = 0xe778,
284284
VRRc_VML = 0xe7a2,
285+
VRRc_VMN = 0xe7fe,
286+
VRRc_VMNL = 0xe7fc,
287+
VRRc_VMX = 0xe7ff,
288+
VRRc_VMXL = 0xe7fd,
285289
VRRc_VN = 0xe768,
286290
VRRc_VNC = 0xe769,
287291
VRRc_VNO = 0xe76b,
@@ -2767,6 +2771,19 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc,
27672771
tcg_out_insn(s, VRRc, VERLLV, a0, a1, a2, vece);
27682772
break;
27692773

2774+
case INDEX_op_smin_vec:
2775+
tcg_out_insn(s, VRRc, VMN, a0, a1, a2, vece);
2776+
break;
2777+
case INDEX_op_smax_vec:
2778+
tcg_out_insn(s, VRRc, VMX, a0, a1, a2, vece);
2779+
break;
2780+
case INDEX_op_umin_vec:
2781+
tcg_out_insn(s, VRRc, VMNL, a0, a1, a2, vece);
2782+
break;
2783+
case INDEX_op_umax_vec:
2784+
tcg_out_insn(s, VRRc, VMXL, a0, a1, a2, vece);
2785+
break;
2786+
27702787
case INDEX_op_cmp_vec:
27712788
switch ((TCGCond)args[3]) {
27722789
case TCG_COND_EQ:
@@ -2813,7 +2830,11 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type, unsigned vece)
28132830
case INDEX_op_shri_vec:
28142831
case INDEX_op_shrs_vec:
28152832
case INDEX_op_shrv_vec:
2833+
case INDEX_op_smax_vec:
2834+
case INDEX_op_smin_vec:
28162835
case INDEX_op_sub_vec:
2836+
case INDEX_op_umax_vec:
2837+
case INDEX_op_umin_vec:
28172838
case INDEX_op_xor_vec:
28182839
return 1;
28192840
case INDEX_op_cmp_vec:
@@ -3074,6 +3095,10 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpcode op)
30743095
case INDEX_op_shlv_vec:
30753096
case INDEX_op_shrv_vec:
30763097
case INDEX_op_sarv_vec:
3098+
case INDEX_op_smax_vec:
3099+
case INDEX_op_smin_vec:
3100+
case INDEX_op_umax_vec:
3101+
case INDEX_op_umin_vec:
30773102
return C_O1_I2(v, v, v);
30783103
case INDEX_op_rotls_vec:
30793104
case INDEX_op_shls_vec:

tcg/s390x/tcg-target.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ extern uint64_t s390_facilities[3];
156156
#define TCG_TARGET_HAS_shv_vec 1
157157
#define TCG_TARGET_HAS_mul_vec 1
158158
#define TCG_TARGET_HAS_sat_vec 0
159-
#define TCG_TARGET_HAS_minmax_vec 0
159+
#define TCG_TARGET_HAS_minmax_vec 1
160160
#define TCG_TARGET_HAS_bitsel_vec 0
161161
#define TCG_TARGET_HAS_cmpsel_vec 0
162162

0 commit comments

Comments
 (0)