diff options
| author | Tomasz Krupa <tomasz.krupa@intel.com> | 2018-06-18 17:57:05 +0000 |
|---|---|---|
| committer | Tomasz Krupa <tomasz.krupa@intel.com> | 2018-06-18 17:57:05 +0000 |
| commit | 83ba6fa98dbace52d54fc6ffcf8162f3b477d6e0 (patch) | |
| tree | 6d027bec7ae6f4006ebc25231dcef7a856dbcca3 /clang/lib/CodeGen | |
| parent | 546017322f2b21573cad3412e52f1d0a49af714a (diff) | |
| download | bcm5719-llvm-83ba6fa98dbace52d54fc6ffcf8162f3b477d6e0.tar.gz bcm5719-llvm-83ba6fa98dbace52d54fc6ffcf8162f3b477d6e0.zip | |
Fix a bug introduced by rL334850
Summary: All *_sqrt_round_s[s|d] intrinsics should execute a square root on
zeroth element from B (Ops[1]) and insert in to A (Ops[0]), not the other way around.
Reviewers: itaraban, craig.topper
Reviewed By: craig.topper
Subscribers: craig.topper, cfe-commits
Differential Revision: https://reviews.llvm.org/D48288
llvm-svn: 334964
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 7b0ea22f94e..739f2341d9e 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -9907,7 +9907,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, Intrinsic::x86_avx512_mask_sqrt_ss; return Builder.CreateCall(CGM.getIntrinsic(IID), Ops); } - Value *A = Builder.CreateExtractElement(Ops[0], (uint64_t)0); + Value *A = Builder.CreateExtractElement(Ops[1], (uint64_t)0); Function *F = CGM.getIntrinsic(Intrinsic::sqrt, A->getType()); Value *Src = Builder.CreateExtractElement(Ops[2], (uint64_t)0); int MaskSize = Ops[3]->getType()->getScalarSizeInBits(); @@ -9915,7 +9915,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, Value *Mask = Builder.CreateBitCast(Ops[3], MaskTy); Mask = Builder.CreateExtractElement(Mask, (uint64_t)0); A = Builder.CreateSelect(Mask, Builder.CreateCall(F, {A}), Src); - return Builder.CreateInsertElement(Ops[1], A, (uint64_t)0); + return Builder.CreateInsertElement(Ops[0], A, (uint64_t)0); } case X86::BI__builtin_ia32_sqrtpd256: case X86::BI__builtin_ia32_sqrtpd: |

