@@ -1034,6 +1034,19 @@ define void @experimental_constrained_fptrunc(double %s, <4 x double> %v) {
1034
1034
ret void
1035
1035
}
1036
1036
1037
+ ; CHECK-LABEL: experimental_constrained_fpext
1038
+ define void @experimental_constrained_fpext (float %s , <4 x float > %v ) {
1039
+ ; CHECK: llvm.intr.experimental.constrained.fpext %{{.*}} ignore : f32 to f64
1040
+ %1 = call double @llvm.experimental.constrained.fpext.f64.f32 (float %s , metadata !"fpexcept.ignore" )
1041
+ ; CHECK: llvm.intr.experimental.constrained.fpext %{{.*}} maytrap : f32 to f64
1042
+ %2 = call double @llvm.experimental.constrained.fpext.f64.f32 (float %s , metadata !"fpexcept.maytrap" )
1043
+ ; CHECK: llvm.intr.experimental.constrained.fpext %{{.*}} strict : f32 to f64
1044
+ %3 = call double @llvm.experimental.constrained.fpext.f64.f32 (float %s , metadata !"fpexcept.strict" )
1045
+ ; CHECK: llvm.intr.experimental.constrained.fpext %{{.*}} ignore : vector<4xf32> to vector<4xf64>
1046
+ %6 = call <4 x double > @llvm.experimental.constrained.fpext.v4f64.v4f32 (<4 x float > %v , metadata !"fpexcept.ignore" )
1047
+ ret void
1048
+ }
1049
+
1037
1050
declare float @llvm.fmuladd.f32 (float , float , float )
1038
1051
declare <8 x float > @llvm.fmuladd.v8f32 (<8 x float >, <8 x float >, <8 x float >)
1039
1052
declare float @llvm.fma.f32 (float , float , float )
@@ -1278,3 +1291,5 @@ declare <vscale x 4 x float> @llvm.vector.insert.nxv4f32.v4f32(<vscale x 4 x flo
1278
1291
declare <4 x float > @llvm.vector.extract.v4f32.nxv4f32 (<vscale x 4 x float >, i64 )
1279
1292
declare <4 x half > @llvm.experimental.constrained.fptrunc.v4f16.v4f64 (<4 x double >, metadata , metadata )
1280
1293
declare float @llvm.experimental.constrained.fptrunc.f32.f64 (double , metadata , metadata )
1294
+ declare <4 x double > @llvm.experimental.constrained.fpext.v4f64.v4f32 (<4 x float >, metadata )
1295
+ declare double @llvm.experimental.constrained.fpext.f64.f32 (float , metadata )
0 commit comments