~james-page/ubuntu/trusty/gccgo-go/trunk

« back to all changes in this revision

Viewing changes to src/pkg/runtime/noasm_arm.goc

  • Committer: James Page
  • Date: 2014-01-22 11:10:56 UTC
  • Revision ID: james.page@canonical.com-20140122111056-hfyxm1ozm7if9t3f
Tags: upstream-1.2
Import upstream version 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2013 The Go Authors. All rights reserved.
 
2
// Use of this source code is governed by a BSD-style
 
3
// license that can be found in the LICENSE file.
 
4
 
 
5
// Routines that are implemented in assembly in asm_{amd64,386}.s
 
6
// but are implemented in C for arm.
 
7
 
 
8
package runtime
 
9
#include "runtime.h"
 
10
#include "../../cmd/ld/textflag.h"
 
11
 
 
12
#pragma textflag NOSPLIT
 
13
func cmpstring(s1 String, s2 String) (v int) {
 
14
        uintgo i, l;
 
15
        byte c1, c2;
 
16
        
 
17
        l = s1.len;
 
18
        if(s2.len < l)
 
19
                l = s2.len;
 
20
        for(i=0; i<l; i++) {
 
21
                c1 = s1.str[i];
 
22
                c2 = s2.str[i];
 
23
                if(c1 < c2) {
 
24
                        v = -1;
 
25
                        goto done;
 
26
                }
 
27
                if(c1 > c2) {
 
28
                        v = +1;
 
29
                        goto done;
 
30
                }
 
31
        }
 
32
        if(s1.len < s2.len) {
 
33
                v = -1;
 
34
                goto done;
 
35
        }
 
36
        if(s1.len > s2.len) {
 
37
                v = +1;
 
38
                goto done;
 
39
        }
 
40
        v = 0;
 
41
 done:;
 
42
}
 
43
 
 
44
#pragma textflag NOSPLIT
 
45
func bytes·Compare(s1 Slice, s2 Slice) (v int) {
 
46
        uintgo i, l;
 
47
        byte c1, c2;
 
48
        
 
49
        l = s1.len;
 
50
        if(s2.len < l)
 
51
                l = s2.len;
 
52
        for(i=0; i<l; i++) {
 
53
                c1 = s1.array[i];
 
54
                c2 = s2.array[i];
 
55
                if(c1 < c2) {
 
56
                        v = -1;
 
57
                        goto done;
 
58
                }
 
59
                if(c1 > c2) {
 
60
                        v = +1;
 
61
                        goto done;
 
62
                }
 
63
        }
 
64
        if(s1.len < s2.len) {
 
65
                v = -1;
 
66
                goto done;
 
67
        }
 
68
        if(s1.len > s2.len) {
 
69
                v = +1;
 
70
                goto done;
 
71
        }
 
72
        v = 0;
 
73
 done:;
 
74
}