Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison test/CodeGen/WebAssembly/comparisons_i32.ll @ 121:803732b1fca8
LLVM 5.0
author | kono |
---|---|
date | Fri, 27 Oct 2017 17:07:41 +0900 |
parents | 1172e4bd9c6f |
children |
comparison
equal
deleted
inserted
replaced
120:1172e4bd9c6f | 121:803732b1fca8 |
---|---|
2 ; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -fast-isel -fast-isel-abort=1 | FileCheck %s | 2 ; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -fast-isel -fast-isel-abort=1 | FileCheck %s |
3 | 3 |
4 ; Test that basic 32-bit integer comparison operations assemble as expected. | 4 ; Test that basic 32-bit integer comparison operations assemble as expected. |
5 | 5 |
6 target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" | 6 target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" |
7 target triple = "wasm32-unknown-unknown" | 7 target triple = "wasm32-unknown-unknown-wasm" |
8 | 8 |
9 ; CHECK-LABEL: eq_i32: | 9 ; CHECK-LABEL: eq_i32: |
10 ; CHECK-NEXT: .param i32, i32{{$}} | 10 ; CHECK-NEXT: .param i32, i32{{$}} |
11 ; CHECK-NEXT: .result i32{{$}} | 11 ; CHECK-NEXT: .result i32{{$}} |
12 ; CHECK-NEXT: i32.eq $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 12 ; CHECK-NEXT: get_local $push[[L0:[0-9]+]]=, 0{{$}} |
13 ; CHECK-NEXT: get_local $push[[L1:[0-9]+]]=, 1{{$}} | |
14 ; CHECK-NEXT: i32.eq $push[[NUM:[0-9]+]]=, $pop[[L0]], $pop[[L1]]{{$}} | |
13 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 15 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
14 define i32 @eq_i32(i32 %x, i32 %y) { | 16 define i32 @eq_i32(i32 %x, i32 %y) { |
15 %a = icmp eq i32 %x, %y | 17 %a = icmp eq i32 %x, %y |
16 %b = zext i1 %a to i32 | 18 %b = zext i1 %a to i32 |
17 ret i32 %b | 19 ret i32 %b |
18 } | 20 } |
19 | 21 |
20 ; CHECK-LABEL: ne_i32: | 22 ; CHECK-LABEL: ne_i32: |
21 ; CHECK: i32.ne $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 23 ; CHECK: i32.ne $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
22 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 24 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
23 define i32 @ne_i32(i32 %x, i32 %y) { | 25 define i32 @ne_i32(i32 %x, i32 %y) { |
24 %a = icmp ne i32 %x, %y | 26 %a = icmp ne i32 %x, %y |
25 %b = zext i1 %a to i32 | 27 %b = zext i1 %a to i32 |
26 ret i32 %b | 28 ret i32 %b |
27 } | 29 } |
28 | 30 |
29 ; CHECK-LABEL: slt_i32: | 31 ; CHECK-LABEL: slt_i32: |
30 ; CHECK: i32.lt_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 32 ; CHECK: i32.lt_s $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
31 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 33 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
32 define i32 @slt_i32(i32 %x, i32 %y) { | 34 define i32 @slt_i32(i32 %x, i32 %y) { |
33 %a = icmp slt i32 %x, %y | 35 %a = icmp slt i32 %x, %y |
34 %b = zext i1 %a to i32 | 36 %b = zext i1 %a to i32 |
35 ret i32 %b | 37 ret i32 %b |
36 } | 38 } |
37 | 39 |
38 ; CHECK-LABEL: sle_i32: | 40 ; CHECK-LABEL: sle_i32: |
39 ; CHECK: i32.le_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 41 ; CHECK: i32.le_s $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
40 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 42 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
41 define i32 @sle_i32(i32 %x, i32 %y) { | 43 define i32 @sle_i32(i32 %x, i32 %y) { |
42 %a = icmp sle i32 %x, %y | 44 %a = icmp sle i32 %x, %y |
43 %b = zext i1 %a to i32 | 45 %b = zext i1 %a to i32 |
44 ret i32 %b | 46 ret i32 %b |
45 } | 47 } |
46 | 48 |
47 ; CHECK-LABEL: ult_i32: | 49 ; CHECK-LABEL: ult_i32: |
48 ; CHECK: i32.lt_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 50 ; CHECK: i32.lt_u $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
49 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 51 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
50 define i32 @ult_i32(i32 %x, i32 %y) { | 52 define i32 @ult_i32(i32 %x, i32 %y) { |
51 %a = icmp ult i32 %x, %y | 53 %a = icmp ult i32 %x, %y |
52 %b = zext i1 %a to i32 | 54 %b = zext i1 %a to i32 |
53 ret i32 %b | 55 ret i32 %b |
54 } | 56 } |
55 | 57 |
56 ; CHECK-LABEL: ule_i32: | 58 ; CHECK-LABEL: ule_i32: |
57 ; CHECK: i32.le_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 59 ; CHECK: i32.le_u $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
58 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 60 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
59 define i32 @ule_i32(i32 %x, i32 %y) { | 61 define i32 @ule_i32(i32 %x, i32 %y) { |
60 %a = icmp ule i32 %x, %y | 62 %a = icmp ule i32 %x, %y |
61 %b = zext i1 %a to i32 | 63 %b = zext i1 %a to i32 |
62 ret i32 %b | 64 ret i32 %b |
63 } | 65 } |
64 | 66 |
65 ; CHECK-LABEL: sgt_i32: | 67 ; CHECK-LABEL: sgt_i32: |
66 ; CHECK: i32.gt_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 68 ; CHECK: i32.gt_s $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
67 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 69 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
68 define i32 @sgt_i32(i32 %x, i32 %y) { | 70 define i32 @sgt_i32(i32 %x, i32 %y) { |
69 %a = icmp sgt i32 %x, %y | 71 %a = icmp sgt i32 %x, %y |
70 %b = zext i1 %a to i32 | 72 %b = zext i1 %a to i32 |
71 ret i32 %b | 73 ret i32 %b |
72 } | 74 } |
73 | 75 |
74 ; CHECK-LABEL: sge_i32: | 76 ; CHECK-LABEL: sge_i32: |
75 ; CHECK: i32.ge_s $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 77 ; CHECK: i32.ge_s $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
76 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 78 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
77 define i32 @sge_i32(i32 %x, i32 %y) { | 79 define i32 @sge_i32(i32 %x, i32 %y) { |
78 %a = icmp sge i32 %x, %y | 80 %a = icmp sge i32 %x, %y |
79 %b = zext i1 %a to i32 | 81 %b = zext i1 %a to i32 |
80 ret i32 %b | 82 ret i32 %b |
81 } | 83 } |
82 | 84 |
83 ; CHECK-LABEL: ugt_i32: | 85 ; CHECK-LABEL: ugt_i32: |
84 ; CHECK: i32.gt_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 86 ; CHECK: i32.gt_u $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
85 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 87 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
86 define i32 @ugt_i32(i32 %x, i32 %y) { | 88 define i32 @ugt_i32(i32 %x, i32 %y) { |
87 %a = icmp ugt i32 %x, %y | 89 %a = icmp ugt i32 %x, %y |
88 %b = zext i1 %a to i32 | 90 %b = zext i1 %a to i32 |
89 ret i32 %b | 91 ret i32 %b |
90 } | 92 } |
91 | 93 |
92 ; CHECK-LABEL: uge_i32: | 94 ; CHECK-LABEL: uge_i32: |
93 ; CHECK: i32.ge_u $push[[NUM:[0-9]+]]=, $0, $1{{$}} | 95 ; CHECK: i32.ge_u $push[[NUM:[0-9]+]]=, $pop{{[0-9]+}}, $pop{{[0-9]+}}{{$}} |
94 ; CHECK-NEXT: return $pop[[NUM]]{{$}} | 96 ; CHECK-NEXT: return $pop[[NUM]]{{$}} |
95 define i32 @uge_i32(i32 %x, i32 %y) { | 97 define i32 @uge_i32(i32 %x, i32 %y) { |
96 %a = icmp uge i32 %x, %y | 98 %a = icmp uge i32 %x, %y |
97 %b = zext i1 %a to i32 | 99 %b = zext i1 %a to i32 |
98 ret i32 %b | 100 ret i32 %b |