Skip to content

Commit f0e7fe2

Browse files
fix rebase
1 parent 316f420 commit f0e7fe2

File tree

2 files changed

+80
-3
lines changed

2 files changed

+80
-3
lines changed

mlir/test/Target/LLVMIR/Import/intrinsic.ll

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ define void @ldexp_test(float %0, <8 x float> %1, i32 %2) {
6060
ret void
6161
}
6262

63+
; CHECK-LABEL: llvm.func @frexp_test
64+
define void @frexp_test(float %0, <8 x float> %1) {
65+
; CHECK: llvm.intr.frexp(%{{.*}}) : (f32) -> !llvm.struct<(f32, i32)>
66+
%4 = call { float, i32 } @llvm.frexp.f32.i32(float %0)
67+
; CHECK: llvm.intr.frexp(%{{.*}}) : (vector<8xf32>) -> !llvm.struct<(vector<8xf32>, i32)>
68+
%5 = call { <8 x float>, i32 } @llvm.frexp.v8f32.i32(<8 x float> %1)
69+
ret void
70+
}
71+
6372
; CHECK-LABEL: llvm.func @log_test
6473
define void @log_test(float %0, <8 x float> %1) {
6574
; CHECK: llvm.intr.log(%{{.*}}) : (f32) -> f32
@@ -1043,6 +1052,23 @@ define void @experimental_constrained_fptrunc(double %s, <4 x double> %v) {
10431052
ret void
10441053
}
10451054

1055+
; CHECK-LABEL: experimental_constrained_uitofp
1056+
define void @experimental_constrained_uitofp(i32 %s, <4 x i32> %v) {
1057+
; CHECK: llvm.intr.experimental.constrained.uitofp %{{.*}} towardzero ignore : i32 to f32
1058+
%1 = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %s, metadata !"round.towardzero", metadata !"fpexcept.ignore")
1059+
; CHECK: llvm.intr.experimental.constrained.uitofp %{{.*}} tonearest maytrap : i32 to f32
1060+
%2 = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %s, metadata !"round.tonearest", metadata !"fpexcept.maytrap")
1061+
; CHECK: llvm.intr.experimental.constrained.uitofp %{{.*}} upward strict : i32 to f32
1062+
%3 = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %s, metadata !"round.upward", metadata !"fpexcept.strict")
1063+
; CHECK: llvm.intr.experimental.constrained.uitofp %{{.*}} downward ignore : i32 to f32
1064+
%4 = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %s, metadata !"round.downward", metadata !"fpexcept.ignore")
1065+
; CHECK: llvm.intr.experimental.constrained.uitofp %{{.*}} tonearestaway ignore : i32 to f32
1066+
%5 = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %s, metadata !"round.tonearestaway", metadata !"fpexcept.ignore")
1067+
; CHECK: llvm.intr.experimental.constrained.uitofp %{{.*}} tonearestaway ignore : vector<4xi32> to vector<4xf32>
1068+
%6 = call <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32> %v, metadata !"round.tonearestaway", metadata !"fpexcept.ignore")
1069+
ret void
1070+
}
1071+
10461072
; CHECK-LABEL: experimental_constrained_sitofp
10471073
define void @experimental_constrained_sitofp(i32 %s, <4 x i32> %v) {
10481074
; CHECK: llvm.intr.experimental.constrained.sitofp %{{.*}} towardzero ignore : i32 to f32
@@ -1088,6 +1114,8 @@ declare float @llvm.exp10.f32(float)
10881114
declare <8 x float> @llvm.exp10.v8f32(<8 x float>)
10891115
declare float @llvm.ldexp.f32.i32(float, i32)
10901116
declare <8 x float> @llvm.ldexp.v8f32.i32(<8 x float>, i32)
1117+
declare { float, i32 } @llvm.frexp.f32.i32(float)
1118+
declare { <8 x float>, i32 } @llvm.frexp.v8f32.i32(<8 x float>)
10911119
declare float @llvm.log.f32(float)
10921120
declare <8 x float> @llvm.log.v8f32(<8 x float>)
10931121
declare float @llvm.log10.f32(float)
@@ -1317,8 +1345,10 @@ declare ptr @llvm.ptrmask.p0.i64(ptr, i64)
13171345
declare <8 x ptr> @llvm.ptrmask.v8p0.v8i64(<8 x ptr>, <8 x i64>)
13181346
declare <vscale x 4 x float> @llvm.vector.insert.nxv4f32.v4f32(<vscale x 4 x float>, <4 x float>, i64)
13191347
declare <4 x float> @llvm.vector.extract.v4f32.nxv4f32(<vscale x 4 x float>, i64)
1320-
declare <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4i32(<4 x i32>, metadata, metadata)
1321-
declare float @llvm.experimental.constrained.fptrunc.f32.i32(i32, metadata, metadata)
1348+
declare <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)
1349+
declare float @llvm.experimental.constrained.uitofp.f32.i32(i32, metadata, metadata)
1350+
declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)
1351+
declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)
13221352
declare <4 x half> @llvm.experimental.constrained.fptrunc.v4f16.v4f64(<4 x double>, metadata, metadata)
13231353
declare float @llvm.experimental.constrained.fptrunc.f32.f64(double, metadata, metadata)
13241354
declare <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(<4 x float>, metadata)

mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@ llvm.func @ldexp_test(%arg0: f32, %arg1: vector<8xf32>, %arg2: i32) {
5858
llvm.return
5959
}
6060

61+
// CHECK-LABEL: @frexp_test
62+
llvm.func @frexp_test(%arg0: f32, %arg1: vector<8xf32>) {
63+
// CHECK: call { float, i32 } @llvm.frexp.f32.i32(float %{{.*}})
64+
llvm.intr.frexp(%arg0) : (f32) -> !llvm.struct<(f32, i32)>
65+
// CHECK: call { <8 x float>, i32 } @llvm.frexp.v8f32.i32(<8 x float> %{{.*}})
66+
llvm.intr.frexp(%arg1) : (vector<8xf32>) -> !llvm.struct<(vector<8xf32>, i32)>
67+
llvm.return
68+
}
69+
6170
// CHECK-LABEL: @log_test
6271
llvm.func @log_test(%arg0: f32, %arg1: vector<8xf32>) {
6372
// CHECK: call float @llvm.log.f32
@@ -1104,13 +1113,41 @@ llvm.func @ptrmask(%p: !llvm.ptr, %mask: i64) -> !llvm.ptr {
11041113
llvm.return %0 : !llvm.ptr
11051114
}
11061115

1107-
// CHECK-LABEL: @vector_ptrmask
11081116
llvm.func @vector_ptrmask(%p: vector<8 x !llvm.ptr>, %mask: vector<8 x i64>) -> vector<8 x !llvm.ptr> {
11091117
// CHECK: call <8 x ptr> @llvm.ptrmask.v8p0.v8i64
11101118
%0 = llvm.intr.ptrmask %p, %mask : (vector<8 x !llvm.ptr>, vector<8 x i64>) -> vector<8 x !llvm.ptr>
11111119
llvm.return %0 : vector<8 x !llvm.ptr>
11121120
}
11131121

1122+
// CHECK-LABEL: @experimental_constrained_uitofp
1123+
llvm.func @experimental_constrained_uitofp(%s: i32, %v: vector<4 x i32>) {
1124+
// CHECK: call float @llvm.experimental.constrained.uitofp.f32.i32(
1125+
// CHECK: metadata !"round.towardzero"
1126+
// CHECK: metadata !"fpexcept.ignore"
1127+
%0 = llvm.intr.experimental.constrained.uitofp %s towardzero ignore : i32 to f32
1128+
// CHECK: call float @llvm.experimental.constrained.uitofp.f32.i32(
1129+
// CHECK: metadata !"round.tonearest"
1130+
// CHECK: metadata !"fpexcept.maytrap"
1131+
%1 = llvm.intr.experimental.constrained.uitofp %s tonearest maytrap : i32 to f32
1132+
// CHECK: call float @llvm.experimental.constrained.uitofp.f32.i32(
1133+
// CHECK: metadata !"round.upward"
1134+
// CHECK: metadata !"fpexcept.strict"
1135+
%2 = llvm.intr.experimental.constrained.uitofp %s upward strict : i32 to f32
1136+
// CHECK: call float @llvm.experimental.constrained.uitofp.f32.i32(
1137+
// CHECK: metadata !"round.downward"
1138+
// CHECK: metadata !"fpexcept.ignore"
1139+
%3 = llvm.intr.experimental.constrained.uitofp %s downward ignore : i32 to f32
1140+
// CHECK: call float @llvm.experimental.constrained.uitofp.f32.i32(
1141+
// CHECK: metadata !"round.tonearestaway"
1142+
// CHECK: metadata !"fpexcept.ignore"
1143+
%4 = llvm.intr.experimental.constrained.uitofp %s tonearestaway ignore : i32 to f32
1144+
// CHECK: call <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(
1145+
// CHECK: metadata !"round.upward"
1146+
// CHECK: metadata !"fpexcept.strict"
1147+
%5 = llvm.intr.experimental.constrained.uitofp %v upward strict : vector<4 x i32> to vector<4 x f32>
1148+
llvm.return
1149+
}
1150+
11141151
// CHECK-LABEL: @experimental_constrained_sitofp
11151152
llvm.func @experimental_constrained_sitofp(%s: i32, %v: vector<4 x i32>) {
11161153
// CHECK: call float @llvm.experimental.constrained.sitofp.f32.i32(
@@ -1195,6 +1232,14 @@ llvm.func @experimental_constrained_fpext(%s: f32, %v: vector<4xf32>) {
11951232
// CHECK-DAG: declare i1 @llvm.is.fpclass.f32(float, i32 immarg)
11961233
// CHECK-DAG: declare float @llvm.exp.f32(float)
11971234
// CHECK-DAG: declare <8 x float> @llvm.exp.v8f32(<8 x float>) #0
1235+
// CHECK-DAG: declare float @llvm.exp2.f32(float)
1236+
// CHECK-DAG: declare <8 x float> @llvm.exp2.v8f32(<8 x float>)
1237+
// CHECK-DAG: declare float @llvm.exp10.f32(float)
1238+
// CHECK-DAG: declare <8 x float> @llvm.exp10.v8f32(<8 x float>)
1239+
// CHECK-DAG: declare float @llvm.ldexp.f32.i32(float, i32)
1240+
// CHECK-DAG: declare <8 x float> @llvm.ldexp.v8f32.i32(<8 x float>, i32)
1241+
// CHECK-DAG: declare { float, i32 } @llvm.frexp.f32.i32(float)
1242+
// CHECK-DAG: declare { <8 x float>, i32 } @llvm.frexp.v8f32.i32(<8 x float>)
11981243
// CHECK-DAG: declare float @llvm.log.f32(float)
11991244
// CHECK-DAG: declare <8 x float> @llvm.log.v8f32(<8 x float>) #0
12001245
// CHECK-DAG: declare float @llvm.log10.f32(float)
@@ -1356,6 +1401,8 @@ llvm.func @experimental_constrained_fpext(%s: f32, %v: vector<4xf32>) {
13561401
// CHECK-DAG: declare ptr addrspace(1) @llvm.stacksave.p1()
13571402
// CHECK-DAG: declare void @llvm.stackrestore.p0(ptr)
13581403
// CHECK-DAG: declare void @llvm.stackrestore.p1(ptr addrspace(1))
1404+
// CHECK-DAG: declare float @llvm.experimental.constrained.uitofp.f32.i32(i32, metadata, metadata)
1405+
// CHECK-DAG: declare <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)
13591406
// CHECK-DAG: declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)
13601407
// CHECK-DAG: declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)
13611408
// CHECK-DAG: declare float @llvm.experimental.constrained.fptrunc.f32.f64(double, metadata, metadata)

0 commit comments

Comments
 (0)