brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · c1447b3 Raw
180 lines · plain
1// RUN: mlir-opt -split-input-file -spirv-canonicalize-gl %s | FileCheck %s2 3// CHECK-LABEL: func @clamp_fordlessthan4//  CHECK-SAME: (%[[INPUT:.*]]: f32, %[[MIN:.*]]: f32, %[[MAX:.*]]: f32)5func.func @clamp_fordlessthan(%input: f32, %min: f32, %max: f32) -> f32 {6  // CHECK: [[RES:%.*]] = spirv.GL.FClamp %[[INPUT]], %[[MIN]], %[[MAX]]7  %0 = spirv.FOrdLessThan %min, %input : f328  %mid = spirv.Select %0, %input, %min : i1, f329  %1 = spirv.FOrdLessThan %mid, %max : f3210  %2 = spirv.Select %1, %mid, %max : i1, f3211 12  // CHECK-NEXT: spirv.ReturnValue [[RES]]13  spirv.ReturnValue %2 : f3214}15 16// -----17 18// CHECK-LABEL: func @clamp_fordlessthan19//  CHECK-SAME: (%[[INPUT:.*]]: f32, %[[MIN:.*]]: f32, %[[MAX:.*]]: f32)20func.func @clamp_fordlessthan(%input: f32, %min: f32, %max: f32) -> f32 {21  // CHECK: [[RES:%.*]] = spirv.GL.FClamp %[[INPUT]], %[[MIN]], %[[MAX]]22  %0 = spirv.FOrdLessThan %input, %min : f3223  %mid = spirv.Select %0, %min, %input : i1, f3224  %1 = spirv.FOrdLessThan %max, %input : f3225  %2 = spirv.Select %1, %max, %mid : i1, f3226 27  // CHECK-NEXT: spirv.ReturnValue [[RES]]28  spirv.ReturnValue %2 : f3229}30 31// -----32 33// CHECK-LABEL: func @clamp_fordlessthanequal34//  CHECK-SAME: (%[[INPUT:.*]]: f32, %[[MIN:.*]]: f32, %[[MAX:.*]]: f32)35func.func @clamp_fordlessthanequal(%input: f32, %min: f32, %max: f32) -> f32 {36  // CHECK: [[RES:%.*]] = spirv.GL.FClamp %[[INPUT]], %[[MIN]], %[[MAX]]37  %0 = spirv.FOrdLessThanEqual %min, %input : f3238  %mid = spirv.Select %0, %input, %min : i1, f3239  %1 = spirv.FOrdLessThanEqual %mid, %max : f3240  %2 = spirv.Select %1, %mid, %max : i1, f3241 42  // CHECK-NEXT: spirv.ReturnValue [[RES]]43  spirv.ReturnValue %2 : f3244}45 46// -----47 48// CHECK-LABEL: func @clamp_fordlessthanequal49//  CHECK-SAME: (%[[INPUT:.*]]: f32, %[[MIN:.*]]: f32, %[[MAX:.*]]: f32)50func.func @clamp_fordlessthanequal(%input: f32, %min: f32, %max: f32) -> f32 {51  // CHECK: [[RES:%.*]] = spirv.GL.FClamp %[[INPUT]], %[[MIN]], %[[MAX]]52  %0 = spirv.FOrdLessThanEqual %input, %min : f3253  %mid = spirv.Select %0, %min, %input : i1, f3254  %1 = spirv.FOrdLessThanEqual %max, %input : f3255  %2 = spirv.Select %1, %max, %mid : i1, f3256 57  // CHECK-NEXT: spirv.ReturnValue [[RES]]58  spirv.ReturnValue %2 : f3259}60 61// -----62 63// CHECK-LABEL: func @clamp_slessthan64//  CHECK-SAME: (%[[INPUT:.*]]: si32, %[[MIN:.*]]: si32, %[[MAX:.*]]: si32)65func.func @clamp_slessthan(%input: si32, %min: si32, %max: si32) -> si32 {66  // CHECK: [[RES:%.*]] = spirv.GL.SClamp %[[INPUT]], %[[MIN]], %[[MAX]]67  %0 = spirv.SLessThan %min, %input : si3268  %mid = spirv.Select %0, %input, %min : i1, si3269  %1 = spirv.SLessThan %mid, %max : si3270  %2 = spirv.Select %1, %mid, %max : i1, si3271 72  // CHECK-NEXT: spirv.ReturnValue [[RES]]73  spirv.ReturnValue %2 : si3274}75 76// -----77 78// CHECK-LABEL: func @clamp_slessthan79//  CHECK-SAME: (%[[INPUT:.*]]: si32, %[[MIN:.*]]: si32, %[[MAX:.*]]: si32)80func.func @clamp_slessthan(%input: si32, %min: si32, %max: si32) -> si32 {81  // CHECK: [[RES:%.*]] = spirv.GL.SClamp %[[INPUT]], %[[MIN]], %[[MAX]]82  %0 = spirv.SLessThan %input, %min : si3283  %mid = spirv.Select %0, %min, %input : i1, si3284  %1 = spirv.SLessThan %max, %input : si3285  %2 = spirv.Select %1, %max, %mid : i1, si3286 87  // CHECK-NEXT: spirv.ReturnValue [[RES]]88  spirv.ReturnValue %2 : si3289}90 91// -----92 93// CHECK-LABEL: func @clamp_slessthanequal94//  CHECK-SAME: (%[[INPUT:.*]]: si32, %[[MIN:.*]]: si32, %[[MAX:.*]]: si32)95func.func @clamp_slessthanequal(%input: si32, %min: si32, %max: si32) -> si32 {96  // CHECK: [[RES:%.*]] = spirv.GL.SClamp %[[INPUT]], %[[MIN]], %[[MAX]]97  %0 = spirv.SLessThanEqual %min, %input : si3298  %mid = spirv.Select %0, %input, %min : i1, si3299  %1 = spirv.SLessThanEqual %mid, %max : si32100  %2 = spirv.Select %1, %mid, %max : i1, si32101 102  // CHECK-NEXT: spirv.ReturnValue [[RES]]103  spirv.ReturnValue %2 : si32104}105 106// -----107 108// CHECK-LABEL: func @clamp_slessthanequal109//  CHECK-SAME: (%[[INPUT:.*]]: si32, %[[MIN:.*]]: si32, %[[MAX:.*]]: si32)110func.func @clamp_slessthanequal(%input: si32, %min: si32, %max: si32) -> si32 {111  // CHECK: [[RES:%.*]] = spirv.GL.SClamp %[[INPUT]], %[[MIN]], %[[MAX]]112  %0 = spirv.SLessThanEqual %input, %min : si32113  %mid = spirv.Select %0, %min, %input : i1, si32114  %1 = spirv.SLessThanEqual %max, %input : si32115  %2 = spirv.Select %1, %max, %mid : i1, si32116 117  // CHECK-NEXT: spirv.ReturnValue [[RES]]118  spirv.ReturnValue %2 : si32119}120 121// -----122 123// CHECK-LABEL: func @clamp_ulessthan124//  CHECK-SAME: (%[[INPUT:.*]]: i32, %[[MIN:.*]]: i32, %[[MAX:.*]]: i32)125func.func @clamp_ulessthan(%input: i32, %min: i32, %max: i32) -> i32 {126  // CHECK: [[RES:%.*]] = spirv.GL.UClamp %[[INPUT]], %[[MIN]], %[[MAX]]127  %0 = spirv.ULessThan %min, %input : i32128  %mid = spirv.Select %0, %input, %min : i1, i32129  %1 = spirv.ULessThan %mid, %max : i32130  %2 = spirv.Select %1, %mid, %max : i1, i32131 132  // CHECK-NEXT: spirv.ReturnValue [[RES]]133  spirv.ReturnValue %2 : i32134}135 136// -----137 138// CHECK-LABEL: func @clamp_ulessthan139//  CHECK-SAME: (%[[INPUT:.*]]: i32, %[[MIN:.*]]: i32, %[[MAX:.*]]: i32)140func.func @clamp_ulessthan(%input: i32, %min: i32, %max: i32) -> i32 {141  // CHECK: [[RES:%.*]] = spirv.GL.UClamp %[[INPUT]], %[[MIN]], %[[MAX]]142  %0 = spirv.ULessThan %input, %min : i32143  %mid = spirv.Select %0, %min, %input : i1, i32144  %1 = spirv.ULessThan %max, %input : i32145  %2 = spirv.Select %1, %max, %mid : i1, i32146 147  // CHECK-NEXT: spirv.ReturnValue [[RES]]148  spirv.ReturnValue %2 : i32149}150 151// -----152 153// CHECK-LABEL: func @clamp_ulessthanequal154//  CHECK-SAME: (%[[INPUT:.*]]: i32, %[[MIN:.*]]: i32, %[[MAX:.*]]: i32)155func.func @clamp_ulessthanequal(%input: i32, %min: i32, %max: i32) -> i32 {156  // CHECK: [[RES:%.*]] = spirv.GL.UClamp %[[INPUT]], %[[MIN]], %[[MAX]]157  %0 = spirv.ULessThanEqual %min, %input : i32158  %mid = spirv.Select %0, %input, %min : i1, i32159  %1 = spirv.ULessThanEqual %mid, %max : i32160  %2 = spirv.Select %1, %mid, %max : i1, i32161 162  // CHECK-NEXT: spirv.ReturnValue [[RES]]163  spirv.ReturnValue %2 : i32164}165 166// -----167 168// CHECK-LABEL: func @clamp_ulessthanequal169//  CHECK-SAME: (%[[INPUT:.*]]: i32, %[[MIN:.*]]: i32, %[[MAX:.*]]: i32)170func.func @clamp_ulessthanequal(%input: i32, %min: i32, %max: i32) -> i32 {171  // CHECK: [[RES:%.*]] = spirv.GL.UClamp %[[INPUT]], %[[MIN]], %[[MAX]]172  %0 = spirv.ULessThanEqual %input, %min : i32173  %mid = spirv.Select %0, %min, %input : i1, i32174  %1 = spirv.ULessThanEqual %max, %input : i32175  %2 = spirv.Select %1, %max, %mid : i1, i32176 177  // CHECK-NEXT: spirv.ReturnValue [[RES]]178  spirv.ReturnValue %2 : i32179}180