]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
target/112280 - properly guard permute query
authorRichard Biener <rguenther@suse.de>
Thu, 11 Jan 2024 13:55:50 +0000 (14:55 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 12 Jan 2024 06:58:26 +0000 (07:58 +0100)
The following adds guards avoiding code generation to
expand_perm_as_a_vlbr_vstbr_candidate when d.testing_p.

PR target/112280
* config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
Do not generate code when d.testing_p.

gcc/config/s390/s390.cc

index 748ad9cd932ea1cb217c87ad160491d3a8f6c67b..f182c26e78bcf17d82946e87ece6824aea8b018f 100644 (file)
@@ -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;
     }