summaryrefslogtreecommitdiff
path: root/newlib/libc/machine/mn10300/strcmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/machine/mn10300/strcmp.S')
-rw-r--r--newlib/libc/machine/mn10300/strcmp.S54
1 files changed, 54 insertions, 0 deletions
diff --git a/newlib/libc/machine/mn10300/strcmp.S b/newlib/libc/machine/mn10300/strcmp.S
new file mode 100644
index 00000000000..8aee9688ae8
--- /dev/null
+++ b/newlib/libc/machine/mn10300/strcmp.S
@@ -0,0 +1,54 @@
+ .file "strcmp.S"
+
+ .section .text
+ .global _strcmp
+ .type _strcmp,@function
+_strcmp:
+ movm [d2,d3,a2,a3],(sp)
+ mov d0,a0
+ mov d1,a1
+#ifndef __OPTIMIZE_SIZE__
+ or d1,d0
+ btst 3,d0
+ bne .L11
+ mov (a0),d1
+ mov (a1),d0
+ cmp d0,d1
+ bne .L11
+ mov -16843009,d3
+.L5:
+ setlb
+ mov (a0),d0
+ mov d3,d1
+ add d0,d1
+ not d0
+ and d0,d1
+ and -2139062144,d1
+ beq .L6
+ clr d0
+ jmp .L13
+.L6:
+ inc4 a0
+ inc4 a1
+ mov (a0),d1
+ mov (a1),d0
+ cmp d0,d1
+ leq
+#endif
+.L11:
+ setlb
+ movbu (a1),d2
+ movbu (a0),d0
+ cmp 0,d0
+ beq .L9
+ cmp d2,d0
+ bne .L9
+ inc a0
+ inc a1
+ lra
+.L9:
+ sub d2,d0
+.L13:
+ ret [d2,d3,a2,a3],16
+.Lfe1:
+ .size _strcmp,.Lfe1-_strcmp