| // Copyright 2013 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Routines that are implemented in assembly in asm_{amd64,386,arm,arm64,ppc64x,s390x}.s |
| |
| // +build mips64 mips64le |
| |
| package runtime |
| |
| import _ "unsafe" // for go:linkname |
| |
| func cmpstring(s1, s2 string) int { |
| l := len(s1) |
| if len(s2) < l { |
| l = len(s2) |
| } |
| for i := 0; i < l; i++ { |
| c1, c2 := s1[i], s2[i] |
| if c1 < c2 { |
| return -1 |
| } |
| if c1 > c2 { |
| return +1 |
| } |
| } |
| if len(s1) < len(s2) { |
| return -1 |
| } |
| if len(s1) > len(s2) { |
| return +1 |
| } |
| return 0 |
| } |
| |
| //go:linkname bytes_Compare bytes.Compare |
| func bytes_Compare(s1, s2 []byte) int { |
| l := len(s1) |
| if len(s2) < l { |
| l = len(s2) |
| } |
| if l == 0 || &s1[0] == &s2[0] { |
| goto samebytes |
| } |
| for i := 0; i < l; i++ { |
| c1, c2 := s1[i], s2[i] |
| if c1 < c2 { |
| return -1 |
| } |
| if c1 > c2 { |
| return +1 |
| } |
| } |
| samebytes: |
| if len(s1) < len(s2) { |
| return -1 |
| } |
| if len(s1) > len(s2) { |
| return +1 |
| } |
| return 0 |
| } |