236 lines · plain
1// RUN: mlir-opt -convert-spirv-to-llvm %s | FileCheck %s2 3//===----------------------------------------------------------------------===//4// spirv.IAdd5//===----------------------------------------------------------------------===//6 7// CHECK-LABEL: @iadd_scalar8spirv.func @iadd_scalar(%arg0: i32, %arg1: i32) "None" {9 // CHECK: llvm.add %{{.*}}, %{{.*}} : i3210 %0 = spirv.IAdd %arg0, %arg1 : i3211 spirv.Return12}13 14// CHECK-LABEL: @iadd_vector15spirv.func @iadd_vector(%arg0: vector<4xi64>, %arg1: vector<4xi64>) "None" {16 // CHECK: llvm.add %{{.*}}, %{{.*}} : vector<4xi64>17 %0 = spirv.IAdd %arg0, %arg1 : vector<4xi64>18 spirv.Return19}20 21//===----------------------------------------------------------------------===//22// spirv.ISub23//===----------------------------------------------------------------------===//24 25// CHECK-LABEL: @isub_scalar26spirv.func @isub_scalar(%arg0: i8, %arg1: i8) "None" {27 // CHECK: llvm.sub %{{.*}}, %{{.*}} : i828 %0 = spirv.ISub %arg0, %arg1 : i829 spirv.Return30}31 32// CHECK-LABEL: @isub_vector33spirv.func @isub_vector(%arg0: vector<2xi16>, %arg1: vector<2xi16>) "None" {34 // CHECK: llvm.sub %{{.*}}, %{{.*}} : vector<2xi16>35 %0 = spirv.ISub %arg0, %arg1 : vector<2xi16>36 spirv.Return37}38 39//===----------------------------------------------------------------------===//40// spirv.IMul41//===----------------------------------------------------------------------===//42 43// CHECK-LABEL: @imul_scalar44spirv.func @imul_scalar(%arg0: i32, %arg1: i32) "None" {45 // CHECK: llvm.mul %{{.*}}, %{{.*}} : i3246 %0 = spirv.IMul %arg0, %arg1 : i3247 spirv.Return48}49 50// CHECK-LABEL: @imul_vector51spirv.func @imul_vector(%arg0: vector<3xi32>, %arg1: vector<3xi32>) "None" {52 // CHECK: llvm.mul %{{.*}}, %{{.*}} : vector<3xi32>53 %0 = spirv.IMul %arg0, %arg1 : vector<3xi32>54 spirv.Return55}56 57//===----------------------------------------------------------------------===//58// spirv.FAdd59//===----------------------------------------------------------------------===//60 61// CHECK-LABEL: @fadd_scalar62spirv.func @fadd_scalar(%arg0: f16, %arg1: f16) "None" {63 // CHECK: llvm.fadd %{{.*}}, %{{.*}} : f1664 %0 = spirv.FAdd %arg0, %arg1 : f1665 spirv.Return66}67 68// CHECK-LABEL: @fadd_vector69spirv.func @fadd_vector(%arg0: vector<4xf32>, %arg1: vector<4xf32>) "None" {70 // CHECK: llvm.fadd %{{.*}}, %{{.*}} : vector<4xf32>71 %0 = spirv.FAdd %arg0, %arg1 : vector<4xf32>72 spirv.Return73}74 75//===----------------------------------------------------------------------===//76// spirv.FSub77//===----------------------------------------------------------------------===//78 79// CHECK-LABEL: @fsub_scalar80spirv.func @fsub_scalar(%arg0: f32, %arg1: f32) "None" {81 // CHECK: llvm.fsub %{{.*}}, %{{.*}} : f3282 %0 = spirv.FSub %arg0, %arg1 : f3283 spirv.Return84}85 86// CHECK-LABEL: @fsub_vector87spirv.func @fsub_vector(%arg0: vector<2xf32>, %arg1: vector<2xf32>) "None" {88 // CHECK: llvm.fsub %{{.*}}, %{{.*}} : vector<2xf32>89 %0 = spirv.FSub %arg0, %arg1 : vector<2xf32>90 spirv.Return91}92 93//===----------------------------------------------------------------------===//94// spirv.FDiv95//===----------------------------------------------------------------------===//96 97// CHECK-LABEL: @fdiv_scalar98spirv.func @fdiv_scalar(%arg0: f32, %arg1: f32) "None" {99 // CHECK: llvm.fdiv %{{.*}}, %{{.*}} : f32100 %0 = spirv.FDiv %arg0, %arg1 : f32101 spirv.Return102}103 104// CHECK-LABEL: @fdiv_vector105spirv.func @fdiv_vector(%arg0: vector<3xf64>, %arg1: vector<3xf64>) "None" {106 // CHECK: llvm.fdiv %{{.*}}, %{{.*}} : vector<3xf64>107 %0 = spirv.FDiv %arg0, %arg1 : vector<3xf64>108 spirv.Return109}110 111//===----------------------------------------------------------------------===//112// spirv.FMul113//===----------------------------------------------------------------------===//114 115// CHECK-LABEL: @fmul_scalar116spirv.func @fmul_scalar(%arg0: f32, %arg1: f32) "None" {117 // CHECK: llvm.fmul %{{.*}}, %{{.*}} : f32118 %0 = spirv.FMul %arg0, %arg1 : f32119 spirv.Return120}121 122// CHECK-LABEL: @fmul_vector123spirv.func @fmul_vector(%arg0: vector<2xf32>, %arg1: vector<2xf32>) "None" {124 // CHECK: llvm.fmul %{{.*}}, %{{.*}} : vector<2xf32>125 %0 = spirv.FMul %arg0, %arg1 : vector<2xf32>126 spirv.Return127}128 129//===----------------------------------------------------------------------===//130// spirv.FRem131//===----------------------------------------------------------------------===//132 133// CHECK-LABEL: @frem_scalar134spirv.func @frem_scalar(%arg0: f32, %arg1: f32) "None" {135 // CHECK: llvm.frem %{{.*}}, %{{.*}} : f32136 %0 = spirv.FRem %arg0, %arg1 : f32137 spirv.Return138}139 140// CHECK-LABEL: @frem_vector141spirv.func @frem_vector(%arg0: vector<3xf64>, %arg1: vector<3xf64>) "None" {142 // CHECK: llvm.frem %{{.*}}, %{{.*}} : vector<3xf64>143 %0 = spirv.FRem %arg0, %arg1 : vector<3xf64>144 spirv.Return145}146 147//===----------------------------------------------------------------------===//148// spirv.FNegate149//===----------------------------------------------------------------------===//150 151// CHECK-LABEL: @fneg_scalar152spirv.func @fneg_scalar(%arg: f64) "None" {153 // CHECK: llvm.fneg %{{.*}} : f64154 %0 = spirv.FNegate %arg : f64155 spirv.Return156}157 158// CHECK-LABEL: @fneg_vector159spirv.func @fneg_vector(%arg: vector<2xf32>) "None" {160 // CHECK: llvm.fneg %{{.*}} : vector<2xf32>161 %0 = spirv.FNegate %arg : vector<2xf32>162 spirv.Return163}164 165//===----------------------------------------------------------------------===//166// spirv.UDiv167//===----------------------------------------------------------------------===//168 169// CHECK-LABEL: @udiv_scalar170spirv.func @udiv_scalar(%arg0: i32, %arg1: i32) "None" {171 // CHECK: llvm.udiv %{{.*}}, %{{.*}} : i32172 %0 = spirv.UDiv %arg0, %arg1 : i32173 spirv.Return174}175 176// CHECK-LABEL: @udiv_vector177spirv.func @udiv_vector(%arg0: vector<3xi64>, %arg1: vector<3xi64>) "None" {178 // CHECK: llvm.udiv %{{.*}}, %{{.*}} : vector<3xi64>179 %0 = spirv.UDiv %arg0, %arg1 : vector<3xi64>180 spirv.Return181}182 183//===----------------------------------------------------------------------===//184// spirv.UMod185//===----------------------------------------------------------------------===//186 187// CHECK-LABEL: @umod_scalar188spirv.func @umod_scalar(%arg0: i32, %arg1: i32) "None" {189 // CHECK: llvm.urem %{{.*}}, %{{.*}} : i32190 %0 = spirv.UMod %arg0, %arg1 : i32191 spirv.Return192}193 194// CHECK-LABEL: @umod_vector195spirv.func @umod_vector(%arg0: vector<3xi64>, %arg1: vector<3xi64>) "None" {196 // CHECK: llvm.urem %{{.*}}, %{{.*}} : vector<3xi64>197 %0 = spirv.UMod %arg0, %arg1 : vector<3xi64>198 spirv.Return199}200 201//===----------------------------------------------------------------------===//202// spirv.SDiv203//===----------------------------------------------------------------------===//204 205// CHECK-LABEL: @sdiv_scalar206spirv.func @sdiv_scalar(%arg0: i16, %arg1: i16) "None" {207 // CHECK: llvm.sdiv %{{.*}}, %{{.*}} : i16208 %0 = spirv.SDiv %arg0, %arg1 : i16209 spirv.Return210}211 212// CHECK-LABEL: @sdiv_vector213spirv.func @sdiv_vector(%arg0: vector<2xi64>, %arg1: vector<2xi64>) "None" {214 // CHECK: llvm.sdiv %{{.*}}, %{{.*}} : vector<2xi64>215 %0 = spirv.SDiv %arg0, %arg1 : vector<2xi64>216 spirv.Return217}218 219//===----------------------------------------------------------------------===//220// spirv.SRem221//===----------------------------------------------------------------------===//222 223// CHECK-LABEL: @srem_scalar224spirv.func @srem_scalar(%arg0: i32, %arg1: i32) "None" {225 // CHECK: llvm.srem %{{.*}}, %{{.*}} : i32226 %0 = spirv.SRem %arg0, %arg1 : i32227 spirv.Return228}229 230// CHECK-LABEL: @srem_vector231spirv.func @srem_vector(%arg0: vector<4xi32>, %arg1: vector<4xi32>) "None" {232 // CHECK: llvm.srem %{{.*}}, %{{.*}} : vector<4xi32>233 %0 = spirv.SRem %arg0, %arg1 : vector<4xi32>234 spirv.Return235}236