Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison test/CodeGen/WebAssembly/comparisons_i64.ll @ 100:7d135dc70f03
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | afa8332a0e37 |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
96:6418606d0ead | 100:7d135dc70f03 |
---|---|
1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s | 1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s |
2 | 2 |
3 ; Test that basic 64-bit integer comparison operations assemble as expected. | 3 ; Test that basic 64-bit integer comparison operations assemble as expected. |
4 | 4 |
5 target datalayout = "e-p:32:32-i64:64-n32:64-S128" | 5 target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" |
6 target triple = "wasm32-unknown-unknown" | 6 target triple = "wasm32-unknown-unknown" |
7 | 7 |
8 ; CHECK-LABEL: eq_i64: | 8 ; CHECK-LABEL: eq_i64: |
9 ; CHECK-NEXT: .param i64{{$}} | 9 ; CHECK-NEXT: .param i64, i64{{$}} |
10 ; CHECK-NEXT: .param i64{{$}} | |
11 ; CHECK-NEXT: .result i32{{$}} | 10 ; CHECK-NEXT: .result i32{{$}} |
12 ; CHECK-NEXT: @1{{$}} | 11 ; CHECK-NEXT: i64.eq $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
13 ; CHECK-NEXT: set_local @2, pop{{$}} | 12 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
14 ; CHECK-NEXT: @0{{$}} | |
15 ; CHECK-NEXT: set_local @3, pop{{$}} | |
16 ; CHECK-NEXT: eq @3, @2{{$}} | |
17 ; CHECK-NEXT: set_local @4, pop{{$}} | |
18 ; CHECK-NEXT: return @4{{$}} | |
19 define i32 @eq_i64(i64 %x, i64 %y) { | 13 define i32 @eq_i64(i64 %x, i64 %y) { |
20 %a = icmp eq i64 %x, %y | 14 %a = icmp eq i64 %x, %y |
21 %b = zext i1 %a to i32 | 15 %b = zext i1 %a to i32 |
22 ret i32 %b | 16 ret i32 %b |
23 } | 17 } |
24 | 18 |
25 ; CHECK-LABEL: ne_i64: | 19 ; CHECK-LABEL: ne_i64: |
26 ; CHECK: ne @3, @2{{$}} | 20 ; CHECK: i64.ne $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
27 ; CHECK-NEXT: set_local @4, pop{{$}} | 21 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
28 define i32 @ne_i64(i64 %x, i64 %y) { | 22 define i32 @ne_i64(i64 %x, i64 %y) { |
29 %a = icmp ne i64 %x, %y | 23 %a = icmp ne i64 %x, %y |
30 %b = zext i1 %a to i32 | 24 %b = zext i1 %a to i32 |
31 ret i32 %b | 25 ret i32 %b |
32 } | 26 } |
33 | 27 |
34 ; CHECK-LABEL: slt_i64: | 28 ; CHECK-LABEL: slt_i64: |
35 ; CHECK: slt @3, @2{{$}} | 29 ; CHECK: i64.lt_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
36 ; CHECK-NEXT: set_local @4, pop{{$}} | 30 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
37 define i32 @slt_i64(i64 %x, i64 %y) { | 31 define i32 @slt_i64(i64 %x, i64 %y) { |
38 %a = icmp slt i64 %x, %y | 32 %a = icmp slt i64 %x, %y |
39 %b = zext i1 %a to i32 | 33 %b = zext i1 %a to i32 |
40 ret i32 %b | 34 ret i32 %b |
41 } | 35 } |
42 | 36 |
43 ; CHECK-LABEL: sle_i64: | 37 ; CHECK-LABEL: sle_i64: |
44 ; CHECK: sle @3, @2{{$}} | 38 ; CHECK: i64.le_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
45 ; CHECK-NEXT: set_local @4, pop{{$}} | 39 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
46 define i32 @sle_i64(i64 %x, i64 %y) { | 40 define i32 @sle_i64(i64 %x, i64 %y) { |
47 %a = icmp sle i64 %x, %y | 41 %a = icmp sle i64 %x, %y |
48 %b = zext i1 %a to i32 | 42 %b = zext i1 %a to i32 |
49 ret i32 %b | 43 ret i32 %b |
50 } | 44 } |
51 | 45 |
52 ; CHECK-LABEL: ult_i64: | 46 ; CHECK-LABEL: ult_i64: |
53 ; CHECK: ult @3, @2{{$}} | 47 ; CHECK: i64.lt_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
54 ; CHECK-NEXT: set_local @4, pop{{$}} | 48 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
55 define i32 @ult_i64(i64 %x, i64 %y) { | 49 define i32 @ult_i64(i64 %x, i64 %y) { |
56 %a = icmp ult i64 %x, %y | 50 %a = icmp ult i64 %x, %y |
57 %b = zext i1 %a to i32 | 51 %b = zext i1 %a to i32 |
58 ret i32 %b | 52 ret i32 %b |
59 } | 53 } |
60 | 54 |
61 ; CHECK-LABEL: ule_i64: | 55 ; CHECK-LABEL: ule_i64: |
62 ; CHECK: ule @3, @2{{$}} | 56 ; CHECK: i64.le_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
63 ; CHECK-NEXT: set_local @4, pop{{$}} | 57 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
64 define i32 @ule_i64(i64 %x, i64 %y) { | 58 define i32 @ule_i64(i64 %x, i64 %y) { |
65 %a = icmp ule i64 %x, %y | 59 %a = icmp ule i64 %x, %y |
66 %b = zext i1 %a to i32 | 60 %b = zext i1 %a to i32 |
67 ret i32 %b | 61 ret i32 %b |
68 } | 62 } |
69 | 63 |
70 ; CHECK-LABEL: sgt_i64: | 64 ; CHECK-LABEL: sgt_i64: |
71 ; CHECK: sgt @3, @2{{$}} | 65 ; CHECK: i64.gt_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
72 ; CHECK-NEXT: set_local @4, pop{{$}} | 66 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
73 define i32 @sgt_i64(i64 %x, i64 %y) { | 67 define i32 @sgt_i64(i64 %x, i64 %y) { |
74 %a = icmp sgt i64 %x, %y | 68 %a = icmp sgt i64 %x, %y |
75 %b = zext i1 %a to i32 | 69 %b = zext i1 %a to i32 |
76 ret i32 %b | 70 ret i32 %b |
77 } | 71 } |
78 | 72 |
79 ; CHECK-LABEL: sge_i64: | 73 ; CHECK-LABEL: sge_i64: |
80 ; CHECK: sge @3, @2{{$}} | 74 ; CHECK: i64.ge_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
81 ; CHECK-NEXT: set_local @4, pop{{$}} | 75 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
82 define i32 @sge_i64(i64 %x, i64 %y) { | 76 define i32 @sge_i64(i64 %x, i64 %y) { |
83 %a = icmp sge i64 %x, %y | 77 %a = icmp sge i64 %x, %y |
84 %b = zext i1 %a to i32 | 78 %b = zext i1 %a to i32 |
85 ret i32 %b | 79 ret i32 %b |
86 } | 80 } |
87 | 81 |
88 ; CHECK-LABEL: ugt_i64: | 82 ; CHECK-LABEL: ugt_i64: |
89 ; CHECK: ugt @3, @2{{$}} | 83 ; CHECK: i64.gt_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
90 ; CHECK-NEXT: set_local @4, pop{{$}} | 84 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
91 define i32 @ugt_i64(i64 %x, i64 %y) { | 85 define i32 @ugt_i64(i64 %x, i64 %y) { |
92 %a = icmp ugt i64 %x, %y | 86 %a = icmp ugt i64 %x, %y |
93 %b = zext i1 %a to i32 | 87 %b = zext i1 %a to i32 |
94 ret i32 %b | 88 ret i32 %b |
95 } | 89 } |
96 | 90 |
97 ; CHECK-LABEL: uge_i64: | 91 ; CHECK-LABEL: uge_i64: |
98 ; CHECK: uge @3, @2{{$}} | 92 ; CHECK: i64.ge_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} |
99 ; CHECK-NEXT: set_local @4, pop{{$}} | 93 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
100 define i32 @uge_i64(i64 %x, i64 %y) { | 94 define i32 @uge_i64(i64 %x, i64 %y) { |
101 %a = icmp uge i64 %x, %y | 95 %a = icmp uge i64 %x, %y |
102 %b = zext i1 %a to i32 | 96 %b = zext i1 %a to i32 |
103 ret i32 %b | 97 ret i32 %b |
104 } | 98 } |