@@ -1061,37 +1061,25 @@ extern "C" __device__ double test_fmod(double x, double y) {
1061
1061
return fmod(x, y);
1062
1062
}
1063
1063
1064
- // DEFAULT-LABEL: @test_frexpf(
1065
- // DEFAULT-NEXT: entry:
1066
- // DEFAULT-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.amdgcn.frexp.exp.i32.f32(float [[X:%.*]])
1067
- // DEFAULT-NEXT: store i32 [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA12:![0-9]+]]
1068
- // DEFAULT-NEXT: [[TMP1:%.*]] = tail call contract float @llvm.amdgcn.frexp.mant.f32(float [[X]])
1069
- // DEFAULT-NEXT: ret float [[TMP1]]
1070
- //
1071
- // FINITEONLY-LABEL: @test_frexpf(
1072
- // FINITEONLY-NEXT: entry:
1073
- // FINITEONLY-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.amdgcn.frexp.exp.i32.f32(float [[X:%.*]])
1074
- // FINITEONLY-NEXT: store i32 [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA12:![0-9]+]]
1075
- // FINITEONLY-NEXT: [[TMP1:%.*]] = tail call nnan ninf contract float @llvm.amdgcn.frexp.mant.f32(float [[X]])
1076
- // FINITEONLY-NEXT: ret float [[TMP1]]
1064
+ // CHECK-LABEL: @test_frexpf(
1065
+ // CHECK-NEXT: entry:
1066
+ // CHECK-NEXT: [[TMP0:%.*]] = tail call { float, i32 } @llvm.frexp.f32.i32(float [[X:%.*]])
1067
+ // CHECK-NEXT: [[TMP1:%.*]] = extractvalue { float, i32 } [[TMP0]], 1
1068
+ // CHECK-NEXT: store i32 [[TMP1]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA12:![0-9]+]]
1069
+ // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { float, i32 } [[TMP0]], 0
1070
+ // CHECK-NEXT: ret float [[TMP2]]
1077
1071
//
1078
1072
extern "C" __device__ float test_frexpf(float x, int* y) {
1079
1073
return frexpf(x, y);
1080
1074
}
1081
1075
1082
- // DEFAULT-LABEL: @test_frexp(
1083
- // DEFAULT-NEXT: entry:
1084
- // DEFAULT-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.amdgcn.frexp.exp.i32.f64(double [[X:%.*]])
1085
- // DEFAULT-NEXT: store i32 [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA12]]
1086
- // DEFAULT-NEXT: [[TMP1:%.*]] = tail call contract double @llvm.amdgcn.frexp.mant.f64(double [[X]])
1087
- // DEFAULT-NEXT: ret double [[TMP1]]
1088
- //
1089
- // FINITEONLY-LABEL: @test_frexp(
1090
- // FINITEONLY-NEXT: entry:
1091
- // FINITEONLY-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.amdgcn.frexp.exp.i32.f64(double [[X:%.*]])
1092
- // FINITEONLY-NEXT: store i32 [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA12]]
1093
- // FINITEONLY-NEXT: [[TMP1:%.*]] = tail call nnan ninf contract double @llvm.amdgcn.frexp.mant.f64(double [[X]])
1094
- // FINITEONLY-NEXT: ret double [[TMP1]]
1076
+ // CHECK-LABEL: @test_frexp(
1077
+ // CHECK-NEXT: entry:
1078
+ // CHECK-NEXT: [[TMP0:%.*]] = tail call { double, i32 } @llvm.frexp.f64.i32(double [[X:%.*]])
1079
+ // CHECK-NEXT: [[TMP1:%.*]] = extractvalue { double, i32 } [[TMP0]], 1
1080
+ // CHECK-NEXT: store i32 [[TMP1]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA12]]
1081
+ // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { double, i32 } [[TMP0]], 0
1082
+ // CHECK-NEXT: ret double [[TMP2]]
1095
1083
//
1096
1084
extern "C" __device__ double test_frexp(double x, int* y) {
1097
1085
return frexp(x, y);
0 commit comments