diff options
Diffstat (limited to 'gcc/config/rs6000/altivec.md')
-rw-r--r-- | gcc/config/rs6000/altivec.md | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md index 6d127b4e204..ff58d8e3fa8 100644 --- a/gcc/config/rs6000/altivec.md +++ b/gcc/config/rs6000/altivec.md @@ -295,6 +295,28 @@ }" [(set_attr "type" "*")]) +(define_insn "*save_world" + [(match_parallel 0 "save_world_operation" + [(clobber (match_operand:SI 1 "register_operand" "=l")) + (use (match_operand:SI 2 "call_operand" "s"))])] + "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT" + { + return "bl %z2"; + } + [(set_attr "type" "branch") + (set_attr "length" "4")]) + +(define_insn "*restore_world" + [(match_parallel 0 "restore_world_operation" + [(return) + (use (match_operand:SI 1 "register_operand" "l")) + (use (match_operand:SI 2 "call_operand" "s")) + (clobber (match_operand:SI 3 "gpc_reg_operand" "=r"))])] + "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT" + { + return "b %z2"; + }) + ;; Simple binary operations. (define_insn "addv16qi3" |