diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-02-08 20:16:17 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-02-08 20:16:17 +0000 |
| commit | c0b2e982d9320e7ed015c2199ee3fc14abf3e47c (patch) | |
| tree | 20b7aff61e1aa512a9c226859524001741969cc8 /clang/lib/CodeGen | |
| parent | dccf72b583b0135ded4d00ffafc703187eaf5855 (diff) | |
| download | bcm5719-llvm-c0b2e982d9320e7ed015c2199ee3fc14abf3e47c.tar.gz bcm5719-llvm-c0b2e982d9320e7ed015c2199ee3fc14abf3e47c.zip | |
[X86] Replace kortest intrinsics with native IR.
llvm-svn: 324647
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index b4ae779bf51..312714c5072 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -8710,6 +8710,18 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, return EmitX86MaskedCompare(*this, CC, false, Ops); } + case X86::BI__builtin_ia32_kortestchi: + case X86::BI__builtin_ia32_kortestzhi: { + Value *Or = EmitX86MaskLogic(*this, Instruction::Or, 16, Ops); + Value *C; + if (BuiltinID == X86::BI__builtin_ia32_kortestchi) + C = llvm::Constant::getAllOnesValue(Builder.getInt16Ty()); + else + C = llvm::Constant::getNullValue(Builder.getInt16Ty()); + Value *Cmp = Builder.CreateICmpEQ(Or, C); + return Builder.CreateZExt(Cmp, ConvertType(E->getType())); + } + case X86::BI__builtin_ia32_kandhi: return EmitX86MaskLogic(*this, Instruction::And, 16, Ops); case X86::BI__builtin_ia32_kandnhi: |

