]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Revert "aarch64: Handle DImode BCAX operations"
authorKyrylo Tkachov <ktkachov@nvidia.com>
Tue, 9 Sep 2025 13:14:51 +0000 (15:14 +0200)
committerKyrylo Tkachov <ktkachov@nvidia.com>
Tue, 9 Sep 2025 13:14:51 +0000 (15:14 +0200)
This reverts commit 1b7bcac0327ccd84f1966c748f4d1aedef64a9c5.

PR target/121785

gcc/

* config/aarch64/aarch64-simd.md (*bcaxqdi4): Delete.

gcc/testsuite/

* gcc.target/aarch64/simd/bcax_d.c: Remove tests for DImode arguments.

gcc/config/aarch64/aarch64-simd.md
gcc/testsuite/gcc.target/aarch64/simd/bcax_d.c

index 14b9d5c78e3f61410e2f5821c538fefda79174d5..82db2402f135cf6cede7c59a46cb9fa27dc49297 100644 (file)
   [(set_attr "type" "crypto_sha3")]
 )
 
-(define_insn_and_split "*bcaxqdi4"
-  [(set (match_operand:DI 0 "register_operand")
-       (xor:DI
-         (and:DI
-           (not:DI (match_operand:DI 3 "register_operand"))
-           (match_operand:DI 2 "register_operand"))
-         (match_operand:DI 1 "register_operand")))]
-  "TARGET_SHA3"
-  {@ [ cons: =0, 1, 2 , 3  ; attrs: type ]
-     [ w       , w, w , w  ; crypto_sha3 ] bcax\t%0.16b, %1.16b, %2.16b, %3.16b
-     [ &r      , r, r0, r0 ; multiple    ] #
-  }
-  "&& REG_P (operands[0]) && GP_REGNUM_P (REGNO (operands[0]))"
-  [(set (match_dup 4)
-       (and:DI (not:DI (match_dup 3))
-               (match_dup 2)))
-   (set (match_dup 0)
-       (xor:DI (match_dup 4)
-               (match_dup 1)))]
-  {
-    if (reload_completed)
-      operands[4] = operands[0];
-    else if (can_create_pseudo_p ())
-      operands[4] = gen_reg_rtx (DImode);
-    else
-      FAIL;
-  }
-)
-
 ;; SM3
 
 (define_insn "aarch64_sm3ss1qv4si"
index a7640c3f6f1ea67102a8796184e85ce508b054e3..d68f0e102bf1be3c1c5351c513ed46007e6f8103 100644 (file)
@@ -7,13 +7,9 @@
 
 #define BCAX(x,y,z)  ((x) ^ ((y) & ~(z)))
 
-/* When the inputs come from GP regs don't form a BCAX.  */
-uint64_t bcax_d_gp (uint64_t a, uint64_t b, uint64_t c) { return BCAX (a, b, c); }
-
-uint64x1_t bcax_d (uint64x1_t a, uint64x1_t b, uint64x1_t c) { return BCAX (a, b, c); }
 uint32x2_t bcax_s (uint32x2_t a, uint32x2_t b, uint32x2_t c) { return BCAX (a, b, c); }
 uint16x4_t bcax_h (uint16x4_t a, uint16x4_t b, uint16x4_t c) { return BCAX (a, b, c); }
 uint8x8_t bcax_b (uint8x8_t a, uint8x8_t b, uint8x8_t c) { return BCAX (a, b, c); }
 
-/* { dg-final { scan-assembler-times {bcax\tv0.16b, v0.16b, v1.16b, v2.16b} 4 } } */
+/* { dg-final { scan-assembler-times {bcax\tv0.16b, v0.16b, v1.16b, v2.16b} 3 } } */