@@ -1102,6 +1102,35 @@ llvm.func @vector_ptrmask(%p: !llvm.vec<8 x ptr>, %mask: vector<8 x i64>) -> !ll
1102
1102
llvm.return %0 : !llvm.vec <8 x ptr >
1103
1103
}
1104
1104
1105
+ // CHECK-LABEL: @experimental_constrained_sitofp
1106
+ llvm.func @experimental_constrained_sitofp (%s: i32 , %v: vector <4 x i32 >) {
1107
+ // CHECK: call float @llvm.experimental.constrained.sitofp.f32.i32(
1108
+ // CHECK: metadata !"round.towardzero"
1109
+ // CHECK: metadata !"fpexcept.ignore"
1110
+ %0 = llvm.intr.experimental.constrained.sitofp %s towardzero ignore : i32 to f32
1111
+ // CHECK: call float @llvm.experimental.constrained.sitofp.f32.i32(
1112
+ // CHECK: metadata !"round.tonearest"
1113
+ // CHECK: metadata !"fpexcept.maytrap"
1114
+ %1 = llvm.intr.experimental.constrained.sitofp %s tonearest maytrap : i32 to f32
1115
+ // CHECK: call float @llvm.experimental.constrained.sitofp.f32.i32(
1116
+ // CHECK: metadata !"round.upward"
1117
+ // CHECK: metadata !"fpexcept.strict"
1118
+ %2 = llvm.intr.experimental.constrained.sitofp %s upward strict : i32 to f32
1119
+ // CHECK: call float @llvm.experimental.constrained.sitofp.f32.i32(
1120
+ // CHECK: metadata !"round.downward"
1121
+ // CHECK: metadata !"fpexcept.ignore"
1122
+ %3 = llvm.intr.experimental.constrained.sitofp %s downward ignore : i32 to f32
1123
+ // CHECK: call float @llvm.experimental.constrained.sitofp.f32.i32(
1124
+ // CHECK: metadata !"round.tonearestaway"
1125
+ // CHECK: metadata !"fpexcept.ignore"
1126
+ %4 = llvm.intr.experimental.constrained.sitofp %s tonearestaway ignore : i32 to f32
1127
+ // CHECK: call <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(
1128
+ // CHECK: metadata !"round.upward"
1129
+ // CHECK: metadata !"fpexcept.strict"
1130
+ %5 = llvm.intr.experimental.constrained.sitofp %v upward strict : vector <4 x i32 > to vector <4 x f32 >
1131
+ llvm.return
1132
+ }
1133
+
1105
1134
// CHECK-LABEL: @experimental_constrained_fptrunc
1106
1135
llvm.func @experimental_constrained_fptrunc (%s: f64 , %v: vector <4 xf32 >) {
1107
1136
// CHECK: call float @llvm.experimental.constrained.fptrunc.f32.f64(
@@ -1318,5 +1347,9 @@ llvm.func @experimental_constrained_fpext(%s: f32, %v: vector<4xf32>) {
1318
1347
// CHECK-DAG: declare ptr addrspace(1) @llvm.stacksave.p1()
1319
1348
// CHECK-DAG: declare void @llvm.stackrestore.p0(ptr)
1320
1349
// CHECK-DAG: declare void @llvm.stackrestore.p1(ptr addrspace(1))
1350
+ // CHECK-DAG: declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)
1351
+ // CHECK-DAG: declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)
1321
1352
// CHECK-DAG: declare float @llvm.experimental.constrained.fptrunc.f32.f64(double, metadata, metadata)
1322
1353
// CHECK-DAG: declare <4 x half> @llvm.experimental.constrained.fptrunc.v4f16.v4f32(<4 x float>, metadata, metadata)
1354
+ // CHECK-DAG: declare double @llvm.experimental.constrained.fpext.f64.f32(float, metadata)
1355
+ // CHECK-DAG: declare <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(<4 x float>, metadata)
0 commit comments