[RISCV] Fix the code alignment for GroupFloatVectors. NFC
[llvm-project.git] / mlir / test / Conversion / SPIRVToLLVM / glsl-ops-to-llvm.mlir
blobc9243f660fbaa075351c48308ffec3554a78832b
1 // RUN: mlir-opt -convert-spirv-to-llvm %s | FileCheck %s
3 //===----------------------------------------------------------------------===//
4 // spv.GLSL.Ceil
5 //===----------------------------------------------------------------------===//
7 // CHECK-LABEL: @ceil
8 spv.func @ceil(%arg0: f32, %arg1: vector<3xf16>) "None" {
9   // CHECK: "llvm.intr.ceil"(%{{.*}}) : (f32) -> f32
10   %0 = spv.GLSL.Ceil %arg0 : f32
11   // CHECK: "llvm.intr.ceil"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
12   %1 = spv.GLSL.Ceil %arg1 : vector<3xf16>
13   spv.Return
16 //===----------------------------------------------------------------------===//
17 // spv.GLSL.Cos
18 //===----------------------------------------------------------------------===//
20 // CHECK-LABEL: @cos
21 spv.func @cos(%arg0: f32, %arg1: vector<3xf16>) "None" {
22   // CHECK: "llvm.intr.cos"(%{{.*}}) : (f32) -> f32
23   %0 = spv.GLSL.Cos %arg0 : f32
24   // CHECK: "llvm.intr.cos"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
25   %1 = spv.GLSL.Cos %arg1 : vector<3xf16>
26   spv.Return
29 //===----------------------------------------------------------------------===//
30 // spv.GLSL.Exp
31 //===----------------------------------------------------------------------===//
33 // CHECK-LABEL: @exp
34 spv.func @exp(%arg0: f32, %arg1: vector<3xf16>) "None" {
35   // CHECK: "llvm.intr.exp"(%{{.*}}) : (f32) -> f32
36   %0 = spv.GLSL.Exp %arg0 : f32
37   // CHECK: "llvm.intr.exp"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
38   %1 = spv.GLSL.Exp %arg1 : vector<3xf16>
39   spv.Return
42 //===----------------------------------------------------------------------===//
43 // spv.GLSL.FAbs
44 //===----------------------------------------------------------------------===//
46 // CHECK-LABEL: @fabs
47 spv.func @fabs(%arg0: f32, %arg1: vector<3xf16>) "None" {
48   // CHECK: "llvm.intr.fabs"(%{{.*}}) : (f32) -> f32
49   %0 = spv.GLSL.FAbs %arg0 : f32
50   // CHECK: "llvm.intr.fabs"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
51   %1 = spv.GLSL.FAbs %arg1 : vector<3xf16>
52   spv.Return
55 //===----------------------------------------------------------------------===//
56 // spv.GLSL.Floor
57 //===----------------------------------------------------------------------===//
59 // CHECK-LABEL: @floor
60 spv.func @floor(%arg0: f32, %arg1: vector<3xf16>) "None" {
61   // CHECK: "llvm.intr.floor"(%{{.*}}) : (f32) -> f32
62   %0 = spv.GLSL.Floor %arg0 : f32
63   // CHECK: "llvm.intr.floor"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
64   %1 = spv.GLSL.Floor %arg1 : vector<3xf16>
65   spv.Return
68 //===----------------------------------------------------------------------===//
69 // spv.GLSL.FMax
70 //===----------------------------------------------------------------------===//
72 // CHECK-LABEL: @fmax
73 spv.func @fmax(%arg0: f32, %arg1: vector<3xf16>) "None" {
74   // CHECK: "llvm.intr.maxnum"(%{{.*}}, %{{.*}}) : (f32, f32) -> f32
75   %0 = spv.GLSL.FMax %arg0, %arg0 : f32
76   // CHECK: "llvm.intr.maxnum"(%{{.*}}, %{{.*}}) : (vector<3xf16>, vector<3xf16>) -> vector<3xf16>
77   %1 = spv.GLSL.FMax %arg1, %arg1 : vector<3xf16>
78   spv.Return
81 //===----------------------------------------------------------------------===//
82 // spv.GLSL.FMin
83 //===----------------------------------------------------------------------===//
85 // CHECK-LABEL: @fmin
86 spv.func @fmin(%arg0: f32, %arg1: vector<3xf16>) "None" {
87   // CHECK: "llvm.intr.minnum"(%{{.*}}, %{{.*}}) : (f32, f32) -> f32
88   %0 = spv.GLSL.FMin %arg0, %arg0 : f32
89   // CHECK: "llvm.intr.minnum"(%{{.*}}, %{{.*}}) : (vector<3xf16>, vector<3xf16>) -> vector<3xf16>
90   %1 = spv.GLSL.FMin %arg1, %arg1 : vector<3xf16>
91   spv.Return
94 //===----------------------------------------------------------------------===//
95 // spv.GLSL.Log
96 //===----------------------------------------------------------------------===//
98 // CHECK-LABEL: @log
99 spv.func @log(%arg0: f32, %arg1: vector<3xf16>) "None" {
100   // CHECK: "llvm.intr.log"(%{{.*}}) : (f32) -> f32
101   %0 = spv.GLSL.Log %arg0 : f32
102   // CHECK: "llvm.intr.log"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
103   %1 = spv.GLSL.Log %arg1 : vector<3xf16>
104   spv.Return
107 //===----------------------------------------------------------------------===//
108 // spv.GLSL.Sin
109 //===----------------------------------------------------------------------===//
111 // CHECK-LABEL: @sin
112 spv.func @sin(%arg0: f32, %arg1: vector<3xf16>) "None" {
113   // CHECK: "llvm.intr.sin"(%{{.*}}) : (f32) -> f32
114   %0 = spv.GLSL.Sin %arg0 : f32
115   // CHECK: "llvm.intr.sin"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
116   %1 = spv.GLSL.Sin %arg1 : vector<3xf16>
117   spv.Return
120 //===----------------------------------------------------------------------===//
121 // spv.GLSL.SMax
122 //===----------------------------------------------------------------------===//
124 // CHECK-LABEL: @smax
125 spv.func @smax(%arg0: i16, %arg1: vector<3xi32>) "None" {
126   // CHECK: "llvm.intr.smax"(%{{.*}}, %{{.*}}) : (i16, i16) -> i16
127   %0 = spv.GLSL.SMax %arg0, %arg0 : i16
128   // CHECK: "llvm.intr.smax"(%{{.*}}, %{{.*}}) : (vector<3xi32>, vector<3xi32>) -> vector<3xi32>
129   %1 = spv.GLSL.SMax %arg1, %arg1 : vector<3xi32>
130   spv.Return
133 //===----------------------------------------------------------------------===//
134 // spv.GLSL.SMin
135 //===----------------------------------------------------------------------===//
137 // CHECK-LABEL: @smin
138 spv.func @smin(%arg0: i16, %arg1: vector<3xi32>) "None" {
139   // CHECK: "llvm.intr.smin"(%{{.*}}, %{{.*}}) : (i16, i16) -> i16
140   %0 = spv.GLSL.SMin %arg0, %arg0 : i16
141   // CHECK: "llvm.intr.smin"(%{{.*}}, %{{.*}}) : (vector<3xi32>, vector<3xi32>) -> vector<3xi32>
142   %1 = spv.GLSL.SMin %arg1, %arg1 : vector<3xi32>
143   spv.Return
146 //===----------------------------------------------------------------------===//
147 // spv.GLSL.Sqrt
148 //===----------------------------------------------------------------------===//
150 // CHECK-LABEL: @sqrt
151 spv.func @sqrt(%arg0: f32, %arg1: vector<3xf16>) "None" {
152   // CHECK: "llvm.intr.sqrt"(%{{.*}}) : (f32) -> f32
153   %0 = spv.GLSL.Sqrt %arg0 : f32
154   // CHECK: "llvm.intr.sqrt"(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
155   %1 = spv.GLSL.Sqrt %arg1 : vector<3xf16>
156   spv.Return
159 //===----------------------------------------------------------------------===//
160 // spv.GLSL.Tan
161 //===----------------------------------------------------------------------===//
163 // CHECK-LABEL: @tan
164 spv.func @tan(%arg0: f32) "None" {
165   // CHECK: %[[SIN:.*]] = "llvm.intr.sin"(%{{.*}}) : (f32) -> f32
166   // CHECK: %[[COS:.*]] = "llvm.intr.cos"(%{{.*}}) : (f32) -> f32
167   // CHECK: llvm.fdiv %[[SIN]], %[[COS]] : f32
168   %0 = spv.GLSL.Tan %arg0 : f32
169   spv.Return
172 //===----------------------------------------------------------------------===//
173 // spv.GLSL.Tanh
174 //===----------------------------------------------------------------------===//
176 // CHECK-LABEL: @tanh
177 spv.func @tanh(%arg0: f32) "None" {
178   // CHECK: %[[TWO:.*]] = llvm.mlir.constant(2.000000e+00 : f32) : f32
179   // CHECK: %[[X2:.*]] = llvm.fmul %[[TWO]], %{{.*}} : f32
180   // CHECK: %[[EXP:.*]] = "llvm.intr.exp"(%[[X2]]) : (f32) -> f32
181   // CHECK: %[[ONE:.*]] = llvm.mlir.constant(1.000000e+00 : f32) : f32
182   // CHECK: %[[T0:.*]] = llvm.fsub %[[EXP]], %[[ONE]] : f32
183   // CHECK: %[[T1:.*]] = llvm.fadd %[[EXP]], %[[ONE]] : f32
184   // CHECK: llvm.fdiv %[[T0]], %[[T1]] : f32
185   %0 = spv.GLSL.Tanh %arg0 : f32
186   spv.Return
189 //===----------------------------------------------------------------------===//
190 // spv.GLSL.InverseSqrt
191 //===----------------------------------------------------------------------===//
193 // CHECK-LABEL: @inverse_sqrt
194 spv.func @inverse_sqrt(%arg0: f32) "None" {
195   // CHECK: %[[ONE:.*]] = llvm.mlir.constant(1.000000e+00 : f32) : f32
196   // CHECK: %[[SQRT:.*]] = "llvm.intr.sqrt"(%{{.*}}) : (f32) -> f32
197   // CHECK: llvm.fdiv %[[ONE]], %[[SQRT]] : f32
198   %0 = spv.GLSL.InverseSqrt %arg0 : f32
199   spv.Return