OLD | NEW |
1 ; Test if we can read compare instructions. | 1 ; Test if we can read compare instructions. |
2 | 2 |
3 ; RUN: llvm-as < %s | pnacl-freeze \ | 3 ; RUN: llvm-as < %s | pnacl-freeze -allow-local-symbol-tables \ |
4 ; RUN: | %llvm2ice -notranslate -verbose=inst -build-on-read \ | 4 ; RUN: | %llvm2ice -notranslate -verbose=inst -build-on-read \ |
5 ; RUN: -allow-pnacl-reader-error-recovery \ | 5 ; RUN: -allow-pnacl-reader-error-recovery \ |
| 6 ; RUN: -allow-local-symbol-tables \ |
6 ; RUN: | FileCheck %s | 7 ; RUN: | FileCheck %s |
7 | 8 |
8 define i1 @IcmpI1(i32 %p1, i32 %p2) { | 9 define i1 @IcmpI1(i32 %p1, i32 %p2) { |
| 10 entry: |
9 %a1 = trunc i32 %p1 to i1 | 11 %a1 = trunc i32 %p1 to i1 |
10 %a2 = trunc i32 %p2 to i1 | 12 %a2 = trunc i32 %p2 to i1 |
11 %veq = icmp eq i1 %a1, %a2 | 13 %veq = icmp eq i1 %a1, %a2 |
12 %vne = icmp ne i1 %a1, %a2 | 14 %vne = icmp ne i1 %a1, %a2 |
13 %vugt = icmp ugt i1 %a1, %a2 | 15 %vugt = icmp ugt i1 %a1, %a2 |
14 %vuge = icmp uge i1 %a1, %a2 | 16 %vuge = icmp uge i1 %a1, %a2 |
15 %vult = icmp ult i1 %a1, %a2 | 17 %vult = icmp ult i1 %a1, %a2 |
16 %vule = icmp ule i1 %a1, %a2 | 18 %vule = icmp ule i1 %a1, %a2 |
17 %vsgt = icmp sgt i1 %a1, %a2 | 19 %vsgt = icmp sgt i1 %a1, %a2 |
18 %vsge = icmp sge i1 %a1, %a2 | 20 %vsge = icmp sge i1 %a1, %a2 |
19 %vslt = icmp slt i1 %a1, %a2 | 21 %vslt = icmp slt i1 %a1, %a2 |
20 %vsle = icmp sle i1 %a1, %a2 | 22 %vsle = icmp sle i1 %a1, %a2 |
21 ret i1 %veq | 23 ret i1 %veq |
22 } | 24 } |
23 | 25 |
24 ; CHECK: define i1 @IcmpI1(i32 %__0, i32 %__1) { | 26 ; CHECK: define i1 @IcmpI1(i32 %p1, i32 %p2) { |
25 ; CHECK-NEXT: __0: | 27 ; CHECK-NEXT: entry: |
26 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i1 | 28 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i1 |
27 ; CHECK-NEXT: %__3 = trunc i32 %__1 to i1 | 29 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i1 |
28 ; CHECK-NEXT: %__4 = icmp eq i1 %__2, %__3 | 30 ; CHECK-NEXT: %veq = icmp eq i1 %a1, %a2 |
29 ; CHECK-NEXT: %__5 = icmp ne i1 %__2, %__3 | 31 ; CHECK-NEXT: %vne = icmp ne i1 %a1, %a2 |
30 ; CHECK-NEXT: %__6 = icmp ugt i1 %__2, %__3 | 32 ; CHECK-NEXT: %vugt = icmp ugt i1 %a1, %a2 |
31 ; CHECK-NEXT: %__7 = icmp uge i1 %__2, %__3 | 33 ; CHECK-NEXT: %vuge = icmp uge i1 %a1, %a2 |
32 ; CHECK-NEXT: %__8 = icmp ult i1 %__2, %__3 | 34 ; CHECK-NEXT: %vult = icmp ult i1 %a1, %a2 |
33 ; CHECK-NEXT: %__9 = icmp ule i1 %__2, %__3 | 35 ; CHECK-NEXT: %vule = icmp ule i1 %a1, %a2 |
34 ; CHECK-NEXT: %__10 = icmp sgt i1 %__2, %__3 | 36 ; CHECK-NEXT: %vsgt = icmp sgt i1 %a1, %a2 |
35 ; CHECK-NEXT: %__11 = icmp sge i1 %__2, %__3 | 37 ; CHECK-NEXT: %vsge = icmp sge i1 %a1, %a2 |
36 ; CHECK-NEXT: %__12 = icmp slt i1 %__2, %__3 | 38 ; CHECK-NEXT: %vslt = icmp slt i1 %a1, %a2 |
37 ; CHECK-NEXT: %__13 = icmp sle i1 %__2, %__3 | 39 ; CHECK-NEXT: %vsle = icmp sle i1 %a1, %a2 |
38 ; CHECK-NEXT: ret i1 %__4 | 40 ; CHECK-NEXT: ret i1 %veq |
39 ; CHECK-NEXT: } | 41 ; CHECK-NEXT: } |
40 | 42 |
41 define i1 @IcmpI8(i32 %p1, i32 %p2) { | 43 define i1 @IcmpI8(i32 %p1, i32 %p2) { |
| 44 entry: |
42 %a1 = trunc i32 %p1 to i8 | 45 %a1 = trunc i32 %p1 to i8 |
43 %a2 = trunc i32 %p2 to i8 | 46 %a2 = trunc i32 %p2 to i8 |
44 %veq = icmp eq i8 %a1, %a2 | 47 %veq = icmp eq i8 %a1, %a2 |
45 %vne = icmp ne i8 %a1, %a2 | 48 %vne = icmp ne i8 %a1, %a2 |
46 %vugt = icmp ugt i8 %a1, %a2 | 49 %vugt = icmp ugt i8 %a1, %a2 |
47 %vuge = icmp uge i8 %a1, %a2 | 50 %vuge = icmp uge i8 %a1, %a2 |
48 %vult = icmp ult i8 %a1, %a2 | 51 %vult = icmp ult i8 %a1, %a2 |
49 %vule = icmp ule i8 %a1, %a2 | 52 %vule = icmp ule i8 %a1, %a2 |
50 %vsgt = icmp sgt i8 %a1, %a2 | 53 %vsgt = icmp sgt i8 %a1, %a2 |
51 %vsge = icmp sge i8 %a1, %a2 | 54 %vsge = icmp sge i8 %a1, %a2 |
52 %vslt = icmp slt i8 %a1, %a2 | 55 %vslt = icmp slt i8 %a1, %a2 |
53 %vsle = icmp sle i8 %a1, %a2 | 56 %vsle = icmp sle i8 %a1, %a2 |
54 ret i1 %veq | 57 ret i1 %veq |
55 } | 58 } |
56 | 59 |
57 ; CHECK-NEXT: define i1 @IcmpI8(i32 %__0, i32 %__1) { | 60 ; CHECK-NEXT: define i1 @IcmpI8(i32 %p1, i32 %p2) { |
58 ; CHECK-NEXT: __0: | 61 ; CHECK-NEXT: entry: |
59 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i8 | 62 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i8 |
60 ; CHECK-NEXT: %__3 = trunc i32 %__1 to i8 | 63 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i8 |
61 ; CHECK-NEXT: %__4 = icmp eq i8 %__2, %__3 | 64 ; CHECK-NEXT: %veq = icmp eq i8 %a1, %a2 |
62 ; CHECK-NEXT: %__5 = icmp ne i8 %__2, %__3 | 65 ; CHECK-NEXT: %vne = icmp ne i8 %a1, %a2 |
63 ; CHECK-NEXT: %__6 = icmp ugt i8 %__2, %__3 | 66 ; CHECK-NEXT: %vugt = icmp ugt i8 %a1, %a2 |
64 ; CHECK-NEXT: %__7 = icmp uge i8 %__2, %__3 | 67 ; CHECK-NEXT: %vuge = icmp uge i8 %a1, %a2 |
65 ; CHECK-NEXT: %__8 = icmp ult i8 %__2, %__3 | 68 ; CHECK-NEXT: %vult = icmp ult i8 %a1, %a2 |
66 ; CHECK-NEXT: %__9 = icmp ule i8 %__2, %__3 | 69 ; CHECK-NEXT: %vule = icmp ule i8 %a1, %a2 |
67 ; CHECK-NEXT: %__10 = icmp sgt i8 %__2, %__3 | 70 ; CHECK-NEXT: %vsgt = icmp sgt i8 %a1, %a2 |
68 ; CHECK-NEXT: %__11 = icmp sge i8 %__2, %__3 | 71 ; CHECK-NEXT: %vsge = icmp sge i8 %a1, %a2 |
69 ; CHECK-NEXT: %__12 = icmp slt i8 %__2, %__3 | 72 ; CHECK-NEXT: %vslt = icmp slt i8 %a1, %a2 |
70 ; CHECK-NEXT: %__13 = icmp sle i8 %__2, %__3 | 73 ; CHECK-NEXT: %vsle = icmp sle i8 %a1, %a2 |
71 ; CHECK-NEXT: ret i1 %__4 | 74 ; CHECK-NEXT: ret i1 %veq |
72 ; CHECK-NEXT: } | 75 ; CHECK-NEXT: } |
73 | 76 |
74 define i1 @IcmpI16(i32 %p1, i32 %p2) { | 77 define i1 @IcmpI16(i32 %p1, i32 %p2) { |
| 78 entry: |
75 %a1 = trunc i32 %p1 to i16 | 79 %a1 = trunc i32 %p1 to i16 |
76 %a2 = trunc i32 %p2 to i16 | 80 %a2 = trunc i32 %p2 to i16 |
77 %veq = icmp eq i16 %a1, %a2 | 81 %veq = icmp eq i16 %a1, %a2 |
78 %vne = icmp ne i16 %a1, %a2 | 82 %vne = icmp ne i16 %a1, %a2 |
79 %vugt = icmp ugt i16 %a1, %a2 | 83 %vugt = icmp ugt i16 %a1, %a2 |
80 %vuge = icmp uge i16 %a1, %a2 | 84 %vuge = icmp uge i16 %a1, %a2 |
81 %vult = icmp ult i16 %a1, %a2 | 85 %vult = icmp ult i16 %a1, %a2 |
82 %vule = icmp ule i16 %a1, %a2 | 86 %vule = icmp ule i16 %a1, %a2 |
83 %vsgt = icmp sgt i16 %a1, %a2 | 87 %vsgt = icmp sgt i16 %a1, %a2 |
84 %vsge = icmp sge i16 %a1, %a2 | 88 %vsge = icmp sge i16 %a1, %a2 |
85 %vslt = icmp slt i16 %a1, %a2 | 89 %vslt = icmp slt i16 %a1, %a2 |
86 %vsle = icmp sle i16 %a1, %a2 | 90 %vsle = icmp sle i16 %a1, %a2 |
87 ret i1 %veq | 91 ret i1 %veq |
88 } | 92 } |
89 | 93 |
90 ; CHECK-NEXT: define i1 @IcmpI16(i32 %__0, i32 %__1) { | 94 ; CHECK-NEXT: define i1 @IcmpI16(i32 %p1, i32 %p2) { |
91 ; CHECK-NEXT: __0: | 95 ; CHECK-NEXT: entry: |
92 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i16 | 96 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i16 |
93 ; CHECK-NEXT: %__3 = trunc i32 %__1 to i16 | 97 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i16 |
94 ; CHECK-NEXT: %__4 = icmp eq i16 %__2, %__3 | 98 ; CHECK-NEXT: %veq = icmp eq i16 %a1, %a2 |
95 ; CHECK-NEXT: %__5 = icmp ne i16 %__2, %__3 | 99 ; CHECK-NEXT: %vne = icmp ne i16 %a1, %a2 |
96 ; CHECK-NEXT: %__6 = icmp ugt i16 %__2, %__3 | 100 ; CHECK-NEXT: %vugt = icmp ugt i16 %a1, %a2 |
97 ; CHECK-NEXT: %__7 = icmp uge i16 %__2, %__3 | 101 ; CHECK-NEXT: %vuge = icmp uge i16 %a1, %a2 |
98 ; CHECK-NEXT: %__8 = icmp ult i16 %__2, %__3 | 102 ; CHECK-NEXT: %vult = icmp ult i16 %a1, %a2 |
99 ; CHECK-NEXT: %__9 = icmp ule i16 %__2, %__3 | 103 ; CHECK-NEXT: %vule = icmp ule i16 %a1, %a2 |
100 ; CHECK-NEXT: %__10 = icmp sgt i16 %__2, %__3 | 104 ; CHECK-NEXT: %vsgt = icmp sgt i16 %a1, %a2 |
101 ; CHECK-NEXT: %__11 = icmp sge i16 %__2, %__3 | 105 ; CHECK-NEXT: %vsge = icmp sge i16 %a1, %a2 |
102 ; CHECK-NEXT: %__12 = icmp slt i16 %__2, %__3 | 106 ; CHECK-NEXT: %vslt = icmp slt i16 %a1, %a2 |
103 ; CHECK-NEXT: %__13 = icmp sle i16 %__2, %__3 | 107 ; CHECK-NEXT: %vsle = icmp sle i16 %a1, %a2 |
104 ; CHECK-NEXT: ret i1 %__4 | 108 ; CHECK-NEXT: ret i1 %veq |
105 ; CHECK-NEXT: } | 109 ; CHECK-NEXT: } |
106 | 110 |
107 define i1 @IcmpI32(i32 %a1, i32 %a2) { | 111 define i1 @IcmpI32(i32 %a1, i32 %a2) { |
| 112 entry: |
108 %veq = icmp eq i32 %a1, %a2 | 113 %veq = icmp eq i32 %a1, %a2 |
109 %vne = icmp ne i32 %a1, %a2 | 114 %vne = icmp ne i32 %a1, %a2 |
110 %vugt = icmp ugt i32 %a1, %a2 | 115 %vugt = icmp ugt i32 %a1, %a2 |
111 %vuge = icmp uge i32 %a1, %a2 | 116 %vuge = icmp uge i32 %a1, %a2 |
112 %vult = icmp ult i32 %a1, %a2 | 117 %vult = icmp ult i32 %a1, %a2 |
113 %vule = icmp ule i32 %a1, %a2 | 118 %vule = icmp ule i32 %a1, %a2 |
114 %vsgt = icmp sgt i32 %a1, %a2 | 119 %vsgt = icmp sgt i32 %a1, %a2 |
115 %vsge = icmp sge i32 %a1, %a2 | 120 %vsge = icmp sge i32 %a1, %a2 |
116 %vslt = icmp slt i32 %a1, %a2 | 121 %vslt = icmp slt i32 %a1, %a2 |
117 %vsle = icmp sle i32 %a1, %a2 | 122 %vsle = icmp sle i32 %a1, %a2 |
118 ret i1 %veq | 123 ret i1 %veq |
119 } | 124 } |
120 | 125 |
121 ; CHECK-NEXT: define i1 @IcmpI32(i32 %__0, i32 %__1) { | 126 ; CHECK-NEXT: define i1 @IcmpI32(i32 %a1, i32 %a2) { |
122 ; CHECK-NEXT: __0: | 127 ; CHECK-NEXT: entry: |
123 ; CHECK-NEXT: %__2 = icmp eq i32 %__0, %__1 | 128 ; CHECK-NEXT: %veq = icmp eq i32 %a1, %a2 |
124 ; CHECK-NEXT: %__3 = icmp ne i32 %__0, %__1 | 129 ; CHECK-NEXT: %vne = icmp ne i32 %a1, %a2 |
125 ; CHECK-NEXT: %__4 = icmp ugt i32 %__0, %__1 | 130 ; CHECK-NEXT: %vugt = icmp ugt i32 %a1, %a2 |
126 ; CHECK-NEXT: %__5 = icmp uge i32 %__0, %__1 | 131 ; CHECK-NEXT: %vuge = icmp uge i32 %a1, %a2 |
127 ; CHECK-NEXT: %__6 = icmp ult i32 %__0, %__1 | 132 ; CHECK-NEXT: %vult = icmp ult i32 %a1, %a2 |
128 ; CHECK-NEXT: %__7 = icmp ule i32 %__0, %__1 | 133 ; CHECK-NEXT: %vule = icmp ule i32 %a1, %a2 |
129 ; CHECK-NEXT: %__8 = icmp sgt i32 %__0, %__1 | 134 ; CHECK-NEXT: %vsgt = icmp sgt i32 %a1, %a2 |
130 ; CHECK-NEXT: %__9 = icmp sge i32 %__0, %__1 | 135 ; CHECK-NEXT: %vsge = icmp sge i32 %a1, %a2 |
131 ; CHECK-NEXT: %__10 = icmp slt i32 %__0, %__1 | 136 ; CHECK-NEXT: %vslt = icmp slt i32 %a1, %a2 |
132 ; CHECK-NEXT: %__11 = icmp sle i32 %__0, %__1 | 137 ; CHECK-NEXT: %vsle = icmp sle i32 %a1, %a2 |
133 ; CHECK-NEXT: ret i1 %__2 | 138 ; CHECK-NEXT: ret i1 %veq |
134 ; CHECK-NEXT: } | 139 ; CHECK-NEXT: } |
135 | 140 |
136 define i1 @IcmpI64(i64 %a1, i64 %a2) { | 141 define i1 @IcmpI64(i64 %a1, i64 %a2) { |
| 142 entry: |
137 %veq = icmp eq i64 %a1, %a2 | 143 %veq = icmp eq i64 %a1, %a2 |
138 %vne = icmp ne i64 %a1, %a2 | 144 %vne = icmp ne i64 %a1, %a2 |
139 %vugt = icmp ugt i64 %a1, %a2 | 145 %vugt = icmp ugt i64 %a1, %a2 |
140 %vuge = icmp uge i64 %a1, %a2 | 146 %vuge = icmp uge i64 %a1, %a2 |
141 %vult = icmp ult i64 %a1, %a2 | 147 %vult = icmp ult i64 %a1, %a2 |
142 %vule = icmp ule i64 %a1, %a2 | 148 %vule = icmp ule i64 %a1, %a2 |
143 %vsgt = icmp sgt i64 %a1, %a2 | 149 %vsgt = icmp sgt i64 %a1, %a2 |
144 %vsge = icmp sge i64 %a1, %a2 | 150 %vsge = icmp sge i64 %a1, %a2 |
145 %vslt = icmp slt i64 %a1, %a2 | 151 %vslt = icmp slt i64 %a1, %a2 |
146 %vsle = icmp sle i64 %a1, %a2 | 152 %vsle = icmp sle i64 %a1, %a2 |
147 ret i1 %veq | 153 ret i1 %veq |
148 } | 154 } |
149 | 155 |
150 ; CHECK-NEXT: define i1 @IcmpI64(i64 %__0, i64 %__1) { | 156 ; CHECK-NEXT: define i1 @IcmpI64(i64 %a1, i64 %a2) { |
151 ; CHECK-NEXT: __0: | 157 ; CHECK-NEXT: entry: |
152 ; CHECK-NEXT: %__2 = icmp eq i64 %__0, %__1 | 158 ; CHECK-NEXT: %veq = icmp eq i64 %a1, %a2 |
153 ; CHECK-NEXT: %__3 = icmp ne i64 %__0, %__1 | 159 ; CHECK-NEXT: %vne = icmp ne i64 %a1, %a2 |
154 ; CHECK-NEXT: %__4 = icmp ugt i64 %__0, %__1 | 160 ; CHECK-NEXT: %vugt = icmp ugt i64 %a1, %a2 |
155 ; CHECK-NEXT: %__5 = icmp uge i64 %__0, %__1 | 161 ; CHECK-NEXT: %vuge = icmp uge i64 %a1, %a2 |
156 ; CHECK-NEXT: %__6 = icmp ult i64 %__0, %__1 | 162 ; CHECK-NEXT: %vult = icmp ult i64 %a1, %a2 |
157 ; CHECK-NEXT: %__7 = icmp ule i64 %__0, %__1 | 163 ; CHECK-NEXT: %vule = icmp ule i64 %a1, %a2 |
158 ; CHECK-NEXT: %__8 = icmp sgt i64 %__0, %__1 | 164 ; CHECK-NEXT: %vsgt = icmp sgt i64 %a1, %a2 |
159 ; CHECK-NEXT: %__9 = icmp sge i64 %__0, %__1 | 165 ; CHECK-NEXT: %vsge = icmp sge i64 %a1, %a2 |
160 ; CHECK-NEXT: %__10 = icmp slt i64 %__0, %__1 | 166 ; CHECK-NEXT: %vslt = icmp slt i64 %a1, %a2 |
161 ; CHECK-NEXT: %__11 = icmp sle i64 %__0, %__1 | 167 ; CHECK-NEXT: %vsle = icmp sle i64 %a1, %a2 |
162 ; CHECK-NEXT: ret i1 %__2 | 168 ; CHECK-NEXT: ret i1 %veq |
163 ; CHECK-NEXT: } | 169 ; CHECK-NEXT: } |
164 | 170 |
165 define <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { | 171 define <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { |
| 172 entry: |
166 %veq = icmp eq <4 x i1> %a1, %a2 | 173 %veq = icmp eq <4 x i1> %a1, %a2 |
167 %vne = icmp ne <4 x i1> %a1, %a2 | 174 %vne = icmp ne <4 x i1> %a1, %a2 |
168 %vugt = icmp ugt <4 x i1> %a1, %a2 | 175 %vugt = icmp ugt <4 x i1> %a1, %a2 |
169 %vuge = icmp uge <4 x i1> %a1, %a2 | 176 %vuge = icmp uge <4 x i1> %a1, %a2 |
170 %vult = icmp ult <4 x i1> %a1, %a2 | 177 %vult = icmp ult <4 x i1> %a1, %a2 |
171 %vule = icmp ule <4 x i1> %a1, %a2 | 178 %vule = icmp ule <4 x i1> %a1, %a2 |
172 %vsgt = icmp sgt <4 x i1> %a1, %a2 | 179 %vsgt = icmp sgt <4 x i1> %a1, %a2 |
173 %vsge = icmp sge <4 x i1> %a1, %a2 | 180 %vsge = icmp sge <4 x i1> %a1, %a2 |
174 %vslt = icmp slt <4 x i1> %a1, %a2 | 181 %vslt = icmp slt <4 x i1> %a1, %a2 |
175 %vsle = icmp sle <4 x i1> %a1, %a2 | 182 %vsle = icmp sle <4 x i1> %a1, %a2 |
176 ret <4 x i1> %veq | 183 ret <4 x i1> %veq |
177 } | 184 } |
178 | 185 |
179 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI1(<4 x i1> %__0, <4 x i1> %__1) { | 186 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { |
180 ; CHECK-NEXT: __0: | 187 ; CHECK-NEXT: entry: |
181 ; CHECK-NEXT: %__2 = icmp eq <4 x i1> %__0, %__1 | 188 ; CHECK-NEXT: %veq = icmp eq <4 x i1> %a1, %a2 |
182 ; CHECK-NEXT: %__3 = icmp ne <4 x i1> %__0, %__1 | 189 ; CHECK-NEXT: %vne = icmp ne <4 x i1> %a1, %a2 |
183 ; CHECK-NEXT: %__4 = icmp ugt <4 x i1> %__0, %__1 | 190 ; CHECK-NEXT: %vugt = icmp ugt <4 x i1> %a1, %a2 |
184 ; CHECK-NEXT: %__5 = icmp uge <4 x i1> %__0, %__1 | 191 ; CHECK-NEXT: %vuge = icmp uge <4 x i1> %a1, %a2 |
185 ; CHECK-NEXT: %__6 = icmp ult <4 x i1> %__0, %__1 | 192 ; CHECK-NEXT: %vult = icmp ult <4 x i1> %a1, %a2 |
186 ; CHECK-NEXT: %__7 = icmp ule <4 x i1> %__0, %__1 | 193 ; CHECK-NEXT: %vule = icmp ule <4 x i1> %a1, %a2 |
187 ; CHECK-NEXT: %__8 = icmp sgt <4 x i1> %__0, %__1 | 194 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i1> %a1, %a2 |
188 ; CHECK-NEXT: %__9 = icmp sge <4 x i1> %__0, %__1 | 195 ; CHECK-NEXT: %vsge = icmp sge <4 x i1> %a1, %a2 |
189 ; CHECK-NEXT: %__10 = icmp slt <4 x i1> %__0, %__1 | 196 ; CHECK-NEXT: %vslt = icmp slt <4 x i1> %a1, %a2 |
190 ; CHECK-NEXT: %__11 = icmp sle <4 x i1> %__0, %__1 | 197 ; CHECK-NEXT: %vsle = icmp sle <4 x i1> %a1, %a2 |
191 ; CHECK-NEXT: ret <4 x i1> %__2 | 198 ; CHECK-NEXT: ret <4 x i1> %veq |
192 ; CHECK-NEXT: } | 199 ; CHECK-NEXT: } |
193 | 200 |
194 define <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { | 201 define <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { |
| 202 entry: |
195 %veq = icmp eq <8 x i1> %a1, %a2 | 203 %veq = icmp eq <8 x i1> %a1, %a2 |
196 %vne = icmp ne <8 x i1> %a1, %a2 | 204 %vne = icmp ne <8 x i1> %a1, %a2 |
197 %vugt = icmp ugt <8 x i1> %a1, %a2 | 205 %vugt = icmp ugt <8 x i1> %a1, %a2 |
198 %vuge = icmp uge <8 x i1> %a1, %a2 | 206 %vuge = icmp uge <8 x i1> %a1, %a2 |
199 %vult = icmp ult <8 x i1> %a1, %a2 | 207 %vult = icmp ult <8 x i1> %a1, %a2 |
200 %vule = icmp ule <8 x i1> %a1, %a2 | 208 %vule = icmp ule <8 x i1> %a1, %a2 |
201 %vsgt = icmp sgt <8 x i1> %a1, %a2 | 209 %vsgt = icmp sgt <8 x i1> %a1, %a2 |
202 %vsge = icmp sge <8 x i1> %a1, %a2 | 210 %vsge = icmp sge <8 x i1> %a1, %a2 |
203 %vslt = icmp slt <8 x i1> %a1, %a2 | 211 %vslt = icmp slt <8 x i1> %a1, %a2 |
204 %vsle = icmp sle <8 x i1> %a1, %a2 | 212 %vsle = icmp sle <8 x i1> %a1, %a2 |
205 ret <8 x i1> %veq | 213 ret <8 x i1> %veq |
206 } | 214 } |
207 | 215 |
208 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI1(<8 x i1> %__0, <8 x i1> %__1) { | 216 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { |
209 ; CHECK-NEXT: __0: | 217 ; CHECK-NEXT: entry: |
210 ; CHECK-NEXT: %__2 = icmp eq <8 x i1> %__0, %__1 | 218 ; CHECK-NEXT: %veq = icmp eq <8 x i1> %a1, %a2 |
211 ; CHECK-NEXT: %__3 = icmp ne <8 x i1> %__0, %__1 | 219 ; CHECK-NEXT: %vne = icmp ne <8 x i1> %a1, %a2 |
212 ; CHECK-NEXT: %__4 = icmp ugt <8 x i1> %__0, %__1 | 220 ; CHECK-NEXT: %vugt = icmp ugt <8 x i1> %a1, %a2 |
213 ; CHECK-NEXT: %__5 = icmp uge <8 x i1> %__0, %__1 | 221 ; CHECK-NEXT: %vuge = icmp uge <8 x i1> %a1, %a2 |
214 ; CHECK-NEXT: %__6 = icmp ult <8 x i1> %__0, %__1 | 222 ; CHECK-NEXT: %vult = icmp ult <8 x i1> %a1, %a2 |
215 ; CHECK-NEXT: %__7 = icmp ule <8 x i1> %__0, %__1 | 223 ; CHECK-NEXT: %vule = icmp ule <8 x i1> %a1, %a2 |
216 ; CHECK-NEXT: %__8 = icmp sgt <8 x i1> %__0, %__1 | 224 ; CHECK-NEXT: %vsgt = icmp sgt <8 x i1> %a1, %a2 |
217 ; CHECK-NEXT: %__9 = icmp sge <8 x i1> %__0, %__1 | 225 ; CHECK-NEXT: %vsge = icmp sge <8 x i1> %a1, %a2 |
218 ; CHECK-NEXT: %__10 = icmp slt <8 x i1> %__0, %__1 | 226 ; CHECK-NEXT: %vslt = icmp slt <8 x i1> %a1, %a2 |
219 ; CHECK-NEXT: %__11 = icmp sle <8 x i1> %__0, %__1 | 227 ; CHECK-NEXT: %vsle = icmp sle <8 x i1> %a1, %a2 |
220 ; CHECK-NEXT: ret <8 x i1> %__2 | 228 ; CHECK-NEXT: ret <8 x i1> %veq |
221 ; CHECK-NEXT: } | 229 ; CHECK-NEXT: } |
222 | 230 |
223 define <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { | 231 define <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { |
| 232 entry: |
224 %veq = icmp eq <16 x i1> %a1, %a2 | 233 %veq = icmp eq <16 x i1> %a1, %a2 |
225 %vne = icmp ne <16 x i1> %a1, %a2 | 234 %vne = icmp ne <16 x i1> %a1, %a2 |
226 %vugt = icmp ugt <16 x i1> %a1, %a2 | 235 %vugt = icmp ugt <16 x i1> %a1, %a2 |
227 %vuge = icmp uge <16 x i1> %a1, %a2 | 236 %vuge = icmp uge <16 x i1> %a1, %a2 |
228 %vult = icmp ult <16 x i1> %a1, %a2 | 237 %vult = icmp ult <16 x i1> %a1, %a2 |
229 %vule = icmp ule <16 x i1> %a1, %a2 | 238 %vule = icmp ule <16 x i1> %a1, %a2 |
230 %vsgt = icmp sgt <16 x i1> %a1, %a2 | 239 %vsgt = icmp sgt <16 x i1> %a1, %a2 |
231 %vsge = icmp sge <16 x i1> %a1, %a2 | 240 %vsge = icmp sge <16 x i1> %a1, %a2 |
232 %vslt = icmp slt <16 x i1> %a1, %a2 | 241 %vslt = icmp slt <16 x i1> %a1, %a2 |
233 %vsle = icmp sle <16 x i1> %a1, %a2 | 242 %vsle = icmp sle <16 x i1> %a1, %a2 |
234 ret <16 x i1> %veq | 243 ret <16 x i1> %veq |
235 } | 244 } |
236 | 245 |
237 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI1(<16 x i1> %__0, <16 x i1> %__1) { | 246 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { |
238 ; CHECK-NEXT: __0: | 247 ; CHECK-NEXT: entry: |
239 ; CHECK-NEXT: %__2 = icmp eq <16 x i1> %__0, %__1 | 248 ; CHECK-NEXT: %veq = icmp eq <16 x i1> %a1, %a2 |
240 ; CHECK-NEXT: %__3 = icmp ne <16 x i1> %__0, %__1 | 249 ; CHECK-NEXT: %vne = icmp ne <16 x i1> %a1, %a2 |
241 ; CHECK-NEXT: %__4 = icmp ugt <16 x i1> %__0, %__1 | 250 ; CHECK-NEXT: %vugt = icmp ugt <16 x i1> %a1, %a2 |
242 ; CHECK-NEXT: %__5 = icmp uge <16 x i1> %__0, %__1 | 251 ; CHECK-NEXT: %vuge = icmp uge <16 x i1> %a1, %a2 |
243 ; CHECK-NEXT: %__6 = icmp ult <16 x i1> %__0, %__1 | 252 ; CHECK-NEXT: %vult = icmp ult <16 x i1> %a1, %a2 |
244 ; CHECK-NEXT: %__7 = icmp ule <16 x i1> %__0, %__1 | 253 ; CHECK-NEXT: %vule = icmp ule <16 x i1> %a1, %a2 |
245 ; CHECK-NEXT: %__8 = icmp sgt <16 x i1> %__0, %__1 | 254 ; CHECK-NEXT: %vsgt = icmp sgt <16 x i1> %a1, %a2 |
246 ; CHECK-NEXT: %__9 = icmp sge <16 x i1> %__0, %__1 | 255 ; CHECK-NEXT: %vsge = icmp sge <16 x i1> %a1, %a2 |
247 ; CHECK-NEXT: %__10 = icmp slt <16 x i1> %__0, %__1 | 256 ; CHECK-NEXT: %vslt = icmp slt <16 x i1> %a1, %a2 |
248 ; CHECK-NEXT: %__11 = icmp sle <16 x i1> %__0, %__1 | 257 ; CHECK-NEXT: %vsle = icmp sle <16 x i1> %a1, %a2 |
249 ; CHECK-NEXT: ret <16 x i1> %__2 | 258 ; CHECK-NEXT: ret <16 x i1> %veq |
250 ; CHECK-NEXT: } | 259 ; CHECK-NEXT: } |
251 | 260 |
252 define <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { | 261 define <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { |
| 262 entry: |
253 %veq = icmp eq <16 x i8> %a1, %a2 | 263 %veq = icmp eq <16 x i8> %a1, %a2 |
254 %vne = icmp ne <16 x i8> %a1, %a2 | 264 %vne = icmp ne <16 x i8> %a1, %a2 |
255 %vugt = icmp ugt <16 x i8> %a1, %a2 | 265 %vugt = icmp ugt <16 x i8> %a1, %a2 |
256 %vuge = icmp uge <16 x i8> %a1, %a2 | 266 %vuge = icmp uge <16 x i8> %a1, %a2 |
257 %vult = icmp ult <16 x i8> %a1, %a2 | 267 %vult = icmp ult <16 x i8> %a1, %a2 |
258 %vule = icmp ule <16 x i8> %a1, %a2 | 268 %vule = icmp ule <16 x i8> %a1, %a2 |
259 %vsgt = icmp sgt <16 x i8> %a1, %a2 | 269 %vsgt = icmp sgt <16 x i8> %a1, %a2 |
260 %vsge = icmp sge <16 x i8> %a1, %a2 | 270 %vsge = icmp sge <16 x i8> %a1, %a2 |
261 %vslt = icmp slt <16 x i8> %a1, %a2 | 271 %vslt = icmp slt <16 x i8> %a1, %a2 |
262 %vsle = icmp sle <16 x i8> %a1, %a2 | 272 %vsle = icmp sle <16 x i8> %a1, %a2 |
263 ret <16 x i1> %veq | 273 ret <16 x i1> %veq |
264 } | 274 } |
265 | 275 |
266 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI8(<16 x i8> %__0, <16 x i8> %__1) { | 276 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { |
267 ; CHECK-NEXT: __0: | 277 ; CHECK-NEXT: entry: |
268 ; CHECK-NEXT: %__2 = icmp eq <16 x i8> %__0, %__1 | 278 ; CHECK-NEXT: %veq = icmp eq <16 x i8> %a1, %a2 |
269 ; CHECK-NEXT: %__3 = icmp ne <16 x i8> %__0, %__1 | 279 ; CHECK-NEXT: %vne = icmp ne <16 x i8> %a1, %a2 |
270 ; CHECK-NEXT: %__4 = icmp ugt <16 x i8> %__0, %__1 | 280 ; CHECK-NEXT: %vugt = icmp ugt <16 x i8> %a1, %a2 |
271 ; CHECK-NEXT: %__5 = icmp uge <16 x i8> %__0, %__1 | 281 ; CHECK-NEXT: %vuge = icmp uge <16 x i8> %a1, %a2 |
272 ; CHECK-NEXT: %__6 = icmp ult <16 x i8> %__0, %__1 | 282 ; CHECK-NEXT: %vult = icmp ult <16 x i8> %a1, %a2 |
273 ; CHECK-NEXT: %__7 = icmp ule <16 x i8> %__0, %__1 | 283 ; CHECK-NEXT: %vule = icmp ule <16 x i8> %a1, %a2 |
274 ; CHECK-NEXT: %__8 = icmp sgt <16 x i8> %__0, %__1 | 284 ; CHECK-NEXT: %vsgt = icmp sgt <16 x i8> %a1, %a2 |
275 ; CHECK-NEXT: %__9 = icmp sge <16 x i8> %__0, %__1 | 285 ; CHECK-NEXT: %vsge = icmp sge <16 x i8> %a1, %a2 |
276 ; CHECK-NEXT: %__10 = icmp slt <16 x i8> %__0, %__1 | 286 ; CHECK-NEXT: %vslt = icmp slt <16 x i8> %a1, %a2 |
277 ; CHECK-NEXT: %__11 = icmp sle <16 x i8> %__0, %__1 | 287 ; CHECK-NEXT: %vsle = icmp sle <16 x i8> %a1, %a2 |
278 ; CHECK-NEXT: ret <16 x i1> %__2 | 288 ; CHECK-NEXT: ret <16 x i1> %veq |
279 ; CHECK-NEXT: } | 289 ; CHECK-NEXT: } |
280 | 290 |
281 define <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { | 291 define <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { |
| 292 entry: |
282 %veq = icmp eq <8 x i16> %a1, %a2 | 293 %veq = icmp eq <8 x i16> %a1, %a2 |
283 %vne = icmp ne <8 x i16> %a1, %a2 | 294 %vne = icmp ne <8 x i16> %a1, %a2 |
284 %vugt = icmp ugt <8 x i16> %a1, %a2 | 295 %vugt = icmp ugt <8 x i16> %a1, %a2 |
285 %vuge = icmp uge <8 x i16> %a1, %a2 | 296 %vuge = icmp uge <8 x i16> %a1, %a2 |
286 %vult = icmp ult <8 x i16> %a1, %a2 | 297 %vult = icmp ult <8 x i16> %a1, %a2 |
287 %vule = icmp ule <8 x i16> %a1, %a2 | 298 %vule = icmp ule <8 x i16> %a1, %a2 |
288 %vsgt = icmp sgt <8 x i16> %a1, %a2 | 299 %vsgt = icmp sgt <8 x i16> %a1, %a2 |
289 %vsge = icmp sge <8 x i16> %a1, %a2 | 300 %vsge = icmp sge <8 x i16> %a1, %a2 |
290 %vslt = icmp slt <8 x i16> %a1, %a2 | 301 %vslt = icmp slt <8 x i16> %a1, %a2 |
291 %vsle = icmp sle <8 x i16> %a1, %a2 | 302 %vsle = icmp sle <8 x i16> %a1, %a2 |
292 ret <8 x i1> %veq | 303 ret <8 x i1> %veq |
293 } | 304 } |
294 | 305 |
295 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI16(<8 x i16> %__0, <8 x i16> %__1) { | 306 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { |
296 ; CHECK-NEXT: __0: | 307 ; CHECK-NEXT: entry: |
297 ; CHECK-NEXT: %__2 = icmp eq <8 x i16> %__0, %__1 | 308 ; CHECK-NEXT: %veq = icmp eq <8 x i16> %a1, %a2 |
298 ; CHECK-NEXT: %__3 = icmp ne <8 x i16> %__0, %__1 | 309 ; CHECK-NEXT: %vne = icmp ne <8 x i16> %a1, %a2 |
299 ; CHECK-NEXT: %__4 = icmp ugt <8 x i16> %__0, %__1 | 310 ; CHECK-NEXT: %vugt = icmp ugt <8 x i16> %a1, %a2 |
300 ; CHECK-NEXT: %__5 = icmp uge <8 x i16> %__0, %__1 | 311 ; CHECK-NEXT: %vuge = icmp uge <8 x i16> %a1, %a2 |
301 ; CHECK-NEXT: %__6 = icmp ult <8 x i16> %__0, %__1 | 312 ; CHECK-NEXT: %vult = icmp ult <8 x i16> %a1, %a2 |
302 ; CHECK-NEXT: %__7 = icmp ule <8 x i16> %__0, %__1 | 313 ; CHECK-NEXT: %vule = icmp ule <8 x i16> %a1, %a2 |
303 ; CHECK-NEXT: %__8 = icmp sgt <8 x i16> %__0, %__1 | 314 ; CHECK-NEXT: %vsgt = icmp sgt <8 x i16> %a1, %a2 |
304 ; CHECK-NEXT: %__9 = icmp sge <8 x i16> %__0, %__1 | 315 ; CHECK-NEXT: %vsge = icmp sge <8 x i16> %a1, %a2 |
305 ; CHECK-NEXT: %__10 = icmp slt <8 x i16> %__0, %__1 | 316 ; CHECK-NEXT: %vslt = icmp slt <8 x i16> %a1, %a2 |
306 ; CHECK-NEXT: %__11 = icmp sle <8 x i16> %__0, %__1 | 317 ; CHECK-NEXT: %vsle = icmp sle <8 x i16> %a1, %a2 |
307 ; CHECK-NEXT: ret <8 x i1> %__2 | 318 ; CHECK-NEXT: ret <8 x i1> %veq |
308 ; CHECK-NEXT: } | 319 ; CHECK-NEXT: } |
309 | 320 |
310 define <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { | 321 define <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { |
| 322 entry: |
311 %veq = icmp eq <4 x i32> %a1, %a2 | 323 %veq = icmp eq <4 x i32> %a1, %a2 |
312 %vne = icmp ne <4 x i32> %a1, %a2 | 324 %vne = icmp ne <4 x i32> %a1, %a2 |
313 %vugt = icmp ugt <4 x i32> %a1, %a2 | 325 %vugt = icmp ugt <4 x i32> %a1, %a2 |
314 %vuge = icmp uge <4 x i32> %a1, %a2 | 326 %vuge = icmp uge <4 x i32> %a1, %a2 |
315 %vult = icmp ult <4 x i32> %a1, %a2 | 327 %vult = icmp ult <4 x i32> %a1, %a2 |
316 %vule = icmp ule <4 x i32> %a1, %a2 | 328 %vule = icmp ule <4 x i32> %a1, %a2 |
317 %vsgt = icmp sgt <4 x i32> %a1, %a2 | 329 %vsgt = icmp sgt <4 x i32> %a1, %a2 |
318 %vsge = icmp sge <4 x i32> %a1, %a2 | 330 %vsge = icmp sge <4 x i32> %a1, %a2 |
319 %vslt = icmp slt <4 x i32> %a1, %a2 | 331 %vslt = icmp slt <4 x i32> %a1, %a2 |
320 %vsle = icmp sle <4 x i32> %a1, %a2 | 332 %vsle = icmp sle <4 x i32> %a1, %a2 |
321 ret <4 x i1> %veq | 333 ret <4 x i1> %veq |
322 } | 334 } |
323 | 335 |
324 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI32(<4 x i32> %__0, <4 x i32> %__1) { | 336 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { |
325 ; CHECK-NEXT: __0: | 337 ; CHECK-NEXT: entry: |
326 ; CHECK-NEXT: %__2 = icmp eq <4 x i32> %__0, %__1 | 338 ; CHECK-NEXT: %veq = icmp eq <4 x i32> %a1, %a2 |
327 ; CHECK-NEXT: %__3 = icmp ne <4 x i32> %__0, %__1 | 339 ; CHECK-NEXT: %vne = icmp ne <4 x i32> %a1, %a2 |
328 ; CHECK-NEXT: %__4 = icmp ugt <4 x i32> %__0, %__1 | 340 ; CHECK-NEXT: %vugt = icmp ugt <4 x i32> %a1, %a2 |
329 ; CHECK-NEXT: %__5 = icmp uge <4 x i32> %__0, %__1 | 341 ; CHECK-NEXT: %vuge = icmp uge <4 x i32> %a1, %a2 |
330 ; CHECK-NEXT: %__6 = icmp ult <4 x i32> %__0, %__1 | 342 ; CHECK-NEXT: %vult = icmp ult <4 x i32> %a1, %a2 |
331 ; CHECK-NEXT: %__7 = icmp ule <4 x i32> %__0, %__1 | 343 ; CHECK-NEXT: %vule = icmp ule <4 x i32> %a1, %a2 |
332 ; CHECK-NEXT: %__8 = icmp sgt <4 x i32> %__0, %__1 | 344 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i32> %a1, %a2 |
333 ; CHECK-NEXT: %__9 = icmp sge <4 x i32> %__0, %__1 | 345 ; CHECK-NEXT: %vsge = icmp sge <4 x i32> %a1, %a2 |
334 ; CHECK-NEXT: %__10 = icmp slt <4 x i32> %__0, %__1 | 346 ; CHECK-NEXT: %vslt = icmp slt <4 x i32> %a1, %a2 |
335 ; CHECK-NEXT: %__11 = icmp sle <4 x i32> %__0, %__1 | 347 ; CHECK-NEXT: %vsle = icmp sle <4 x i32> %a1, %a2 |
336 ; CHECK-NEXT: ret <4 x i1> %__2 | 348 ; CHECK-NEXT: ret <4 x i1> %veq |
337 ; CHECK-NEXT: } | 349 ; CHECK-NEXT: } |
338 | 350 |
339 define i1 @FcmpFloat(float %a1, float %a2) { | 351 define i1 @FcmpFloat(float %a1, float %a2) { |
| 352 entry: |
340 %vfalse = fcmp false float %a1, %a2 | 353 %vfalse = fcmp false float %a1, %a2 |
341 %voeq = fcmp oeq float %a1, %a2 | 354 %voeq = fcmp oeq float %a1, %a2 |
342 %vogt = fcmp ogt float %a1, %a2 | 355 %vogt = fcmp ogt float %a1, %a2 |
343 %voge = fcmp oge float %a1, %a2 | 356 %voge = fcmp oge float %a1, %a2 |
344 %volt = fcmp olt float %a1, %a2 | 357 %volt = fcmp olt float %a1, %a2 |
345 %vole = fcmp ole float %a1, %a2 | 358 %vole = fcmp ole float %a1, %a2 |
346 %vone = fcmp one float %a1, %a2 | 359 %vone = fcmp one float %a1, %a2 |
347 %ord = fcmp ord float %a1, %a2 | 360 %ord = fcmp ord float %a1, %a2 |
348 %vueq = fcmp ueq float %a1, %a2 | 361 %vueq = fcmp ueq float %a1, %a2 |
349 %vugt = fcmp ugt float %a1, %a2 | 362 %vugt = fcmp ugt float %a1, %a2 |
350 %vuge = fcmp uge float %a1, %a2 | 363 %vuge = fcmp uge float %a1, %a2 |
351 %vult = fcmp ult float %a1, %a2 | 364 %vult = fcmp ult float %a1, %a2 |
352 %vule = fcmp ule float %a1, %a2 | 365 %vule = fcmp ule float %a1, %a2 |
353 %vune = fcmp une float %a1, %a2 | 366 %vune = fcmp une float %a1, %a2 |
354 %vuno = fcmp uno float %a1, %a2 | 367 %vuno = fcmp uno float %a1, %a2 |
355 %vtrue = fcmp true float %a1, %a2 | 368 %vtrue = fcmp true float %a1, %a2 |
356 ret i1 %voeq | 369 ret i1 %voeq |
357 } | 370 } |
358 | 371 |
359 ; CHECK-NEXT: define i1 @FcmpFloat(float %__0, float %__1) { | 372 ; CHECK-NEXT: define i1 @FcmpFloat(float %a1, float %a2) { |
360 ; CHECK-NEXT: __0: | 373 ; CHECK-NEXT: entry: |
361 ; CHECK-NEXT: %__2 = fcmp false float %__0, %__1 | 374 ; CHECK-NEXT: %vfalse = fcmp false float %a1, %a2 |
362 ; CHECK-NEXT: %__3 = fcmp oeq float %__0, %__1 | 375 ; CHECK-NEXT: %voeq = fcmp oeq float %a1, %a2 |
363 ; CHECK-NEXT: %__4 = fcmp ogt float %__0, %__1 | 376 ; CHECK-NEXT: %vogt = fcmp ogt float %a1, %a2 |
364 ; CHECK-NEXT: %__5 = fcmp oge float %__0, %__1 | 377 ; CHECK-NEXT: %voge = fcmp oge float %a1, %a2 |
365 ; CHECK-NEXT: %__6 = fcmp olt float %__0, %__1 | 378 ; CHECK-NEXT: %volt = fcmp olt float %a1, %a2 |
366 ; CHECK-NEXT: %__7 = fcmp ole float %__0, %__1 | 379 ; CHECK-NEXT: %vole = fcmp ole float %a1, %a2 |
367 ; CHECK-NEXT: %__8 = fcmp one float %__0, %__1 | 380 ; CHECK-NEXT: %vone = fcmp one float %a1, %a2 |
368 ; CHECK-NEXT: %__9 = fcmp ord float %__0, %__1 | 381 ; CHECK-NEXT: %ord = fcmp ord float %a1, %a2 |
369 ; CHECK-NEXT: %__10 = fcmp ueq float %__0, %__1 | 382 ; CHECK-NEXT: %vueq = fcmp ueq float %a1, %a2 |
370 ; CHECK-NEXT: %__11 = fcmp ugt float %__0, %__1 | 383 ; CHECK-NEXT: %vugt = fcmp ugt float %a1, %a2 |
371 ; CHECK-NEXT: %__12 = fcmp uge float %__0, %__1 | 384 ; CHECK-NEXT: %vuge = fcmp uge float %a1, %a2 |
372 ; CHECK-NEXT: %__13 = fcmp ult float %__0, %__1 | 385 ; CHECK-NEXT: %vult = fcmp ult float %a1, %a2 |
373 ; CHECK-NEXT: %__14 = fcmp ule float %__0, %__1 | 386 ; CHECK-NEXT: %vule = fcmp ule float %a1, %a2 |
374 ; CHECK-NEXT: %__15 = fcmp une float %__0, %__1 | 387 ; CHECK-NEXT: %vune = fcmp une float %a1, %a2 |
375 ; CHECK-NEXT: %__16 = fcmp uno float %__0, %__1 | 388 ; CHECK-NEXT: %vuno = fcmp uno float %a1, %a2 |
376 ; CHECK-NEXT: %__17 = fcmp true float %__0, %__1 | 389 ; CHECK-NEXT: %vtrue = fcmp true float %a1, %a2 |
377 ; CHECK-NEXT: ret i1 %__3 | 390 ; CHECK-NEXT: ret i1 %voeq |
378 ; CHECK-NEXT: } | 391 ; CHECK-NEXT: } |
379 | 392 |
380 define i1 @FcmpDouble(double %a1, double %a2) { | 393 define i1 @FcmpDouble(double %a1, double %a2) { |
| 394 entry: |
381 %vfalse = fcmp false double %a1, %a2 | 395 %vfalse = fcmp false double %a1, %a2 |
382 %voeq = fcmp oeq double %a1, %a2 | 396 %voeq = fcmp oeq double %a1, %a2 |
383 %vogt = fcmp ogt double %a1, %a2 | 397 %vogt = fcmp ogt double %a1, %a2 |
384 %voge = fcmp oge double %a1, %a2 | 398 %voge = fcmp oge double %a1, %a2 |
385 %volt = fcmp olt double %a1, %a2 | 399 %volt = fcmp olt double %a1, %a2 |
386 %vole = fcmp ole double %a1, %a2 | 400 %vole = fcmp ole double %a1, %a2 |
387 %vone = fcmp one double %a1, %a2 | 401 %vone = fcmp one double %a1, %a2 |
388 %ord = fcmp ord double %a1, %a2 | 402 %ord = fcmp ord double %a1, %a2 |
389 %vueq = fcmp ueq double %a1, %a2 | 403 %vueq = fcmp ueq double %a1, %a2 |
390 %vugt = fcmp ugt double %a1, %a2 | 404 %vugt = fcmp ugt double %a1, %a2 |
391 %vuge = fcmp uge double %a1, %a2 | 405 %vuge = fcmp uge double %a1, %a2 |
392 %vult = fcmp ult double %a1, %a2 | 406 %vult = fcmp ult double %a1, %a2 |
393 %vule = fcmp ule double %a1, %a2 | 407 %vule = fcmp ule double %a1, %a2 |
394 %vune = fcmp une double %a1, %a2 | 408 %vune = fcmp une double %a1, %a2 |
395 %vuno = fcmp uno double %a1, %a2 | 409 %vuno = fcmp uno double %a1, %a2 |
396 %vtrue = fcmp true double %a1, %a2 | 410 %vtrue = fcmp true double %a1, %a2 |
397 ret i1 %voeq | 411 ret i1 %voeq |
398 } | 412 } |
399 | 413 |
400 ; CHECK-NEXT: define i1 @FcmpDouble(double %__0, double %__1) { | 414 ; CHECK-NEXT: define i1 @FcmpDouble(double %a1, double %a2) { |
401 ; CHECK-NEXT: __0: | 415 ; CHECK-NEXT: entry: |
402 ; CHECK-NEXT: %__2 = fcmp false double %__0, %__1 | 416 ; CHECK-NEXT: %vfalse = fcmp false double %a1, %a2 |
403 ; CHECK-NEXT: %__3 = fcmp oeq double %__0, %__1 | 417 ; CHECK-NEXT: %voeq = fcmp oeq double %a1, %a2 |
404 ; CHECK-NEXT: %__4 = fcmp ogt double %__0, %__1 | 418 ; CHECK-NEXT: %vogt = fcmp ogt double %a1, %a2 |
405 ; CHECK-NEXT: %__5 = fcmp oge double %__0, %__1 | 419 ; CHECK-NEXT: %voge = fcmp oge double %a1, %a2 |
406 ; CHECK-NEXT: %__6 = fcmp olt double %__0, %__1 | 420 ; CHECK-NEXT: %volt = fcmp olt double %a1, %a2 |
407 ; CHECK-NEXT: %__7 = fcmp ole double %__0, %__1 | 421 ; CHECK-NEXT: %vole = fcmp ole double %a1, %a2 |
408 ; CHECK-NEXT: %__8 = fcmp one double %__0, %__1 | 422 ; CHECK-NEXT: %vone = fcmp one double %a1, %a2 |
409 ; CHECK-NEXT: %__9 = fcmp ord double %__0, %__1 | 423 ; CHECK-NEXT: %ord = fcmp ord double %a1, %a2 |
410 ; CHECK-NEXT: %__10 = fcmp ueq double %__0, %__1 | 424 ; CHECK-NEXT: %vueq = fcmp ueq double %a1, %a2 |
411 ; CHECK-NEXT: %__11 = fcmp ugt double %__0, %__1 | 425 ; CHECK-NEXT: %vugt = fcmp ugt double %a1, %a2 |
412 ; CHECK-NEXT: %__12 = fcmp uge double %__0, %__1 | 426 ; CHECK-NEXT: %vuge = fcmp uge double %a1, %a2 |
413 ; CHECK-NEXT: %__13 = fcmp ult double %__0, %__1 | 427 ; CHECK-NEXT: %vult = fcmp ult double %a1, %a2 |
414 ; CHECK-NEXT: %__14 = fcmp ule double %__0, %__1 | 428 ; CHECK-NEXT: %vule = fcmp ule double %a1, %a2 |
415 ; CHECK-NEXT: %__15 = fcmp une double %__0, %__1 | 429 ; CHECK-NEXT: %vune = fcmp une double %a1, %a2 |
416 ; CHECK-NEXT: %__16 = fcmp uno double %__0, %__1 | 430 ; CHECK-NEXT: %vuno = fcmp uno double %a1, %a2 |
417 ; CHECK-NEXT: %__17 = fcmp true double %__0, %__1 | 431 ; CHECK-NEXT: %vtrue = fcmp true double %a1, %a2 |
418 ; CHECK-NEXT: ret i1 %__3 | 432 ; CHECK-NEXT: ret i1 %voeq |
419 ; CHECK-NEXT: } | 433 ; CHECK-NEXT: } |
420 | 434 |
421 define <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { | 435 define <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { |
| 436 entry: |
422 %vfalse = fcmp false <4 x float> %a1, %a2 | 437 %vfalse = fcmp false <4 x float> %a1, %a2 |
423 %voeq = fcmp oeq <4 x float> %a1, %a2 | 438 %voeq = fcmp oeq <4 x float> %a1, %a2 |
424 %vogt = fcmp ogt <4 x float> %a1, %a2 | 439 %vogt = fcmp ogt <4 x float> %a1, %a2 |
425 %voge = fcmp oge <4 x float> %a1, %a2 | 440 %voge = fcmp oge <4 x float> %a1, %a2 |
426 %volt = fcmp olt <4 x float> %a1, %a2 | 441 %volt = fcmp olt <4 x float> %a1, %a2 |
427 %vole = fcmp ole <4 x float> %a1, %a2 | 442 %vole = fcmp ole <4 x float> %a1, %a2 |
428 %vone = fcmp one <4 x float> %a1, %a2 | 443 %vone = fcmp one <4 x float> %a1, %a2 |
429 %ord = fcmp ord <4 x float> %a1, %a2 | 444 %ord = fcmp ord <4 x float> %a1, %a2 |
430 %vueq = fcmp ueq <4 x float> %a1, %a2 | 445 %vueq = fcmp ueq <4 x float> %a1, %a2 |
431 %vugt = fcmp ugt <4 x float> %a1, %a2 | 446 %vugt = fcmp ugt <4 x float> %a1, %a2 |
432 %vuge = fcmp uge <4 x float> %a1, %a2 | 447 %vuge = fcmp uge <4 x float> %a1, %a2 |
433 %vult = fcmp ult <4 x float> %a1, %a2 | 448 %vult = fcmp ult <4 x float> %a1, %a2 |
434 %vule = fcmp ule <4 x float> %a1, %a2 | 449 %vule = fcmp ule <4 x float> %a1, %a2 |
435 %vune = fcmp une <4 x float> %a1, %a2 | 450 %vune = fcmp une <4 x float> %a1, %a2 |
436 %vuno = fcmp uno <4 x float> %a1, %a2 | 451 %vuno = fcmp uno <4 x float> %a1, %a2 |
437 %vtrue = fcmp true <4 x float> %a1, %a2 | 452 %vtrue = fcmp true <4 x float> %a1, %a2 |
438 ret <4 x i1> %voeq | 453 ret <4 x i1> %voeq |
439 } | 454 } |
440 | 455 |
441 ; CHECK-NEXT: define <4 x i1> @FcmpV4xFloat(<4 x float> %__0, <4 x float> %__1)
{ | 456 ; CHECK-NEXT: define <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { |
442 ; CHECK-NEXT: __0: | 457 ; CHECK-NEXT: entry: |
443 ; CHECK-NEXT: %__2 = fcmp false <4 x float> %__0, %__1 | 458 ; CHECK-NEXT: %vfalse = fcmp false <4 x float> %a1, %a2 |
444 ; CHECK-NEXT: %__3 = fcmp oeq <4 x float> %__0, %__1 | 459 ; CHECK-NEXT: %voeq = fcmp oeq <4 x float> %a1, %a2 |
445 ; CHECK-NEXT: %__4 = fcmp ogt <4 x float> %__0, %__1 | 460 ; CHECK-NEXT: %vogt = fcmp ogt <4 x float> %a1, %a2 |
446 ; CHECK-NEXT: %__5 = fcmp oge <4 x float> %__0, %__1 | 461 ; CHECK-NEXT: %voge = fcmp oge <4 x float> %a1, %a2 |
447 ; CHECK-NEXT: %__6 = fcmp olt <4 x float> %__0, %__1 | 462 ; CHECK-NEXT: %volt = fcmp olt <4 x float> %a1, %a2 |
448 ; CHECK-NEXT: %__7 = fcmp ole <4 x float> %__0, %__1 | 463 ; CHECK-NEXT: %vole = fcmp ole <4 x float> %a1, %a2 |
449 ; CHECK-NEXT: %__8 = fcmp one <4 x float> %__0, %__1 | 464 ; CHECK-NEXT: %vone = fcmp one <4 x float> %a1, %a2 |
450 ; CHECK-NEXT: %__9 = fcmp ord <4 x float> %__0, %__1 | 465 ; CHECK-NEXT: %ord = fcmp ord <4 x float> %a1, %a2 |
451 ; CHECK-NEXT: %__10 = fcmp ueq <4 x float> %__0, %__1 | 466 ; CHECK-NEXT: %vueq = fcmp ueq <4 x float> %a1, %a2 |
452 ; CHECK-NEXT: %__11 = fcmp ugt <4 x float> %__0, %__1 | 467 ; CHECK-NEXT: %vugt = fcmp ugt <4 x float> %a1, %a2 |
453 ; CHECK-NEXT: %__12 = fcmp uge <4 x float> %__0, %__1 | 468 ; CHECK-NEXT: %vuge = fcmp uge <4 x float> %a1, %a2 |
454 ; CHECK-NEXT: %__13 = fcmp ult <4 x float> %__0, %__1 | 469 ; CHECK-NEXT: %vult = fcmp ult <4 x float> %a1, %a2 |
455 ; CHECK-NEXT: %__14 = fcmp ule <4 x float> %__0, %__1 | 470 ; CHECK-NEXT: %vule = fcmp ule <4 x float> %a1, %a2 |
456 ; CHECK-NEXT: %__15 = fcmp une <4 x float> %__0, %__1 | 471 ; CHECK-NEXT: %vune = fcmp une <4 x float> %a1, %a2 |
457 ; CHECK-NEXT: %__16 = fcmp uno <4 x float> %__0, %__1 | 472 ; CHECK-NEXT: %vuno = fcmp uno <4 x float> %a1, %a2 |
458 ; CHECK-NEXT: %__17 = fcmp true <4 x float> %__0, %__1 | 473 ; CHECK-NEXT: %vtrue = fcmp true <4 x float> %a1, %a2 |
459 ; CHECK-NEXT: ret <4 x i1> %__3 | 474 ; CHECK-NEXT: ret <4 x i1> %voeq |
460 ; CHECK-NEXT: } | 475 ; CHECK-NEXT: } |
OLD | NEW |