94 lines · plain
1// RUN: mlir-opt -convert-spirv-to-llvm %s | FileCheck %s2 3//===----------------------------------------------------------------------===//4// spirv.LogicalEqual5//===----------------------------------------------------------------------===//6 7// CHECK-LABEL: @logical_equal_scalar8spirv.func @logical_equal_scalar(%arg0: i1, %arg1: i1) "None" {9 // CHECK: llvm.icmp "eq" %{{.*}}, %{{.*}} : i110 %0 = spirv.LogicalEqual %arg0, %arg1 : i111 spirv.Return12}13 14// CHECK-LABEL: @logical_equal_vector15spirv.func @logical_equal_vector(%arg0: vector<4xi1>, %arg1: vector<4xi1>) "None" {16 // CHECK: llvm.icmp "eq" %{{.*}}, %{{.*}} : vector<4xi1>17 %0 = spirv.LogicalEqual %arg0, %arg1 : vector<4xi1>18 spirv.Return19}20 21//===----------------------------------------------------------------------===//22// spirv.LogicalNotEqual23//===----------------------------------------------------------------------===//24 25// CHECK-LABEL: @logical_not_equal_scalar26spirv.func @logical_not_equal_scalar(%arg0: i1, %arg1: i1) "None" {27 // CHECK: llvm.icmp "ne" %{{.*}}, %{{.*}} : i128 %0 = spirv.LogicalNotEqual %arg0, %arg1 : i129 spirv.Return30}31 32// CHECK-LABEL: @logical_not_equal_vector33spirv.func @logical_not_equal_vector(%arg0: vector<4xi1>, %arg1: vector<4xi1>) "None" {34 // CHECK: llvm.icmp "ne" %{{.*}}, %{{.*}} : vector<4xi1>35 %0 = spirv.LogicalNotEqual %arg0, %arg1 : vector<4xi1>36 spirv.Return37}38 39//===----------------------------------------------------------------------===//40// spirv.LogicalNot41//===----------------------------------------------------------------------===//42 43// CHECK-LABEL: @logical_not_scalar44spirv.func @logical_not_scalar(%arg0: i1) "None" {45 // CHECK: %[[CONST:.*]] = llvm.mlir.constant(true) : i146 // CHECK: llvm.xor %{{.*}}, %[[CONST]] : i147 %0 = spirv.LogicalNot %arg0 : i148 spirv.Return49}50 51// CHECK-LABEL: @logical_not_vector52spirv.func @logical_not_vector(%arg0: vector<4xi1>) "None" {53 // CHECK: %[[CONST:.*]] = llvm.mlir.constant(dense<true> : vector<4xi1>) : vector<4xi1>54 // CHECK: llvm.xor %{{.*}}, %[[CONST]] : vector<4xi1>55 %0 = spirv.LogicalNot %arg0 : vector<4xi1>56 spirv.Return57}58 59//===----------------------------------------------------------------------===//60// spirv.LogicalAnd61//===----------------------------------------------------------------------===//62 63// CHECK-LABEL: @logical_and_scalar64spirv.func @logical_and_scalar(%arg0: i1, %arg1: i1) "None" {65 // CHECK: llvm.and %{{.*}}, %{{.*}} : i166 %0 = spirv.LogicalAnd %arg0, %arg1 : i167 spirv.Return68}69 70// CHECK-LABEL: @logical_and_vector71spirv.func @logical_and_vector(%arg0: vector<4xi1>, %arg1: vector<4xi1>) "None" {72 // CHECK: llvm.and %{{.*}}, %{{.*}} : vector<4xi1>73 %0 = spirv.LogicalAnd %arg0, %arg1 : vector<4xi1>74 spirv.Return75}76 77//===----------------------------------------------------------------------===//78// spirv.LogicalOr79//===----------------------------------------------------------------------===//80 81// CHECK-LABEL: @logical_or_scalar82spirv.func @logical_or_scalar(%arg0: i1, %arg1: i1) "None" {83 // CHECK: llvm.or %{{.*}}, %{{.*}} : i184 %0 = spirv.LogicalOr %arg0, %arg1 : i185 spirv.Return86}87 88// CHECK-LABEL: @logical_or_vector89spirv.func @logical_or_vector(%arg0: vector<4xi1>, %arg1: vector<4xi1>) "None" {90 // CHECK: llvm.or %{{.*}}, %{{.*}} : vector<4xi1>91 %0 = spirv.LogicalOr %arg0, %arg1 : vector<4xi1>92 spirv.Return93}94