diff options
-rw-r--r-- | gcc/config/s390/s390.cc | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc index 748ad9c..f182c26 100644 --- a/gcc/config/s390/s390.cc +++ b/gcc/config/s390/s390.cc @@ -17867,33 +17867,45 @@ expand_perm_as_a_vlbr_vstbr_candidate (const struct expand_vec_perm_d &d) if (memcmp (d.perm, perm[0], MAX_VECT_LEN) == 0) { - rtx target = gen_rtx_SUBREG (V8HImode, d.target, 0); - rtx op0 = gen_rtx_SUBREG (V8HImode, d.op0, 0); - emit_insn (gen_bswapv8hi (target, op0)); + if (!d.testing_p) + { + rtx target = gen_rtx_SUBREG (V8HImode, d.target, 0); + rtx op0 = gen_rtx_SUBREG (V8HImode, d.op0, 0); + emit_insn (gen_bswapv8hi (target, op0)); + } return true; } if (memcmp (d.perm, perm[1], MAX_VECT_LEN) == 0) { - rtx target = gen_rtx_SUBREG (V4SImode, d.target, 0); - rtx op0 = gen_rtx_SUBREG (V4SImode, d.op0, 0); - emit_insn (gen_bswapv4si (target, op0)); + if (!d.testing_p) + { + rtx target = gen_rtx_SUBREG (V4SImode, d.target, 0); + rtx op0 = gen_rtx_SUBREG (V4SImode, d.op0, 0); + emit_insn (gen_bswapv4si (target, op0)); + } return true; } if (memcmp (d.perm, perm[2], MAX_VECT_LEN) == 0) { - rtx target = gen_rtx_SUBREG (V2DImode, d.target, 0); - rtx op0 = gen_rtx_SUBREG (V2DImode, d.op0, 0); - emit_insn (gen_bswapv2di (target, op0)); + if (!d.testing_p) + { + rtx target = gen_rtx_SUBREG (V2DImode, d.target, 0); + rtx op0 = gen_rtx_SUBREG (V2DImode, d.op0, 0); + emit_insn (gen_bswapv2di (target, op0)); + } return true; } if (memcmp (d.perm, perm[3], MAX_VECT_LEN) == 0) { - rtx target = gen_rtx_SUBREG (V1TImode, d.target, 0); - rtx op0 = gen_rtx_SUBREG (V1TImode, d.op0, 0); - emit_insn (gen_bswapv1ti (target, op0)); + if (!d.testing_p) + { + rtx target = gen_rtx_SUBREG (V1TImode, d.target, 0); + rtx op0 = gen_rtx_SUBREG (V1TImode, d.op0, 0); + emit_insn (gen_bswapv1ti (target, op0)); + } return true; } |