Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Side by Side Diff: lib/Target/CBackend/CBackend.cpp

Issue 7792066: [llvm] Conditionally include target intrinsics, based on --enable-target Base URL: https://llvm.org/svn/llvm-project/llvm/trunk/
Patch Set: cleanups Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===-- CBackend.cpp - Library for converting LLVM code to C --------------===// 1 //===-- CBackend.cpp - Library for converting LLVM code to C --------------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This library converts LLVM code to C code, compilable by GCC and other C 10 // This library converts LLVM code to C code, compilable by GCC and other C
(...skipping 2824 matching lines...) Expand 10 before | Expand all | Expand 10 after
2835 case Intrinsic::memory_barrier: 2835 case Intrinsic::memory_barrier:
2836 case Intrinsic::vastart: 2836 case Intrinsic::vastart:
2837 case Intrinsic::vacopy: 2837 case Intrinsic::vacopy:
2838 case Intrinsic::vaend: 2838 case Intrinsic::vaend:
2839 case Intrinsic::returnaddress: 2839 case Intrinsic::returnaddress:
2840 case Intrinsic::frameaddress: 2840 case Intrinsic::frameaddress:
2841 case Intrinsic::setjmp: 2841 case Intrinsic::setjmp:
2842 case Intrinsic::longjmp: 2842 case Intrinsic::longjmp:
2843 case Intrinsic::prefetch: 2843 case Intrinsic::prefetch:
2844 case Intrinsic::powi: 2844 case Intrinsic::powi:
2845 #if defined(TARGET_ENABLED_X86)
2845 case Intrinsic::x86_sse_cmp_ss: 2846 case Intrinsic::x86_sse_cmp_ss:
2846 case Intrinsic::x86_sse_cmp_ps: 2847 case Intrinsic::x86_sse_cmp_ps:
2847 case Intrinsic::x86_sse2_cmp_sd: 2848 case Intrinsic::x86_sse2_cmp_sd:
2848 case Intrinsic::x86_sse2_cmp_pd: 2849 case Intrinsic::x86_sse2_cmp_pd:
2850 #endif // TARGET_ENABLED_X86
2851 #if defined(TARGET_ENABLED_POWERPC)
2849 case Intrinsic::ppc_altivec_lvsl: 2852 case Intrinsic::ppc_altivec_lvsl:
2853 #endif // TARGET_ENABLED_POWERPC
2850 case Intrinsic::uadd_with_overflow: 2854 case Intrinsic::uadd_with_overflow:
2851 case Intrinsic::sadd_with_overflow: 2855 case Intrinsic::sadd_with_overflow:
2852 // We directly implement these intrinsics 2856 // We directly implement these intrinsics
2853 break; 2857 break;
2854 default: 2858 default:
2855 // If this is an intrinsic that directly corresponds to a GCC 2859 // If this is an intrinsic that directly corresponds to a GCC
2856 // builtin, we handle it. 2860 // builtin, we handle it.
2857 const char *BuiltinName = ""; 2861 const char *BuiltinName = "";
2858 #define GET_GCC_BUILTIN_NAME 2862 #define GET_GCC_BUILTIN_NAME
2859 #include "llvm/Intrinsics.gen" 2863 #include "llvm/Intrinsics.gen"
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
3093 Out << ", "; 3097 Out << ", ";
3094 writeOperand(I.getArgOperand(2)); 3098 writeOperand(I.getArgOperand(2));
3095 Out << ")"; 3099 Out << ")";
3096 return true; 3100 return true;
3097 case Intrinsic::stacksave: 3101 case Intrinsic::stacksave:
3098 // Emit this as: Val = 0; *((void**)&Val) = __builtin_stack_save() 3102 // Emit this as: Val = 0; *((void**)&Val) = __builtin_stack_save()
3099 // to work around GCC bugs (see PR1809). 3103 // to work around GCC bugs (see PR1809).
3100 Out << "0; *((void**)&" << GetValueName(&I) 3104 Out << "0; *((void**)&" << GetValueName(&I)
3101 << ") = __builtin_stack_save()"; 3105 << ") = __builtin_stack_save()";
3102 return true; 3106 return true;
3107 #if defined(TARGET_ENABLED_X86)
3103 case Intrinsic::x86_sse_cmp_ss: 3108 case Intrinsic::x86_sse_cmp_ss:
3104 case Intrinsic::x86_sse_cmp_ps: 3109 case Intrinsic::x86_sse_cmp_ps:
3105 case Intrinsic::x86_sse2_cmp_sd: 3110 case Intrinsic::x86_sse2_cmp_sd:
3106 case Intrinsic::x86_sse2_cmp_pd: 3111 case Intrinsic::x86_sse2_cmp_pd:
3107 Out << '('; 3112 Out << '(';
3108 printType(Out, I.getType()); 3113 printType(Out, I.getType());
3109 Out << ')'; 3114 Out << ')';
3110 // Multiple GCC builtins multiplex onto this intrinsic. 3115 // Multiple GCC builtins multiplex onto this intrinsic.
3111 switch (cast<ConstantInt>(I.getArgOperand(2))->getZExtValue()) { 3116 switch (cast<ConstantInt>(I.getArgOperand(2))->getZExtValue()) {
3112 default: llvm_unreachable("Invalid llvm.x86.sse.cmp!"); 3117 default: llvm_unreachable("Invalid llvm.x86.sse.cmp!");
(...skipping 14 matching lines...) Expand all
3127 Out << 's'; 3132 Out << 's';
3128 else 3133 else
3129 Out << 'd'; 3134 Out << 'd';
3130 3135
3131 Out << "("; 3136 Out << "(";
3132 writeOperand(I.getArgOperand(0)); 3137 writeOperand(I.getArgOperand(0));
3133 Out << ", "; 3138 Out << ", ";
3134 writeOperand(I.getArgOperand(1)); 3139 writeOperand(I.getArgOperand(1));
3135 Out << ")"; 3140 Out << ")";
3136 return true; 3141 return true;
3142 #endif // TARGET_ENABLED_X86
3143 #if defined(TARGET_ENABLED_POWERPC)
3137 case Intrinsic::ppc_altivec_lvsl: 3144 case Intrinsic::ppc_altivec_lvsl:
3138 Out << '('; 3145 Out << '(';
3139 printType(Out, I.getType()); 3146 printType(Out, I.getType());
3140 Out << ')'; 3147 Out << ')';
3141 Out << "__builtin_altivec_lvsl(0, (void*)"; 3148 Out << "__builtin_altivec_lvsl(0, (void*)";
3142 writeOperand(I.getArgOperand(0)); 3149 writeOperand(I.getArgOperand(0));
3143 Out << ")"; 3150 Out << ")";
3144 return true; 3151 return true;
3152 #endif // TARGET_ENABLED_POWERPC
3145 case Intrinsic::uadd_with_overflow: 3153 case Intrinsic::uadd_with_overflow:
3146 case Intrinsic::sadd_with_overflow: 3154 case Intrinsic::sadd_with_overflow:
3147 Out << GetValueName(I.getCalledFunction()) << "("; 3155 Out << GetValueName(I.getCalledFunction()) << "(";
3148 writeOperand(I.getArgOperand(0)); 3156 writeOperand(I.getArgOperand(0));
3149 Out << ", "; 3157 Out << ", ";
3150 writeOperand(I.getArgOperand(1)); 3158 writeOperand(I.getArgOperand(1));
3151 Out << ")"; 3159 Out << ")";
3152 return true; 3160 return true;
3153 } 3161 }
3154 } 3162 }
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
3605 bool DisableVerify) { 3613 bool DisableVerify) {
3606 if (FileType != TargetMachine::CGFT_AssemblyFile) return true; 3614 if (FileType != TargetMachine::CGFT_AssemblyFile) return true;
3607 3615
3608 PM.add(createGCLoweringPass()); 3616 PM.add(createGCLoweringPass());
3609 PM.add(createLowerInvokePass()); 3617 PM.add(createLowerInvokePass());
3610 PM.add(createCFGSimplificationPass()); // clean up after lower invoke. 3618 PM.add(createCFGSimplificationPass()); // clean up after lower invoke.
3611 PM.add(new CWriter(o)); 3619 PM.add(new CWriter(o));
3612 PM.add(createGCInfoDeleter()); 3620 PM.add(createGCInfoDeleter());
3613 return false; 3621 return false;
3614 } 3622 }
OLDNEW
« no previous file with comments | « lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp ('k') | lib/Transforms/InstCombine/InstCombineCalls.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698