diff options
| author | Robert Khasanov <rob.khasanov@gmail.com> | 2014-08-21 09:43:43 +0000 |
|---|---|---|
| committer | Robert Khasanov <rob.khasanov@gmail.com> | 2014-08-21 09:43:43 +0000 |
| commit | 46409eae8eaff3456bc1ed06b5ee2adb2c2ed3f6 (patch) | |
| tree | c5b13907929c1ab9e84ebfd42d7aa6cd3f06d657 /llvm/lib | |
| parent | 86ca6aaf400aa41b4a3c8f8fd18cf4669121a972 (diff) | |
| download | bcm5719-llvm-46409eae8eaff3456bc1ed06b5ee2adb2c2ed3f6.tar.gz bcm5719-llvm-46409eae8eaff3456bc1ed06b5ee2adb2c2ed3f6.zip | |
[x86] Added _addcarry_ and _subborrow_ intrinsics
llvm-svn: 216164
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 81949942ddc..b2f2562f25a 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -15455,6 +15455,14 @@ static void InitIntinsicsMap() { IntrinsicData(ADX, X86ISD::ADC, 0))); IntrMap.insert(std::make_pair(Intrinsic::x86_addcarryx_u64, IntrinsicData(ADX, X86ISD::ADC, 0))); + IntrMap.insert(std::make_pair(Intrinsic::x86_addcarry_u32, + IntrinsicData(ADX, X86ISD::ADC, 0))); + IntrMap.insert(std::make_pair(Intrinsic::x86_addcarry_u64, + IntrinsicData(ADX, X86ISD::ADC, 0))); + IntrMap.insert(std::make_pair(Intrinsic::x86_subborrow_u32, + IntrinsicData(ADX, X86ISD::SBB, 0))); + IntrMap.insert(std::make_pair(Intrinsic::x86_subborrow_u64, + IntrinsicData(ADX, X86ISD::SBB, 0))); Initialized = true; } @@ -15547,7 +15555,7 @@ static SDValue LowerINTRINSIC_W_CHAIN(SDValue Op, const X86Subtarget *Subtarget, return DAG.getNode(ISD::MERGE_VALUES, dl, Op->getVTList(), Ret, SDValue(InTrans.getNode(), 1)); } - // ADC/ADCX + // ADC/ADCX/SBB case ADX: { SmallVector<SDValue, 2> Results; SDVTList CFVTs = DAG.getVTList(Op->getValueType(0), MVT::Other); |

