/* Probe at SP. */
xops[1] = const0_rtx;
- output_asm_insn ("or%z0\t{%1, (%0)|DWORD PTR [%0], %1}", xops);
+ output_asm_insn ("or{b}\t{%1, (%0)|BYTE PTR [%0], %1}", xops);
/* Test if SP == LAST_ADDR. */
xops[0] = stack_pointer_rtx;
xops[0] = stack_pointer_rtx;
xops[1] = reg;
xops[2] = const0_rtx;
- output_asm_insn ("or%z0\t{%2, (%0,%1)|DWORD PTR [%0+%1], %2}", xops);
+ output_asm_insn ("or{b}\t{%2, (%0,%1)|BYTE PTR [%0+%1], %2}", xops);
/* Test if TEST_ADDR == LAST_ADDR. */
xops[0] = reg;
[(match_operand 0 "memory_operand")]
""
{
- emit_insn (gen_probe_stack_1
- (word_mode, operands[0], const0_rtx));
+ emit_insn (gen_probe_stack_1 (adjust_address (operands[0], QImode, 0),
+ const0_rtx));
DONE;
})
;; Use OR for stack probes, this is shorter.
-(define_insn "@probe_stack_1_<mode>"
- [(set (match_operand:W 0 "memory_operand" "=m")
- (unspec:W [(match_operand:W 1 "const0_operand")]
+(define_insn "probe_stack_1"
+ [(set (match_operand:QI 0 "memory_operand" "=m")
+ (unspec:QI [(match_operand:QI 1 "const0_operand")]
UNSPEC_PROBE_STACK))
(clobber (reg:CC FLAGS_REG))]
""
- "or{<imodesuffix>}\t{%1, %0|%0, %1}"
+ "or{b}\t{%1, %0|%0, %1}"
[(set_attr "type" "alu1")
- (set_attr "mode" "<MODE>")
+ (set_attr "mode" "QI")
(set_attr "length_immediate" "1")])
-
+
(define_insn "@adjust_stack_and_probe_<mode>"
[(set (match_operand:P 0 "register_operand" "=r")
(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
}
/* { dg-final { scan-assembler-times "sub\[ql\]" 4 } } */
-/* { dg-final { scan-assembler-times "or\[ql\]" 3 } } */
-
+/* { dg-final { scan-assembler-times "or\[qlb\]" 3 } } */
/* { dg-final { scan-rtl-dump-times "allocation and probing in loop" 1 "expand" } } */
/* { dg-final { scan-rtl-dump-times "allocation and probing residuals" 1 "expand" } } */
-/* { dg-final { scan-assembler-times "or\[ql\]" 1 } } */
-
+/* { dg-final { scan-assembler-times "or\[qlb\]" 1 } } */
there are two probes in the final assembly code. */
/* { dg-final { scan-rtl-dump-times "allocation and probing in loop" 1 "expand" } } */
/* { dg-final { scan-rtl-dump-times "allocation and probing residuals" 1 "expand" } } */
-/* { dg-final { scan-assembler-times "or\[ql\]" 2 } } */
+/* { dg-final { scan-assembler-times "or\[qlb\]" 2 } } */
/* We also want to verify (indirectly) that the residual probe is
guarded. We do that by checking the number of conditional
These will all be equality tests. */
/* { dg-final { scan-assembler-times "(\?:je|jne)" 3 } } */
-
-