@@ -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 <8 xf32 >) {
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 <8 xf32 >) -> !llvm.struct <(vector <8 xf32 >, i32 )>
67+ llvm.return
68+ }
69+
6170// CHECK-LABEL: @log_test
6271llvm.func @log_test (%arg0: f32 , %arg1: vector <8 xf32 >) {
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
11081116llvm.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
11151152llvm.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