Skip to content

Commit 96e1deb

Browse files
committed
adding new test-cases
1 parent fd523e5 commit 96e1deb

File tree

3 files changed

+168
-0
lines changed

3 files changed

+168
-0
lines changed

mlir/test/Dialect/X86Vector/legalize-for-llvm.mlir

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,60 @@ func.func @avxbf16_bsct_bf16_to_f32_packed_256(
149149
return %0 : vector<8xf32>
150150
}
151151

152+
// CHECK-LABEL: func @avxf16_cvt_packed_even_indexed_f16_to_f32_128
153+
func.func @avxf16_cvt_packed_even_indexed_f16_to_f32_128(
154+
%a: memref<8xf16>) -> vector<4xf32>
155+
{
156+
// CHECK: llvm.call_intrinsic "llvm.x86.vcvtneeph2ps128"
157+
%0 = x86vector.avx.cvt.packed.even.indexed.f16_to_f32 %a : memref<8xf16> -> vector<4xf32>
158+
return %0 : vector<4xf32>
159+
}
160+
161+
// CHECK-LABEL: func @avxf16_cvt_packed_even_indexed_f16_to_f32_256
162+
func.func @avxf16_cvt_packed_even_indexed_f16_to_f32_256(
163+
%a: memref<16xf16>) -> vector<8xf32>
164+
{
165+
// CHECK: llvm.call_intrinsic "llvm.x86.vcvtneeph2ps256"
166+
%0 = x86vector.avx.cvt.packed.even.indexed.f16_to_f32 %a : memref<16xf16> -> vector<8xf32>
167+
return %0 : vector<8xf32>
168+
}
169+
170+
// CHECK-LABEL: func @avxf16_cvt_packed_odd_indexed_f16_to_f32_128
171+
func.func @avxf16_cvt_packed_odd_indexed_f16_to_f32_128(
172+
%a: memref<8xf16>) -> vector<4xf32>
173+
{
174+
// CHECK: llvm.call_intrinsic "llvm.x86.vcvtneoph2ps128"
175+
%0 = x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 %a : memref<8xf16> -> vector<4xf32>
176+
return %0 : vector<4xf32>
177+
}
178+
179+
// CHECK-LABEL: func @avxf16_cvt_packed_odd_indexed_f16_to_f32_256
180+
func.func @avxf16_cvt_packed_odd_indexed_f16_to_f32_256(
181+
%a: memref<16xf16>) -> vector<8xf32>
182+
{
183+
// CHECK: llvm.call_intrinsic "llvm.x86.vcvtneoph2ps256"
184+
%0 = x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 %a : memref<16xf16> -> vector<8xf32>
185+
return %0 : vector<8xf32>
186+
}
187+
188+
// CHECK-LABEL: func @avxf16_bsct_f16_to_f32_packed_128
189+
func.func @avxf16_bsct_f16_to_f32_packed_128(
190+
%a: memref<1xf16>) -> vector<4xf32>
191+
{
192+
// CHECK: llvm.call_intrinsic "llvm.x86.vbcstnesh2ps128"
193+
%0 = x86vector.avx.bcst.f16_to_f32.packed %a : memref<1xf16> -> vector<4xf32>
194+
return %0 : vector<4xf32>
195+
}
196+
197+
// CHECK-LABEL: func @avxf16_bsct_f16_to_f32_packed_256
198+
func.func @avxf16_bsct_f16_to_f32_packed_256(
199+
%a: memref<1xf16>) -> vector<8xf32>
200+
{
201+
// CHECK: llvm.call_intrinsic "llvm.x86.vbcstnesh2ps256"
202+
%0 = x86vector.avx.bcst.f16_to_f32.packed %a : memref<1xf16> -> vector<8xf32>
203+
return %0 : vector<8xf32>
204+
}
205+
152206
// CHECK-LABEL: func @avx_rsqrt
153207
func.func @avx_rsqrt(%a: vector<8xf32>) -> (vector<8xf32>)
154208
{

mlir/test/Dialect/X86Vector/roundtrip.mlir

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,66 @@ func.func @avxbf16_bcst_bf16_to_f32_256(
154154
return %0 : vector<8xf32>
155155
}
156156

157+
// CHECK-LABEL: func @avxf16_cvt_packed_even_indexed_f16_to_f32_128
158+
func.func @avxf16_cvt_packed_even_indexed_f16_to_f32_128(
159+
%a: memref<8xf16>) -> vector<4xf32>
160+
{
161+
// CHECK: x86vector.avx.cvt.packed.even.indexed.f16_to_f32 {{.*}} :
162+
// CHECK-SAME: memref<8xf16> -> vector<4xf32>
163+
%0 = x86vector.avx.cvt.packed.even.indexed.f16_to_f32 %a : memref<8xf16> -> vector<4xf32>
164+
return %0 : vector<4xf32>
165+
}
166+
167+
// CHECK-LABEL: func @avxf16_cvt_packed_even_indexed_f16_to_f32_256
168+
func.func @avxf16_cvt_packed_even_indexed_f16_to_f32_256(
169+
%a: memref<16xf16>) -> vector<8xf32>
170+
{
171+
// CHECK: x86vector.avx.cvt.packed.even.indexed.f16_to_f32 {{.*}} :
172+
// CHECK-SAME: memref<16xf16> -> vector<8xf32>
173+
%0 = x86vector.avx.cvt.packed.even.indexed.f16_to_f32 %a : memref<16xf16> -> vector<8xf32>
174+
return %0 : vector<8xf32>
175+
}
176+
177+
// CHECK-LABEL: func @avxf16_cvt_packed_odd_indexed_f16_to_f32_128
178+
func.func @avxf16_cvt_packed_odd_indexed_f16_to_f32_128(
179+
%a: memref<8xf16>) -> vector<4xf32>
180+
{
181+
// CHECK: x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 {{.*}} :
182+
// CHECK-SAME: memref<8xf16> -> vector<4xf32>
183+
%0 = x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 %a : memref<8xf16> -> vector<4xf32>
184+
return %0 : vector<4xf32>
185+
}
186+
187+
// CHECK-LABEL: func @avxf16_cvt_packed_odd_indexed_f16_to_f32_256
188+
func.func @avxf16_cvt_packed_odd_indexed_f16_to_f32_256(
189+
%a: memref<16xf16>) -> vector<8xf32>
190+
{
191+
// CHECK: x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 {{.*}} :
192+
// CHECK-SAME: memref<16xf16> -> vector<8xf32>
193+
%0 = x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 %a : memref<16xf16> -> vector<8xf32>
194+
return %0 : vector<8xf32>
195+
}
196+
197+
// CHECK-LABEL: func @avxf16_bcst_f16_to_f32_128
198+
func.func @avxf16_bcst_f16_to_f32_128(
199+
%a: memref<1xf16>) -> vector<4xf32>
200+
{
201+
// CHECK: x86vector.avx.bcst.f16_to_f32.packed {{.*}} :
202+
// CHECK-SAME: memref<1xf16> -> vector<4xf32>
203+
%0 = x86vector.avx.bcst.f16_to_f32.packed %a : memref<1xf16> -> vector<4xf32>
204+
return %0 : vector<4xf32>
205+
}
206+
207+
// CHECK-LABEL: func @avxf16_bcst_f16_to_f32_256
208+
func.func @avxf16_bcst_f16_to_f32_256(
209+
%a: memref<1xf16>) -> vector<8xf32>
210+
{
211+
// CHECK: x86vector.avx.bcst.f16_to_f32.packed {{.*}} :
212+
// CHECK-SAME: memref<1xf16> -> vector<8xf32>
213+
%0 = x86vector.avx.bcst.f16_to_f32.packed %a : memref<1xf16> -> vector<8xf32>
214+
return %0 : vector<8xf32>
215+
}
216+
157217
// CHECK-LABEL: func @avx_rsqrt
158218
func.func @avx_rsqrt(%a: vector<8xf32>) -> (vector<8xf32>)
159219
{

mlir/test/Target/LLVMIR/x86vector.mlir

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,60 @@ func.func @LLVM_x86_avxbf16_vbcstnebf162ps256(
163163
return %0 : vector<8xf32>
164164
}
165165

166+
// CHECK-LABEL: define <4 x float> @LLVM_x86_avxf16_vcvtneeph2ps128
167+
func.func @LLVM_x86_avxf16_vcvtneeph2ps128(
168+
%a: memref<8xf16>) -> vector<4xf32>
169+
{
170+
// CHECK: call <4 x float> @llvm.x86.vcvtneeph2ps128(
171+
%0 = x86vector.avx.cvt.packed.even.indexed.f16_to_f32 %a : memref<8xf16> -> vector<4xf32>
172+
return %0 : vector<4xf32>
173+
}
174+
175+
// CHECK-LABEL: define <8 x float> @LLVM_x86_avxf16_vcvtneeph2ps256
176+
func.func @LLVM_x86_avxf16_vcvtneeph2ps256(
177+
%a: memref<16xf16>) -> vector<8xf32>
178+
{
179+
// CHECK: call <8 x float> @llvm.x86.vcvtneeph2ps256(
180+
%0 = x86vector.avx.cvt.packed.even.indexed.f16_to_f32 %a : memref<16xf16> -> vector<8xf32>
181+
return %0 : vector<8xf32>
182+
}
183+
184+
// CHECK-LABEL: define <4 x float> @LLVM_x86_avxf16_vcvtneoph2ps128
185+
func.func @LLVM_x86_avxf16_vcvtneoph2ps128(
186+
%a: memref<8xf16>) -> vector<4xf32>
187+
{
188+
// CHECK: call <4 x float> @llvm.x86.vcvtneoph2ps128(
189+
%0 = x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 %a : memref<8xf16> -> vector<4xf32>
190+
return %0 : vector<4xf32>
191+
}
192+
193+
// CHECK-LABEL: define <8 x float> @LLVM_x86_avxf16_vcvtneoph2ps256
194+
func.func @LLVM_x86_avxf16_vcvtneoph2ps256(
195+
%a: memref<16xf16>) -> vector<8xf32>
196+
{
197+
// CHECK: call <8 x float> @llvm.x86.vcvtneoph2ps256(
198+
%0 = x86vector.avx.cvt.packed.odd.indexed.f16_to_f32 %a : memref<16xf16> -> vector<8xf32>
199+
return %0 : vector<8xf32>
200+
}
201+
202+
// CHECK-LABEL: define <4 x float> @LLVM_x86_avxf16_vbcstnesh2ps128
203+
func.func @LLVM_x86_avxf16_vbcstnesh2ps128(
204+
%a: memref<1xf16>) -> vector<4xf32>
205+
{
206+
// CHECK: call <4 x float> @llvm.x86.vbcstnesh2ps128(
207+
%0 = x86vector.avx.bcst.f16_to_f32.packed %a : memref<1xf16> -> vector<4xf32>
208+
return %0 : vector<4xf32>
209+
}
210+
211+
// CHECK-LABEL: define <8 x float> @LLVM_x86_avxf16_vbcstnesh2ps256
212+
func.func @LLVM_x86_avxf16_vbcstnesh2ps256(
213+
%a: memref<1xf16>) -> vector<8xf32>
214+
{
215+
// CHECK: call <8 x float> @llvm.x86.vbcstnesh2ps256(
216+
%0 = x86vector.avx.bcst.f16_to_f32.packed %a : memref<1xf16> -> vector<8xf32>
217+
return %0 : vector<8xf32>
218+
}
219+
166220
// CHECK-LABEL: define <8 x float> @LLVM_x86_avx_rsqrt_ps_256
167221
func.func @LLVM_x86_avx_rsqrt_ps_256(%a: vector <8xf32>) -> vector<8xf32>
168222
{

0 commit comments

Comments
 (0)