brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.7 KiB · 52359db Raw
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