// 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}.s
// but are implemented in C for arm.

package runtime
#include "runtime.h"
#include "../../cmd/ld/textflag.h"

#pragma textflag NOSPLIT
func cmpstring(s1 String, s2 String) (v int) {
	uintgo i, l;
	byte c1, c2;
	
	l = s1.len;
        if(s2.len < l)
		l = s2.len;
        for(i=0; i<l; i++) {
		c1 = s1.str[i];
		c2 = s2.str[i];
		if(c1 < c2) {
			v = -1;
			goto done;
		}
		if(c1 > c2) {
			v = +1;
			goto done;
		}
	}
        if(s1.len < s2.len) {
		v = -1;
		goto done;
	}
        if(s1.len > s2.len) {
		v = +1;
		goto done;
	}
        v = 0;
 done:;
}

#pragma textflag NOSPLIT
func bytes·Compare(s1 Slice, s2 Slice) (v int) {
	uintgo i, l;
	byte c1, c2;
	
	l = s1.len;
        if(s2.len < l)
		l = s2.len;
        for(i=0; i<l; i++) {
		c1 = s1.array[i];
		c2 = s2.array[i];
		if(c1 < c2) {
			v = -1;
			goto done;
		}
		if(c1 > c2) {
			v = +1;
			goto done;
		}
	}
        if(s1.len < s2.len) {
		v = -1;
		goto done;
	}
	if(s1.len > s2.len) {
		v = +1;
		goto done;
	}
	v = 0;
 done:;
}
