Skip to content

Commit ad0e03f

Browse files
committed
Revert "[FPEnv][X86] Platform-specific builtin constrained FP enablement"
This reverts commit 208470d. Tests fail: error: unable to create target: 'No available targets are compatible with triple "x86_64-apple-darwin"' This happens on clang-hexagon-elf, clang-cmake-armv7-quick, and clang-cmake-armv7-quick bots. If anyone has any suggestions on why then I'm all ears. Differential Revision: https://reviews.llvm.org/D73570 Revert "[FPEnv][X86] Speculative fix for failures introduced by eda495426." This reverts commit 80e17e5. The speculative fix didn't solve the test failures on Hexagon, ARMv6, and MSVC AArch64.
1 parent f5cdfb3 commit ad0e03f

File tree

4 files changed

+9
-547
lines changed

4 files changed

+9
-547
lines changed

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -10094,14 +10094,8 @@ static Value *EmitX86FMAExpr(CodeGenFunction &CGF, ArrayRef<Value *> Ops,
1009410094
Res = CGF.Builder.CreateCall(Intr, {A, B, C, Ops.back() });
1009510095
} else {
1009610096
llvm::Type *Ty = A->getType();
10097-
Function *FMA;
10098-
if (CGF.Builder.getIsFPConstrained()) {
10099-
FMA = CGF.CGM.getIntrinsic(Intrinsic::experimental_constrained_fma, Ty);
10100-
Res = CGF.Builder.CreateConstrainedFPCall(FMA, {A, B, C});
10101-
} else {
10102-
FMA = CGF.CGM.getIntrinsic(Intrinsic::fma, Ty);
10103-
Res = CGF.Builder.CreateCall(FMA, {A, B, C});
10104-
}
10097+
Function *FMA = CGF.CGM.getIntrinsic(Intrinsic::fma, Ty);
10098+
Res = CGF.Builder.CreateCall(FMA, {A, B, C} );
1010510099

1010610100
if (IsAddSub) {
1010710101
// Negate even elts in C using a mask.
@@ -10111,11 +10105,7 @@ static Value *EmitX86FMAExpr(CodeGenFunction &CGF, ArrayRef<Value *> Ops,
1011110105
Indices[i] = i + (i % 2) * NumElts;
1011210106

1011310107
Value *NegC = CGF.Builder.CreateFNeg(C);
10114-
Value *FMSub;
10115-
if (CGF.Builder.getIsFPConstrained())
10116-
FMSub = CGF.Builder.CreateConstrainedFPCall(FMA, {A, B, NegC} );
10117-
else
10118-
FMSub = CGF.Builder.CreateCall(FMA, {A, B, NegC} );
10108+
Value *FMSub = CGF.Builder.CreateCall(FMA, {A, B, NegC} );
1011910109
Res = CGF.Builder.CreateShuffleVector(FMSub, Res, Indices);
1012010110
}
1012110111
}
@@ -10174,10 +10164,6 @@ EmitScalarFMAExpr(CodeGenFunction &CGF, MutableArrayRef<Value *> Ops,
1017410164
Intrinsic::x86_avx512_vfmadd_f64;
1017510165
Res = CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(IID),
1017610166
{Ops[0], Ops[1], Ops[2], Ops[4]});
10177-
} else if (CGF.Builder.getIsFPConstrained()) {
10178-
Function *FMA = CGF.CGM.getIntrinsic(
10179-
Intrinsic::experimental_constrained_fma, Ops[0]->getType());
10180-
Res = CGF.Builder.CreateConstrainedFPCall(FMA, Ops.slice(0, 3));
1018110167
} else {
1018210168
Function *FMA = CGF.CGM.getIntrinsic(Intrinsic::fma, Ops[0]->getType());
1018310169
Res = CGF.Builder.CreateCall(FMA, Ops.slice(0, 3));
@@ -11906,15 +11892,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
1190611892
case X86::BI__builtin_ia32_sqrtss:
1190711893
case X86::BI__builtin_ia32_sqrtsd: {
1190811894
Value *A = Builder.CreateExtractElement(Ops[0], (uint64_t)0);
11909-
Function *F;
11910-
if (Builder.getIsFPConstrained()) {
11911-
F = CGM.getIntrinsic(Intrinsic::experimental_constrained_sqrt,
11912-
A->getType());
11913-
A = Builder.CreateConstrainedFPCall(F, {A});
11914-
} else {
11915-
F = CGM.getIntrinsic(Intrinsic::sqrt, A->getType());
11916-
A = Builder.CreateCall(F, {A});
11917-
}
11895+
Function *F = CGM.getIntrinsic(Intrinsic::sqrt, A->getType());
11896+
A = Builder.CreateCall(F, {A});
1191811897
return Builder.CreateInsertElement(Ops[0], A, (uint64_t)0);
1191911898
}
1192011899
case X86::BI__builtin_ia32_sqrtsd_round_mask:
@@ -11929,15 +11908,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
1192911908
return Builder.CreateCall(CGM.getIntrinsic(IID), Ops);
1193011909
}
1193111910
Value *A = Builder.CreateExtractElement(Ops[1], (uint64_t)0);
11932-
Function *F;
11933-
if (Builder.getIsFPConstrained()) {
11934-
F = CGM.getIntrinsic(Intrinsic::experimental_constrained_sqrt,
11935-
A->getType());
11936-
A = Builder.CreateConstrainedFPCall(F, A);
11937-
} else {
11938-
F = CGM.getIntrinsic(Intrinsic::sqrt, A->getType());
11939-
A = Builder.CreateCall(F, A);
11940-
}
11911+
Function *F = CGM.getIntrinsic(Intrinsic::sqrt, A->getType());
11912+
A = Builder.CreateCall(F, A);
1194111913
Value *Src = Builder.CreateExtractElement(Ops[2], (uint64_t)0);
1194211914
A = EmitX86ScalarSelect(*this, Ops[3], A, Src);
1194311915
return Builder.CreateInsertElement(Ops[0], A, (uint64_t)0);
@@ -11959,14 +11931,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
1195911931
return Builder.CreateCall(CGM.getIntrinsic(IID), Ops);
1196011932
}
1196111933
}
11962-
if (Builder.getIsFPConstrained()) {
11963-
Function *F = CGM.getIntrinsic(Intrinsic::experimental_constrained_sqrt,
11964-
Ops[0]->getType());
11965-
return Builder.CreateConstrainedFPCall(F, Ops[0]);
11966-
} else {
11967-
Function *F = CGM.getIntrinsic(Intrinsic::sqrt, Ops[0]->getType());
11968-
return Builder.CreateCall(F, Ops[0]);
11969-
}
11934+
Function *F = CGM.getIntrinsic(Intrinsic::sqrt, Ops[0]->getType());
11935+
return Builder.CreateCall(F, Ops[0]);
1197011936
}
1197111937
case X86::BI__builtin_ia32_pabsb128:
1197211938
case X86::BI__builtin_ia32_pabsw128:

clang/test/CodeGen/avx512f-builtins-constrained.c

Lines changed: 0 additions & 126 deletions
This file was deleted.

0 commit comments

Comments
 (0)