@@ -58,6 +58,15 @@ llvm.func @ldexp_test(%arg0: f32, %arg1: vector<8xf32>, %arg2: i32) {
58
58
llvm.return
59
59
}
60
60
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
+
61
70
// CHECK-LABEL: @log_test
62
71
llvm.func @log_test (%arg0: f32 , %arg1: vector <8 xf32 >) {
63
72
// CHECK: call float @llvm.log.f32
@@ -1104,13 +1113,41 @@ llvm.func @ptrmask(%p: !llvm.ptr, %mask: i64) -> !llvm.ptr {
1104
1113
llvm.return %0 : !llvm.ptr
1105
1114
}
1106
1115
1107
- // CHECK-LABEL: @vector_ptrmask
1108
1116
llvm.func @vector_ptrmask (%p: vector <8 x !llvm.ptr >, %mask: vector <8 x i64 >) -> vector <8 x !llvm.ptr > {
1109
1117
// CHECK: call <8 x ptr> @llvm.ptrmask.v8p0.v8i64
1110
1118
%0 = llvm.intr.ptrmask %p , %mask : (vector <8 x !llvm.ptr >, vector <8 x i64 >) -> vector <8 x !llvm.ptr >
1111
1119
llvm.return %0 : vector <8 x !llvm.ptr >
1112
1120
}
1113
1121
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
+
1114
1151
// CHECK-LABEL: @experimental_constrained_sitofp
1115
1152
llvm.func @experimental_constrained_sitofp (%s: i32 , %v: vector <4 x i32 >) {
1116
1153
// CHECK: call float @llvm.experimental.constrained.sitofp.f32.i32(
@@ -1195,6 +1232,14 @@ llvm.func @experimental_constrained_fpext(%s: f32, %v: vector<4xf32>) {
1195
1232
// CHECK-DAG: declare i1 @llvm.is.fpclass.f32(float, i32 immarg)
1196
1233
// CHECK-DAG: declare float @llvm.exp.f32(float)
1197
1234
// 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>)
1198
1243
// CHECK-DAG: declare float @llvm.log.f32(float)
1199
1244
// CHECK-DAG: declare <8 x float> @llvm.log.v8f32(<8 x float>) #0
1200
1245
// CHECK-DAG: declare float @llvm.log10.f32(float)
@@ -1356,6 +1401,8 @@ llvm.func @experimental_constrained_fpext(%s: f32, %v: vector<4xf32>) {
1356
1401
// CHECK-DAG: declare ptr addrspace(1) @llvm.stacksave.p1()
1357
1402
// CHECK-DAG: declare void @llvm.stackrestore.p0(ptr)
1358
1403
// 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)
1359
1406
// CHECK-DAG: declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)
1360
1407
// CHECK-DAG: declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)
1361
1408
// CHECK-DAG: declare float @llvm.experimental.constrained.fptrunc.f32.f64(double, metadata, metadata)
0 commit comments