@@ -9108,6 +9108,9 @@
(match_operand:SI 2 "const_int_operand")] ;; model
""
{
+ if (MEM_ALIGN (operands[1]) < GET_MODE_BITSIZE (GET_MODE (operands[1])))
+ FAIL;
+
if (<MODE>mode == TImode)
emit_insn (gen_atomic_loadti_1 (operands[0], operands[1]));
else if (<MODE>mode == DImode && !TARGET_ZARCH)
@@ -9149,6 +9152,9 @@
{
enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+ if (MEM_ALIGN (operands[0]) < GET_MODE_BITSIZE (GET_MODE (operands[0])))
+ FAIL;
+
if (<MODE>mode == TImode)
emit_insn (gen_atomic_storeti_1 (operands[0], operands[1]));
else if (<MODE>mode == DImode && !TARGET_ZARCH)
@@ -9203,6 +9209,9 @@
if (!register_operand (output, <MODE>mode))
output = gen_reg_rtx (<MODE>mode);
+ if (MEM_ALIGN (operands[2]) < GET_MODE_BITSIZE (GET_MODE (operands[2])))
+ FAIL;
+
emit_insn (gen_atomic_compare_and_swap<mode>_internal
(output, operands[2], operands[3], operands[4]));
@@ -9319,6 +9328,9 @@
(match_operand:SI 3 "const_int_operand")] ;; model
"TARGET_Z196"
{
+ if (MEM_ALIGN (operands[1]) < GET_MODE_BITSIZE (GET_MODE (operands[1])))
+ FAIL;
+
emit_insn (gen_atomic_fetch_<atomic><mode>_iaf
(operands[0], operands[1], operands[2]));
DONE;