diff options
-rw-r--r-- | include/clang/AST/X86Builtins.def | 125 | ||||
-rw-r--r-- | lib/CodeGen/CGBuiltin.cpp | 199 |
2 files changed, 0 insertions, 324 deletions
diff --git a/include/clang/AST/X86Builtins.def b/include/clang/AST/X86Builtins.def index 710efa8cee..27ebbbc13a 100644 --- a/include/clang/AST/X86Builtins.def +++ b/include/clang/AST/X86Builtins.def @@ -12,9 +12,6 @@ // //===----------------------------------------------------------------------===// -// FIXME: this needs to be the full list supported by GCC. Right now, I'm just -// adding stuff on demand. - // The format of this database matches clang/AST/Builtins.def. // FIXME: In GCC, these builtins are defined depending on whether support for @@ -54,37 +51,12 @@ BUILTIN(__builtin_ia32_ucomisdle, "iV2dV2d", "") BUILTIN(__builtin_ia32_ucomisdgt, "iV2dV2d", "") BUILTIN(__builtin_ia32_ucomisdge, "iV2dV2d", "") BUILTIN(__builtin_ia32_ucomisdneq, "iV2dV2d", "") -BUILTIN(__builtin_ia32_addps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_subps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_mulps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_divps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_addss, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_subss, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_mulss, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_divss, "V4fV4fV4f", "") BUILTIN(__builtin_ia32_cmpps, "V4fV4fV4fc", "") BUILTIN(__builtin_ia32_cmpss, "V4fV4fV4fc", "") BUILTIN(__builtin_ia32_minps, "V4fV4fV4f", "") BUILTIN(__builtin_ia32_maxps, "V4fV4fV4f", "") BUILTIN(__builtin_ia32_minss, "V4fV4fV4f", "") BUILTIN(__builtin_ia32_maxss, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_andps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_andnps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_orps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_xorps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_movss, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_movhlps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_movlhps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_unpckhps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_unpcklps, "V4fV4fV4f", "") -BUILTIN(__builtin_ia32_paddb, "V8cV8cV8c", "") -BUILTIN(__builtin_ia32_paddw, "V4sV4sV4s", "") -BUILTIN(__builtin_ia32_paddd, "V2iV2iV2i", "") -BUILTIN(__builtin_ia32_paddq, "V1LLiV1LLiV1LLi", "") -BUILTIN(__builtin_ia32_psubb, "V8cV8cV8c", "") -BUILTIN(__builtin_ia32_psubw, "V4sV4sV4s", "") -BUILTIN(__builtin_ia32_psubd, "V2iV2iV2i", "") -BUILTIN(__builtin_ia32_psubq, "V1LLiV1LLiV1LLi", "") BUILTIN(__builtin_ia32_paddsb, "V8cV8cV8c", "") BUILTIN(__builtin_ia32_paddsw, "V4sV4sV4s", "") BUILTIN(__builtin_ia32_psubsb, "V8cV8cV8c", "") @@ -93,13 +65,8 @@ BUILTIN(__builtin_ia32_paddusb, "V8cV8cV8c", "") BUILTIN(__builtin_ia32_paddusw, "V4sV4sV4s", "") BUILTIN(__builtin_ia32_psubusb, "V8cV8cV8c", "") BUILTIN(__builtin_ia32_psubusw, "V4sV4sV4s", "") -BUILTIN(__builtin_ia32_pmullw, "V4sV4sV4s", "") BUILTIN(__builtin_ia32_pmulhw, "V4sV4sV4s", "") BUILTIN(__builtin_ia32_pmulhuw, "V4sV4sV4s", "") -BUILTIN(__builtin_ia32_pand, "V1LLiV1LLiV1LLi", "") -BUILTIN(__builtin_ia32_pandn, "V1LLiV1LLiV1LLi", "") -BUILTIN(__builtin_ia32_por, "V1LLiV1LLiV1LLi", "") -BUILTIN(__builtin_ia32_pxor, "V1LLiV1LLiV1LLi", "") BUILTIN(__builtin_ia32_pavgb, "V8cV8cV8c", "") BUILTIN(__builtin_ia32_pavgw, "V4sV4sV4s", "") BUILTIN(__builtin_ia32_pcmpeqb, "V8cV8cV8c", "") @@ -118,35 +85,12 @@ BUILTIN(__builtin_ia32_punpckhdq, "V2iV2iV2i", "") BUILTIN(__builtin_ia32_punpcklbw, "V8cV8cV8c", "") BUILTIN(__builtin_ia32_punpcklwd, "V4sV4sV4s", "") BUILTIN(__builtin_ia32_punpckldq, "V2iV2iV2i", "") -BUILTIN(__builtin_ia32_addpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_subpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_mulpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_divpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_addsd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_subsd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_mulsd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_divsd, "V2dV2dV2d", "") BUILTIN(__builtin_ia32_cmppd, "V2dV2dV2dc", "") BUILTIN(__builtin_ia32_cmpsd, "V2dV2dV2dc", "") BUILTIN(__builtin_ia32_minpd, "V2dV2dV2d", "") BUILTIN(__builtin_ia32_maxpd, "V2dV2dV2d", "") BUILTIN(__builtin_ia32_minsd, "V2dV2dV2d", "") BUILTIN(__builtin_ia32_maxsd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_andpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_andnpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_orpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_xorpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_movsd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_unpckhpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_unpcklpd, "V2dV2dV2d", "") -BUILTIN(__builtin_ia32_paddb128, "V16cV16cV16c", "") -BUILTIN(__builtin_ia32_paddw128, "V8sV8sV8s", "") -BUILTIN(__builtin_ia32_paddd128, "V4iV4iV4i", "") -BUILTIN(__builtin_ia32_paddq128, "V2LLiV2LLiV2LLi", "") -BUILTIN(__builtin_ia32_psubb128, "V16cV16cV16c", "") -BUILTIN(__builtin_ia32_psubw128, "V8sV8sV8s", "") -BUILTIN(__builtin_ia32_psubd128, "V4iV4iV4i", "") -BUILTIN(__builtin_ia32_psubq128, "V2LLiV2LLiV2LLi", "") BUILTIN(__builtin_ia32_paddsb128, "V16cV16cV16c", "") BUILTIN(__builtin_ia32_paddsw128, "V8sV8sV8s", "") BUILTIN(__builtin_ia32_psubsb128, "V16cV16cV16c", "") @@ -157,10 +101,6 @@ BUILTIN(__builtin_ia32_psubusb128, "V16cV16cV16c", "") BUILTIN(__builtin_ia32_psubusw128, "V8sV8sV8s", "") BUILTIN(__builtin_ia32_pmullw128, "V8sV8sV8s", "") BUILTIN(__builtin_ia32_pmulhw128, "V8sV8sV8s", "") -BUILTIN(__builtin_ia32_pand128, "V2LLiV2LLiV2LLi", "") -BUILTIN(__builtin_ia32_pandn128, "V2LLiV2LLiV2LLi", "") -BUILTIN(__builtin_ia32_por128, "V2LLiV2LLiV2LLi", "") -BUILTIN(__builtin_ia32_pxor128, "V2LLiV2LLiV2LLi", "") BUILTIN(__builtin_ia32_pavgb128, "V16cV16cV16c", "") BUILTIN(__builtin_ia32_pavgw128, "V8sV8sV8s", "") BUILTIN(__builtin_ia32_pcmpeqb128, "V16cV16cV16c", "") @@ -173,14 +113,6 @@ BUILTIN(__builtin_ia32_pmaxub128, "V16cV16cV16c", "") BUILTIN(__builtin_ia32_pmaxsw128, "V8sV8sV8s", "") BUILTIN(__builtin_ia32_pminub128, "V16cV16cV16c", "") BUILTIN(__builtin_ia32_pminsw128, "V8sV8sV8s", "") -BUILTIN(__builtin_ia32_punpckhbw128, "V16cV16cV16c", "") -BUILTIN(__builtin_ia32_punpckhwd128, "V8sV8sV8s", "") -BUILTIN(__builtin_ia32_punpckhdq128, "V4iV4iV4i", "") -BUILTIN(__builtin_ia32_punpckhqdq128, "V2LLiV2LLiV2LLi", "") -BUILTIN(__builtin_ia32_punpcklbw128, "V16cV16cV16c", "") -BUILTIN(__builtin_ia32_punpcklwd128, "V8sV8sV8s", "") -BUILTIN(__builtin_ia32_punpckldq128, "V4iV4iV4i", "") -BUILTIN(__builtin_ia32_punpcklqdq128, "V2LLiV2LLiV2LLi", "") BUILTIN(__builtin_ia32_packsswb128, "V8sV8sV8s", "") BUILTIN(__builtin_ia32_packssdw128, "V4iV4iV4i", "") BUILTIN(__builtin_ia32_packuswb128, "V8sV8sV8s", "") @@ -229,7 +161,6 @@ BUILTIN(__builtin_ia32_psrld, "V2iV2iV1LLi", "") BUILTIN(__builtin_ia32_psrlq, "V1LLiV1LLiV1LLi", "") BUILTIN(__builtin_ia32_psraw, "V4sV4sV1LLi", "") BUILTIN(__builtin_ia32_psrad, "V2iV2iV1LLi", "") -BUILTIN(__builtin_ia32_pshufw, "V4sV4si", "") BUILTIN(__builtin_ia32_pmaddwd, "V2iV4sV4s", "") BUILTIN(__builtin_ia32_packsswb, "V8cV4sV4s", "") BUILTIN(__builtin_ia32_packssdw, "V4sV2iV2i", "") @@ -238,13 +169,9 @@ BUILTIN(__builtin_ia32_ldmxcsr, "vUi", "") BUILTIN(__builtin_ia32_stmxcsr, "Ui", "") BUILTIN(__builtin_ia32_cvtpi2ps, "V4fV4fV2i", "") BUILTIN(__builtin_ia32_cvtps2pi, "V2iV4f", "") -BUILTIN(__builtin_ia32_cvtsi2ss, "V4fV4fi", "") -BUILTIN(__builtin_ia32_cvtsi642ss, "V4fV4fLLi", "") BUILTIN(__builtin_ia32_cvtss2si, "iV4f", "") BUILTIN(__builtin_ia32_cvtss2si64, "LLiV4f", "") BUILTIN(__builtin_ia32_cvttps2pi, "V2iV4f", "") -BUILTIN(__builtin_ia32_cvttss2si, "iV4f", "") -BUILTIN(__builtin_ia32_cvttss2si64, "LLiV4f", "") BUILTIN(__builtin_ia32_maskmovq, "vV8cV8cc*", "") BUILTIN(__builtin_ia32_loadups, "V4ffC*", "") BUILTIN(__builtin_ia32_storeups, "vf*V4f", "") @@ -264,33 +191,6 @@ BUILTIN(__builtin_ia32_rsqrtps, "V4fV4f", "") BUILTIN(__builtin_ia32_rsqrtss, "V4fV4f", "") BUILTIN(__builtin_ia32_sqrtps, "V4fV4f", "") BUILTIN(__builtin_ia32_sqrtss, "V4fV4f", "") -BUILTIN(__builtin_ia32_shufps, "V4fV4fV4fi", "") -BUILTIN(__builtin_ia32_femms, "v", "") -BUILTIN(__builtin_ia32_pavgusb, "V8cV8cV8c", "") -BUILTIN(__builtin_ia32_pf2id, "V2iV2f", "") -BUILTIN(__builtin_ia32_pfacc, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfadd, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfcmpeq, "V2iV2fV2f", "") -BUILTIN(__builtin_ia32_pfcmpge, "V2iV2fV2f", "") -BUILTIN(__builtin_ia32_pfcmpgt, "V2iV2fV2f", "") -BUILTIN(__builtin_ia32_pfmax, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfmin, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfmul, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfrcp, "V2fV2f", "") -BUILTIN(__builtin_ia32_pfrcpit1, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfrcpit2, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfrsqrt, "V2fV2f", "") -BUILTIN(__builtin_ia32_pfrsqit1, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfsub, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfsubr, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pi2fd, "V2fV2i", "") -BUILTIN(__builtin_ia32_pmulhrw, "V4sV4sV4s", "") -BUILTIN(__builtin_ia32_pf2iw, "V2iV2f", "") -BUILTIN(__builtin_ia32_pfnacc, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pfpnacc, "V2fV2fV2f", "") -BUILTIN(__builtin_ia32_pi2fw, "V2fV2i", "") -BUILTIN(__builtin_ia32_pswapdsf, "V2fV2f", "") -BUILTIN(__builtin_ia32_pswapdsi, "V2iV2i", "") BUILTIN(__builtin_ia32_maskmovdqu, "vV16cV16cc*", "") BUILTIN(__builtin_ia32_loadupd, "V2ddC*", "") BUILTIN(__builtin_ia32_storeupd, "vd*V2d", "") @@ -301,13 +201,9 @@ BUILTIN(__builtin_ia32_pmovmskb128, "iV16c", "") BUILTIN(__builtin_ia32_movnti, "vi*i", "") BUILTIN(__builtin_ia32_movntpd, "vd*V2d", "") BUILTIN(__builtin_ia32_movntdq, "vV2LLi*V2LLi", "") -BUILTIN(__builtin_ia32_pshufd, "V4iV4ii", "") -BUILTIN(__builtin_ia32_pshuflw, "V8sV8si", "") -BUILTIN(__builtin_ia32_pshufhw, "V8sV8si", "") BUILTIN(__builtin_ia32_psadbw128, "V2LLiV16cV16c", "") BUILTIN(__builtin_ia32_sqrtpd, "V2dV2d", "") BUILTIN(__builtin_ia32_sqrtsd, "V2dV2d", "") -BUILTIN(__builtin_ia32_shufpd, "V2dV2dV2di", "") BUILTIN(__builtin_ia32_cvtdq2pd, "V2dV4i", "") BUILTIN(__builtin_ia32_cvtdq2ps, "V4fV4i", "") BUILTIN(__builtin_ia32_cvtpd2dq, "V2LLiV2d", "") @@ -317,16 +213,10 @@ BUILTIN(__builtin_ia32_cvttpd2dq, "V4iV2d", "") BUILTIN(__builtin_ia32_cvttpd2pi, "V2iV2d", "") BUILTIN(__builtin_ia32_cvtpi2pd, "V2dV2i", "") BUILTIN(__builtin_ia32_cvtsd2si, "iV2d", "") -BUILTIN(__builtin_ia32_cvttsd2si, "iV2d", "") BUILTIN(__builtin_ia32_cvtsd2si64, "LLiV2d", "") -BUILTIN(__builtin_ia32_cvttsd2si64, "LLiV2d", "") BUILTIN(__builtin_ia32_cvtps2dq, "V4iV4f", "") BUILTIN(__builtin_ia32_cvtps2pd, "V2dV4f", "") BUILTIN(__builtin_ia32_cvttps2dq, "V4iV4f", "") -BUILTIN(__builtin_ia32_cvtsi2sd, "V2dV2di", "") -BUILTIN(__builtin_ia32_cvtsi642sd, "V2dV2dLLi", "") -BUILTIN(__builtin_ia32_cvtsd2ss, "V4fV4fV2d", "") -BUILTIN(__builtin_ia32_cvtss2sd, "V2dV2dV4f", "") BUILTIN(__builtin_ia32_clflush, "vvC*", "") BUILTIN(__builtin_ia32_lfence, "v", "") BUILTIN(__builtin_ia32_mfence, "v", "") @@ -368,21 +258,6 @@ BUILTIN(__builtin_ia32_movsldup, "V4fV4f", "") BUILTIN(__builtin_ia32_lddqu, "V16ccC*", "") BUILTIN(__builtin_ia32_palignr128, "V2LLiV2LLiV2LLii", "") BUILTIN(__builtin_ia32_palignr, "V1LLiV1LLiV1LLis", "") -BUILTIN(__builtin_ia32_vec_init_v2si, "V2iii", "") -BUILTIN(__builtin_ia32_vec_init_v4hi, "V4sssss", "") -BUILTIN(__builtin_ia32_vec_init_v8qi, "V8ccccccccc", "") -BUILTIN(__builtin_ia32_vec_ext_v2df, "dV2di", "") -BUILTIN(__builtin_ia32_vec_ext_v2di, "LLiV2LLii", "") -BUILTIN(__builtin_ia32_vec_ext_v4sf, "fV4fi", "") -BUILTIN(__builtin_ia32_vec_ext_v4si, "iV4ii", "") -BUILTIN(__builtin_ia32_vec_ext_v8hi, "UsV8si", "") -BUILTIN(__builtin_ia32_vec_ext_v4hi, "sV4si", "") -BUILTIN(__builtin_ia32_vec_ext_v2si, "iV2ii", "") -BUILTIN(__builtin_ia32_vec_set_v8hi, "V8sV8ssi", "") -BUILTIN(__builtin_ia32_vec_set_v4hi, "V4sV4ssi", "") -BUILTIN(__builtin_ia32_vec_set_v16qi, "V16cV16cii", "") -BUILTIN(__builtin_ia32_vec_set_v4si, "V4iV4iii", "") -BUILTIN(__builtin_ia32_vec_set_v2di, "V2LLiV2LLiLLii", "") BUILTIN(__builtin_ia32_insertps128, "V4fV4fV4fi", "") BUILTIN(__builtin_ia32_loadlv4si, "V4iV2i*", "") diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index d813bbae7f..8a565985f5 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -625,81 +625,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, switch (BuiltinID) { default: return 0; - case X86::BI__builtin_ia32_mulps: - return Builder.CreateMul(Ops[0], Ops[1], "mulps"); - case X86::BI__builtin_ia32_mulpd: - return Builder.CreateMul(Ops[0], Ops[1], "mulpd"); - case X86::BI__builtin_ia32_pand: - case X86::BI__builtin_ia32_pand128: - return Builder.CreateAnd(Ops[0], Ops[1], "pand"); - case X86::BI__builtin_ia32_por: - case X86::BI__builtin_ia32_por128: - return Builder.CreateOr(Ops[0], Ops[1], "por"); - case X86::BI__builtin_ia32_pxor: - case X86::BI__builtin_ia32_pxor128: - return Builder.CreateXor(Ops[0], Ops[1], "pxor"); - case X86::BI__builtin_ia32_pandn: - case X86::BI__builtin_ia32_pandn128: - Ops[0] = Builder.CreateNot(Ops[0], "tmp"); - return Builder.CreateAnd(Ops[0], Ops[1], "pandn"); - case X86::BI__builtin_ia32_paddb: - case X86::BI__builtin_ia32_paddb128: - case X86::BI__builtin_ia32_paddd: - case X86::BI__builtin_ia32_paddd128: - case X86::BI__builtin_ia32_paddq: - case X86::BI__builtin_ia32_paddq128: - case X86::BI__builtin_ia32_paddw: - case X86::BI__builtin_ia32_paddw128: - case X86::BI__builtin_ia32_addps: - case X86::BI__builtin_ia32_addpd: - return Builder.CreateAdd(Ops[0], Ops[1], "add"); - case X86::BI__builtin_ia32_psubb: - case X86::BI__builtin_ia32_psubb128: - case X86::BI__builtin_ia32_psubd: - case X86::BI__builtin_ia32_psubd128: - case X86::BI__builtin_ia32_psubq: - case X86::BI__builtin_ia32_psubq128: - case X86::BI__builtin_ia32_psubw: - case X86::BI__builtin_ia32_psubw128: - case X86::BI__builtin_ia32_subps: - case X86::BI__builtin_ia32_subpd: - return Builder.CreateSub(Ops[0], Ops[1], "sub"); - case X86::BI__builtin_ia32_divps: - return Builder.CreateFDiv(Ops[0], Ops[1], "divps"); - case X86::BI__builtin_ia32_divpd: - return Builder.CreateFDiv(Ops[0], Ops[1], "divpd"); - case X86::BI__builtin_ia32_pmullw: - case X86::BI__builtin_ia32_pmullw128: - return Builder.CreateMul(Ops[0], Ops[1], "pmul"); - case X86::BI__builtin_ia32_punpckhbw: - return EmitShuffleVector(Ops[0], Ops[1], 4, 12, 5, 13, 6, 14, 7, 15, - "punpckhbw"); - case X86::BI__builtin_ia32_punpckhbw128: - return EmitShuffleVector(Ops[0], Ops[1], 8, 24, 9, 25, 10, 26, 11, 27, - 12, 28, 13, 29, 14, 30, 15, 31, - "punpckhbw"); - case X86::BI__builtin_ia32_punpckhwd: - return EmitShuffleVector(Ops[0], Ops[1], 2, 6, 3, 7, "punpckhwd"); - case X86::BI__builtin_ia32_punpckhwd128: - return EmitShuffleVector(Ops[0], Ops[1], 4, 12, 5, 13, 6, 14, 7, 15, - "punpckhwd"); - case X86::BI__builtin_ia32_punpckhdq: - return EmitShuffleVector(Ops[0], Ops[1], 1, 3, "punpckhdq"); - case X86::BI__builtin_ia32_punpckhdq128: - return EmitShuffleVector(Ops[0], Ops[1], 2, 6, 3, 7, "punpckhdq"); - case X86::BI__builtin_ia32_punpckhqdq128: - return EmitShuffleVector(Ops[0], Ops[1], 1, 3, "punpckhqdq"); - case X86::BI__builtin_ia32_punpcklbw: - return EmitShuffleVector(Ops[0], Ops[1], 0, 8, 1, 9, 2, 10, 3, 11, - "punpcklbw"); - case X86::BI__builtin_ia32_punpcklwd: - return EmitShuffleVector(Ops[0], Ops[1], 0, 4, 1, 5, "punpcklwd"); - case X86::BI__builtin_ia32_punpckldq: - return EmitShuffleVector(Ops[0], Ops[1], 0, 2, "punpckldq"); - case X86::BI__builtin_ia32_punpckldq128: - return EmitShuffleVector(Ops[0], Ops[1], 0, 4, 1, 5, "punpckldq"); - case X86::BI__builtin_ia32_punpcklqdq128: - return EmitShuffleVector(Ops[0], Ops[1], 0, 2, "punpcklqdq"); case X86::BI__builtin_ia32_pslldi128: case X86::BI__builtin_ia32_psllqi128: case X86::BI__builtin_ia32_psllwi128: @@ -807,46 +732,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, llvm::Function *F = CGM.getIntrinsic(ID); return Builder.CreateCall(F, &Ops[0], &Ops[0] + Ops.size(), name); } - case X86::BI__builtin_ia32_pshufw: { - unsigned i = cast<ConstantInt>(Ops[1])->getZExtValue(); - return EmitShuffleVector(Ops[0], Ops[0], - i & 0x3, (i & 0xc) >> 2, - (i & 0x30) >> 4, (i & 0xc0) >> 6, - "pshufw"); - } - case X86::BI__builtin_ia32_pshuflw: { - unsigned i = cast<ConstantInt>(Ops[1])->getZExtValue(); - return EmitShuffleVector(Ops[0], Ops[0], - i & 0x3, (i & 0xc) >> 2, - (i & 0x30) >> 4, (i & 0xc0) >> 6, 4, 5, 6, 7, - "pshuflw"); - } - case X86::BI__builtin_ia32_pshufhw: { - unsigned i = cast<ConstantInt>(Ops[1])->getZExtValue(); - return EmitShuffleVector(Ops[0], Ops[0], 0, 1, 2, 3, - 4 + (i & 0x3), 4 + ((i & 0xc) >> 2), - 4 + ((i & 0x30) >> 4), 4 + ((i & 0xc0) >> 6), - "pshufhw"); - } - case X86::BI__builtin_ia32_pshufd: { - unsigned i = cast<ConstantInt>(Ops[1])->getZExtValue(); - return EmitShuffleVector(Ops[0], Ops[0], - i & 0x3, (i & 0xc) >> 2, - (i & 0x30) >> 4, (i & 0xc0) >> 6, - "pshufd"); - } - case X86::BI__builtin_ia32_vec_init_v4hi: - case X86::BI__builtin_ia32_vec_init_v8qi: - case X86::BI__builtin_ia32_vec_init_v2si: - return EmitVector(&Ops[0], Ops.size()); - case X86::BI__builtin_ia32_vec_ext_v2si: - case X86::BI__builtin_ia32_vec_ext_v2di: - case X86::BI__builtin_ia32_vec_ext_v4sf: - case X86::BI__builtin_ia32_vec_ext_v4si: - case X86::BI__builtin_ia32_vec_ext_v8hi: - case X86::BI__builtin_ia32_vec_ext_v4hi: - case X86::BI__builtin_ia32_vec_ext_v2df: - return Builder.CreateExtractElement(Ops[0], Ops[1], "result"); case X86::BI__builtin_ia32_cmpps: { llvm::Function *F = CGM.getIntrinsic(Intrinsic::x86_sse_cmp_ps); return Builder.CreateCall(F, &Ops[0], &Ops[0] + Ops.size(), "cmpps"); @@ -879,41 +764,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, llvm::Function *F = CGM.getIntrinsic(Intrinsic::x86_sse2_cmp_sd); return Builder.CreateCall(F, &Ops[0], &Ops[0] + Ops.size(), "cmpsd"); } - case X86::BI__builtin_ia32_movss: - return EmitShuffleVector(Ops[0], Ops[1], 4, 1, 2, 3, "movss"); - case X86::BI__builtin_ia32_shufps: { - unsigned i = cast<ConstantInt>(Ops[2])->getZExtValue(); - return EmitShuffleVector(Ops[0], Ops[1], - i & 0x3, (i & 0xc) >> 2, - ((i & 0x30) >> 4) + 4, - ((i & 0xc0) >> 6) + 4, "shufps"); - } - case X86::BI__builtin_ia32_shufpd: { - unsigned i = cast<ConstantInt>(Ops[2])->getZExtValue(); - return EmitShuffleVector(Ops[0], Ops[1], i & 1, - ((i & 2) >> 1)+2, "shufpd"); - } - case X86::BI__builtin_ia32_punpcklbw128: - return EmitShuffleVector(Ops[0], Ops[1], 0, 16, 1, 17, 2, 18, 3, 19, - 4, 20, 5, 21, 6, 22, 7, 23, - "punpcklbw"); - case X86::BI__builtin_ia32_punpcklwd128: - return EmitShuffleVector(Ops[0], Ops[1], 0, 8, 1, 9, 2, 10, 3, 11, - "punpcklwd"); - case X86::BI__builtin_ia32_movlhps: - return EmitShuffleVector(Ops[0], Ops[1], 0, 1, 4, 5, "movlhps"); - case X86::BI__builtin_ia32_movhlps: - return EmitShuffleVector(Ops[0], Ops[1], 6, 7, 2, 3, "movhlps"); - case X86::BI__builtin_ia32_unpckhps: - return EmitShuffleVector(Ops[0], Ops[1], 2, 6, 3, 7, "unpckhps"); - case X86::BI__builtin_ia32_unpcklps: - return EmitShuffleVector(Ops[0], Ops[1], 0, 4, 1, 5, "unpcklps"); - case X86::BI__builtin_ia32_unpckhpd: - return EmitShuffleVector(Ops[0], Ops[1], 1, 3, "unpckhpd"); - case X86::BI__builtin_ia32_unpcklpd: - return EmitShuffleVector(Ops[0], Ops[1], 0, 2, "unpcklpd"); - case X86::BI__builtin_ia32_movsd: - return EmitShuffleVector(Ops[0], Ops[1], 2, 1, "movsd"); case X86::BI__builtin_ia32_loadlps: case X86::BI__builtin_ia32_loadhps: { // FIXME: This should probably be represented as @@ -977,55 +827,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, return Builder.CreateBitCast(Ops[0], llvm::VectorType::get(llvm::Type::Int32Ty, 4)); } - case X86::BI__builtin_ia32_vec_set_v4hi: - case X86::BI__builtin_ia32_vec_set_v8hi: - return Builder.CreateInsertElement(Ops[0], Ops[1], Ops[2], "pinsrw"); - case X86::BI__builtin_ia32_vec_set_v4si: - return Builder.CreateInsertElement(Ops[0], Ops[1], Ops[2], "pinsrd"); - case X86::BI__builtin_ia32_vec_set_v2di: - return Builder.CreateInsertElement(Ops[0], Ops[1], Ops[2], "pinsrq"); - case X86::BI__builtin_ia32_andps: - case X86::BI__builtin_ia32_andpd: - case X86::BI__builtin_ia32_andnps: - case X86::BI__builtin_ia32_andnpd: - case X86::BI__builtin_ia32_orps: - case X86::BI__builtin_ia32_orpd: - case X86::BI__builtin_ia32_xorpd: - case X86::BI__builtin_ia32_xorps: { - const llvm::Type *ITy = llvm::VectorType::get(llvm::Type::Int32Ty, 4); - const llvm::Type *FTy = Ops[0]->getType(); - Ops[0] = Builder.CreateBitCast(Ops[0], ITy, "bitcast"); - Ops[1] = Builder.CreateBitCast(Ops[1], ITy, "bitcast"); - switch (BuiltinID) { - case X86::BI__builtin_ia32_andps: - Ops[0] = Builder.CreateAnd(Ops[0], Ops[1], "andps"); - break; - case X86::BI__builtin_ia32_andpd: - Ops[0] = Builder.CreateAnd(Ops[0], Ops[1], "andpd"); - break; - case X86::BI__builtin_ia32_andnps: - Ops[0] = Builder.CreateNot(Ops[0], "not"); - Ops[0] = Builder.CreateAnd(Ops[0], Ops[1], "andnps"); - break; - case X86::BI__builtin_ia32_andnpd: - Ops[0] = Builder.CreateNot(Ops[0], "not"); - Ops[0] = Builder.CreateAnd(Ops[0], Ops[1], "andnpd"); - break; - case X86::BI__builtin_ia32_orps: - Ops[0] = Builder.CreateOr(Ops[0], Ops[1], "orps"); - break; - case X86::BI__builtin_ia32_orpd: - Ops[0] = Builder.CreateOr(Ops[0], Ops[1], "orpd"); - break; - case X86::BI__builtin_ia32_xorps: - Ops[0] = Builder.CreateXor(Ops[0], Ops[1], "xorps"); - break; - case X86::BI__builtin_ia32_xorpd: - Ops[0] = Builder.CreateXor(Ops[0], Ops[1], "xorpd"); - break; - } - return Builder.CreateBitCast(Ops[0], FTy, "bitcast"); - } } } |