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