398 lines · plain
1// RUN: mlir-opt -convert-spirv-to-llvm %s | FileCheck %s2 3//===----------------------------------------------------------------------===//4// spirv.IEqual5//===----------------------------------------------------------------------===//6 7// CHECK-LABEL: @i_equal_scalar8spirv.func @i_equal_scalar(%arg0: i32, %arg1: i32) "None" {9 // CHECK: llvm.icmp "eq" %{{.*}}, %{{.*}} : i3210 %0 = spirv.IEqual %arg0, %arg1 : i3211 spirv.Return12}13 14// CHECK-LABEL: @i_equal_vector15spirv.func @i_equal_vector(%arg0: vector<4xi64>, %arg1: vector<4xi64>) "None" {16 // CHECK: llvm.icmp "eq" %{{.*}}, %{{.*}} : vector<4xi64>17 %0 = spirv.IEqual %arg0, %arg1 : vector<4xi64>18 spirv.Return19}20 21//===----------------------------------------------------------------------===//22// spirv.INotEqual23//===----------------------------------------------------------------------===//24 25// CHECK-LABEL: @i_not_equal_scalar26spirv.func @i_not_equal_scalar(%arg0: i64, %arg1: i64) "None" {27 // CHECK: llvm.icmp "ne" %{{.*}}, %{{.*}} : i6428 %0 = spirv.INotEqual %arg0, %arg1 : i6429 spirv.Return30}31 32// CHECK-LABEL: @i_not_equal_vector33spirv.func @i_not_equal_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {34 // CHECK: llvm.icmp "ne" %{{.*}}, %{{.*}} : vector<2xi64>35 %0 = spirv.INotEqual %arg0, %arg1 : vector<2xi64>36 spirv.Return37}38 39//===----------------------------------------------------------------------===//40// spirv.SGreaterThanEqual41//===----------------------------------------------------------------------===//42 43// CHECK-LABEL: @s_greater_than_equal_scalar44spirv.func @s_greater_than_equal_scalar(%arg0: i64, %arg1: i64) "None" {45 // CHECK: llvm.icmp "sge" %{{.*}}, %{{.*}} : i6446 %0 = spirv.SGreaterThanEqual %arg0, %arg1 : i6447 spirv.Return48}49 50// CHECK-LABEL: @s_greater_than_equal_vector51spirv.func @s_greater_than_equal_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {52 // CHECK: llvm.icmp "sge" %{{.*}}, %{{.*}} : vector<2xi64>53 %0 = spirv.SGreaterThanEqual %arg0, %arg1 : vector<2xi64>54 spirv.Return55}56 57//===----------------------------------------------------------------------===//58// spirv.SGreaterThan59//===----------------------------------------------------------------------===//60 61// CHECK-LABEL: @s_greater_than_scalar62spirv.func @s_greater_than_scalar(%arg0: i64, %arg1: i64) "None" {63 // CHECK: llvm.icmp "sgt" %{{.*}}, %{{.*}} : i6464 %0 = spirv.SGreaterThan %arg0, %arg1 : i6465 spirv.Return66}67 68// CHECK-LABEL: @s_greater_than_vector69spirv.func @s_greater_than_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {70 // CHECK: llvm.icmp "sgt" %{{.*}}, %{{.*}} : vector<2xi64>71 %0 = spirv.SGreaterThan %arg0, %arg1 : vector<2xi64>72 spirv.Return73}74 75//===----------------------------------------------------------------------===//76// spirv.SLessThanEqual77//===----------------------------------------------------------------------===//78 79// CHECK-LABEL: @s_less_than_equal_scalar80spirv.func @s_less_than_equal_scalar(%arg0: i64, %arg1: i64) "None" {81 // CHECK: llvm.icmp "sle" %{{.*}}, %{{.*}} : i6482 %0 = spirv.SLessThanEqual %arg0, %arg1 : i6483 spirv.Return84}85 86// CHECK-LABEL: @s_less_than_equal_vector87spirv.func @s_less_than_equal_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {88 // CHECK: llvm.icmp "sle" %{{.*}}, %{{.*}} : vector<2xi64>89 %0 = spirv.SLessThanEqual %arg0, %arg1 : vector<2xi64>90 spirv.Return91}92 93//===----------------------------------------------------------------------===//94// spirv.SLessThan95//===----------------------------------------------------------------------===//96 97// CHECK-LABEL: @s_less_than_scalar98spirv.func @s_less_than_scalar(%arg0: i64, %arg1: i64) "None" {99 // CHECK: llvm.icmp "slt" %{{.*}}, %{{.*}} : i64100 %0 = spirv.SLessThan %arg0, %arg1 : i64101 spirv.Return102}103 104// CHECK-LABEL: @s_less_than_vector105spirv.func @s_less_than_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {106 // CHECK: llvm.icmp "slt" %{{.*}}, %{{.*}} : vector<2xi64>107 %0 = spirv.SLessThan %arg0, %arg1 : vector<2xi64>108 spirv.Return109}110 111//===----------------------------------------------------------------------===//112// spirv.UGreaterThanEqual113//===----------------------------------------------------------------------===//114 115// CHECK-LABEL: @u_greater_than_equal_scalar116spirv.func @u_greater_than_equal_scalar(%arg0: i64, %arg1: i64) "None" {117 // CHECK: llvm.icmp "uge" %{{.*}}, %{{.*}} : i64118 %0 = spirv.UGreaterThanEqual %arg0, %arg1 : i64119 spirv.Return120}121 122// CHECK-LABEL: @u_greater_than_equal_vector123spirv.func @u_greater_than_equal_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {124 // CHECK: llvm.icmp "uge" %{{.*}}, %{{.*}} : vector<2xi64>125 %0 = spirv.UGreaterThanEqual %arg0, %arg1 : vector<2xi64>126 spirv.Return127}128 129//===----------------------------------------------------------------------===//130// spirv.UGreaterThan131//===----------------------------------------------------------------------===//132 133// CHECK-LABEL: @u_greater_than_scalar134spirv.func @u_greater_than_scalar(%arg0: i64, %arg1: i64) "None" {135 // CHECK: llvm.icmp "ugt" %{{.*}}, %{{.*}} : i64136 %0 = spirv.UGreaterThan %arg0, %arg1 : i64137 spirv.Return138}139 140// CHECK-LABEL: @u_greater_than_vector141spirv.func @u_greater_than_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {142 // CHECK: llvm.icmp "ugt" %{{.*}}, %{{.*}} : vector<2xi64>143 %0 = spirv.UGreaterThan %arg0, %arg1 : vector<2xi64>144 spirv.Return145}146 147//===----------------------------------------------------------------------===//148// spirv.ULessThanEqual149//===----------------------------------------------------------------------===//150 151// CHECK-LABEL: @u_less_than_equal_scalar152spirv.func @u_less_than_equal_scalar(%arg0: i64, %arg1: i64) "None" {153 // CHECK: llvm.icmp "ule" %{{.*}}, %{{.*}} : i64154 %0 = spirv.ULessThanEqual %arg0, %arg1 : i64155 spirv.Return156}157 158// CHECK-LABEL: @u_less_than_equal_vector159spirv.func @u_less_than_equal_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {160 // CHECK: llvm.icmp "ule" %{{.*}}, %{{.*}} : vector<2xi64>161 %0 = spirv.ULessThanEqual %arg0, %arg1 : vector<2xi64>162 spirv.Return163}164 165//===----------------------------------------------------------------------===//166// spirv.ULessThan167//===----------------------------------------------------------------------===//168 169// CHECK-LABEL: @u_less_than_scalar170spirv.func @u_less_than_scalar(%arg0: i64, %arg1: i64) "None" {171 // CHECK: llvm.icmp "ult" %{{.*}}, %{{.*}} : i64172 %0 = spirv.ULessThan %arg0, %arg1 : i64173 spirv.Return174}175 176// CHECK-LABEL: @u_less_than_vector177spirv.func @u_less_than_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {178 // CHECK: llvm.icmp "ult" %{{.*}}, %{{.*}} : vector<2xi64>179 %0 = spirv.ULessThan %arg0, %arg1 : vector<2xi64>180 spirv.Return181}182 183//===----------------------------------------------------------------------===//184// spirv.FOrdEqual185//===----------------------------------------------------------------------===//186 187// CHECK-LABEL: @f_ord_equal_scalar188spirv.func @f_ord_equal_scalar(%arg0: f32, %arg1: f32) "None" {189 // CHECK: llvm.fcmp "oeq" %{{.*}}, %{{.*}} : f32190 %0 = spirv.FOrdEqual %arg0, %arg1 : f32191 spirv.Return192}193 194// CHECK-LABEL: @f_ord_equal_vector195spirv.func @f_ord_equal_vector(%arg0: vector<4xf64>, %arg1: vector<4xf64>) "None" {196 // CHECK: llvm.fcmp "oeq" %{{.*}}, %{{.*}} : vector<4xf64>197 %0 = spirv.FOrdEqual %arg0, %arg1 : vector<4xf64>198 spirv.Return199}200 201//===----------------------------------------------------------------------===//202// spirv.FOrdGreaterThanEqual203//===----------------------------------------------------------------------===//204 205// CHECK-LABEL: @f_ord_greater_than_equal_scalar206spirv.func @f_ord_greater_than_equal_scalar(%arg0: f64, %arg1: f64) "None" {207 // CHECK: llvm.fcmp "oge" %{{.*}}, %{{.*}} : f64208 %0 = spirv.FOrdGreaterThanEqual %arg0, %arg1 : f64209 spirv.Return210}211 212// CHECK-LABEL: @f_ord_greater_than_equal_vector213spirv.func @f_ord_greater_than_equal_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {214 // CHECK: llvm.fcmp "oge" %{{.*}}, %{{.*}} : vector<2xf64>215 %0 = spirv.FOrdGreaterThanEqual %arg0, %arg1 : vector<2xf64>216 spirv.Return217}218 219//===----------------------------------------------------------------------===//220// spirv.FOrdGreaterThan221//===----------------------------------------------------------------------===//222 223// CHECK-LABEL: @f_ord_greater_than_scalar224spirv.func @f_ord_greater_than_scalar(%arg0: f64, %arg1: f64) "None" {225 // CHECK: llvm.fcmp "ogt" %{{.*}}, %{{.*}} : f64226 %0 = spirv.FOrdGreaterThan %arg0, %arg1 : f64227 spirv.Return228}229 230// CHECK-LABEL: @f_ord_greater_than_vector231spirv.func @f_ord_greater_than_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {232 // CHECK: llvm.fcmp "ogt" %{{.*}}, %{{.*}} : vector<2xf64>233 %0 = spirv.FOrdGreaterThan %arg0, %arg1 : vector<2xf64>234 spirv.Return235}236 237//===----------------------------------------------------------------------===//238// spirv.FOrdLessThan239//===----------------------------------------------------------------------===//240 241// CHECK-LABEL: @f_ord_less_than_scalar242spirv.func @f_ord_less_than_scalar(%arg0: f64, %arg1: f64) "None" {243 // CHECK: llvm.fcmp "olt" %{{.*}}, %{{.*}} : f64244 %0 = spirv.FOrdLessThan %arg0, %arg1 : f64245 spirv.Return246}247 248// CHECK-LABEL: @f_ord_less_than_vector249spirv.func @f_ord_less_than_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {250 // CHECK: llvm.fcmp "olt" %{{.*}}, %{{.*}} : vector<2xf64>251 %0 = spirv.FOrdLessThan %arg0, %arg1 : vector<2xf64>252 spirv.Return253}254 255//===----------------------------------------------------------------------===//256// spirv.FOrdLessThanEqual257//===----------------------------------------------------------------------===//258 259// CHECK-LABEL: @f_ord_less_than_equal_scalar260spirv.func @f_ord_less_than_equal_scalar(%arg0: f64, %arg1: f64) "None" {261 // CHECK: llvm.fcmp "ole" %{{.*}}, %{{.*}} : f64262 %0 = spirv.FOrdLessThanEqual %arg0, %arg1 : f64263 spirv.Return264}265 266// CHECK-LABEL: @f_ord_less_than_equal_vector267spirv.func @f_ord_less_than_equal_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {268 // CHECK: llvm.fcmp "ole" %{{.*}}, %{{.*}} : vector<2xf64>269 %0 = spirv.FOrdLessThanEqual %arg0, %arg1 : vector<2xf64>270 spirv.Return271}272 273//===----------------------------------------------------------------------===//274// spirv.FOrdNotEqual275//===----------------------------------------------------------------------===//276 277// CHECK-LABEL: @f_ord_not_equal_scalar278spirv.func @f_ord_not_equal_scalar(%arg0: f32, %arg1: f32) "None" {279 // CHECK: llvm.fcmp "one" %{{.*}}, %{{.*}} : f32280 %0 = spirv.FOrdNotEqual %arg0, %arg1 : f32281 spirv.Return282}283 284// CHECK-LABEL: @f_ord_not_equal_vector285spirv.func @f_ord_not_equal_vector(%arg0: vector<4xf64>, %arg1: vector<4xf64>) "None" {286 // CHECK: llvm.fcmp "one" %{{.*}}, %{{.*}} : vector<4xf64>287 %0 = spirv.FOrdNotEqual %arg0, %arg1 : vector<4xf64>288 spirv.Return289}290 291//===----------------------------------------------------------------------===//292// spirv.FUnordEqual293//===----------------------------------------------------------------------===//294 295// CHECK-LABEL: @f_unord_equal_scalar296spirv.func @f_unord_equal_scalar(%arg0: f32, %arg1: f32) "None" {297 // CHECK: llvm.fcmp "ueq" %{{.*}}, %{{.*}} : f32298 %0 = spirv.FUnordEqual %arg0, %arg1 : f32299 spirv.Return300}301 302// CHECK-LABEL: @f_unord_equal_vector303spirv.func @f_unord_equal_vector(%arg0: vector<4xf64>, %arg1: vector<4xf64>) "None" {304 // CHECK: llvm.fcmp "ueq" %{{.*}}, %{{.*}} : vector<4xf64>305 %0 = spirv.FUnordEqual %arg0, %arg1 : vector<4xf64>306 spirv.Return307}308 309//===----------------------------------------------------------------------===//310// spirv.FUnordGreaterThanEqual311//===----------------------------------------------------------------------===//312 313// CHECK-LABEL: @f_unord_greater_than_equal_scalar314spirv.func @f_unord_greater_than_equal_scalar(%arg0: f64, %arg1: f64) "None" {315 // CHECK: llvm.fcmp "uge" %{{.*}}, %{{.*}} : f64316 %0 = spirv.FUnordGreaterThanEqual %arg0, %arg1 : f64317 spirv.Return318}319 320// CHECK-LABEL: @f_unord_greater_than_equal_vector321spirv.func @f_unord_greater_than_equal_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {322 // CHECK: llvm.fcmp "uge" %{{.*}}, %{{.*}} : vector<2xf64>323 %0 = spirv.FUnordGreaterThanEqual %arg0, %arg1 : vector<2xf64>324 spirv.Return325}326 327//===----------------------------------------------------------------------===//328// spirv.FUnordGreaterThan329//===----------------------------------------------------------------------===//330 331// CHECK-LABEL: @f_unord_greater_than_scalar332spirv.func @f_unord_greater_than_scalar(%arg0: f64, %arg1: f64) "None" {333 // CHECK: llvm.fcmp "ugt" %{{.*}}, %{{.*}} : f64334 %0 = spirv.FUnordGreaterThan %arg0, %arg1 : f64335 spirv.Return336}337 338// CHECK-LABEL: @f_unord_greater_than_vector339spirv.func @f_unord_greater_than_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {340 // CHECK: llvm.fcmp "ugt" %{{.*}}, %{{.*}} : vector<2xf64>341 %0 = spirv.FUnordGreaterThan %arg0, %arg1 : vector<2xf64>342 spirv.Return343}344 345//===----------------------------------------------------------------------===//346// spirv.FUnordLessThan347//===----------------------------------------------------------------------===//348 349// CHECK-LABEL: @f_unord_less_than_scalar350spirv.func @f_unord_less_than_scalar(%arg0: f64, %arg1: f64) "None" {351 // CHECK: llvm.fcmp "ult" %{{.*}}, %{{.*}} : f64352 %0 = spirv.FUnordLessThan %arg0, %arg1 : f64353 spirv.Return354}355 356// CHECK-LABEL: @f_unord_less_than_vector357spirv.func @f_unord_less_than_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {358 // CHECK: llvm.fcmp "ult" %{{.*}}, %{{.*}} : vector<2xf64>359 %0 = spirv.FUnordLessThan %arg0, %arg1 : vector<2xf64>360 spirv.Return361}362 363//===----------------------------------------------------------------------===//364// spirv.FUnordLessThanEqual365//===----------------------------------------------------------------------===//366 367// CHECK-LABEL: @f_unord_less_than_equal_scalar368spirv.func @f_unord_less_than_equal_scalar(%arg0: f64, %arg1: f64) "None" {369 // CHECK: llvm.fcmp "ule" %{{.*}}, %{{.*}} : f64370 %0 = spirv.FUnordLessThanEqual %arg0, %arg1 : f64371 spirv.Return372}373 374// CHECK-LABEL: @f_unord_less_than_equal_vector375spirv.func @f_unord_less_than_equal_vector(%arg0: vector<2xf64>, %arg1: vector<2xf64>) "None" {376 // CHECK: llvm.fcmp "ule" %{{.*}}, %{{.*}} : vector<2xf64>377 %0 = spirv.FUnordLessThanEqual %arg0, %arg1 : vector<2xf64>378 spirv.Return379}380 381//===----------------------------------------------------------------------===//382// spirv.FUnordNotEqual383//===----------------------------------------------------------------------===//384 385// CHECK-LABEL: @f_unord_not_equal_scalar386spirv.func @f_unord_not_equal_scalar(%arg0: f32, %arg1: f32) "None" {387 // CHECK: llvm.fcmp "une" %{{.*}}, %{{.*}} : f32388 %0 = spirv.FUnordNotEqual %arg0, %arg1 : f32389 spirv.Return390}391 392// CHECK-LABEL: @f_unord_not_equal_vector393spirv.func @f_unord_not_equal_vector(%arg0: vector<4xf64>, %arg1: vector<4xf64>) "None" {394 // CHECK: llvm.fcmp "une" %{{.*}}, %{{.*}} : vector<4xf64>395 %0 = spirv.FUnordNotEqual %arg0, %arg1 : vector<4xf64>396 spirv.Return397}398