summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGBuiltin.cpp
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2016-06-16 18:45:01 +0000
committerSanjay Patel <spatel@rotateright.com>2016-06-16 18:45:01 +0000
commitdbd68dd09de779f07bda4a5989fb6d7392b096fe (patch)
tree4089bc24cb7f6c9c699947f0441a6c2c7d6354db /clang/lib/CodeGen/CGBuiltin.cpp
parent0e9afea3c83c885fa7e149342fc3e3337af8bc22 (diff)
downloadbcm5719-llvm-dbd68dd09de779f07bda4a5989fb6d7392b096fe.tar.gz
bcm5719-llvm-dbd68dd09de779f07bda4a5989fb6d7392b096fe.zip
[x86] generate IR for AVX2 integer min/max builtins
Sibling patch to r272932: http://reviews.llvm.org/rL272932 llvm-svn: 272933
Diffstat (limited to 'clang/lib/CodeGen/CGBuiltin.cpp')
-rw-r--r--clang/lib/CodeGen/CGBuiltin.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index 8b8996bde95..4cc0560de3f 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -6826,28 +6826,40 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
case X86::BI__builtin_ia32_pcmpgtq512_mask:
return EmitX86MaskedCompare(*this, ICmpInst::ICMP_SGT, Ops);
- // TODO: Handle 64/256/512-bit vector widths of min/max.
+ // TODO: Handle 64/512-bit vector widths of min/max.
case X86::BI__builtin_ia32_pmaxsb128:
case X86::BI__builtin_ia32_pmaxsw128:
- case X86::BI__builtin_ia32_pmaxsd128: {
+ case X86::BI__builtin_ia32_pmaxsd128:
+ case X86::BI__builtin_ia32_pmaxsb256:
+ case X86::BI__builtin_ia32_pmaxsw256:
+ case X86::BI__builtin_ia32_pmaxsd256: {
Value *Cmp = Builder.CreateICmp(ICmpInst::ICMP_SGT, Ops[0], Ops[1]);
return Builder.CreateSelect(Cmp, Ops[0], Ops[1]);
}
case X86::BI__builtin_ia32_pmaxub128:
case X86::BI__builtin_ia32_pmaxuw128:
- case X86::BI__builtin_ia32_pmaxud128: {
+ case X86::BI__builtin_ia32_pmaxud128:
+ case X86::BI__builtin_ia32_pmaxub256:
+ case X86::BI__builtin_ia32_pmaxuw256:
+ case X86::BI__builtin_ia32_pmaxud256: {
Value *Cmp = Builder.CreateICmp(ICmpInst::ICMP_UGT, Ops[0], Ops[1]);
return Builder.CreateSelect(Cmp, Ops[0], Ops[1]);
}
case X86::BI__builtin_ia32_pminsb128:
case X86::BI__builtin_ia32_pminsw128:
- case X86::BI__builtin_ia32_pminsd128: {
+ case X86::BI__builtin_ia32_pminsd128:
+ case X86::BI__builtin_ia32_pminsb256:
+ case X86::BI__builtin_ia32_pminsw256:
+ case X86::BI__builtin_ia32_pminsd256: {
Value *Cmp = Builder.CreateICmp(ICmpInst::ICMP_SLT, Ops[0], Ops[1]);
return Builder.CreateSelect(Cmp, Ops[0], Ops[1]);
}
case X86::BI__builtin_ia32_pminub128:
case X86::BI__builtin_ia32_pminuw128:
- case X86::BI__builtin_ia32_pminud128: {
+ case X86::BI__builtin_ia32_pminud128:
+ case X86::BI__builtin_ia32_pminub256:
+ case X86::BI__builtin_ia32_pminuw256:
+ case X86::BI__builtin_ia32_pminud256: {
Value *Cmp = Builder.CreateICmp(ICmpInst::ICMP_ULT, Ops[0], Ops[1]);
return Builder.CreateSelect(Cmp, Ops[0], Ops[1]);
}
OpenPOWER on IntegriCloud