diff options
| -rw-r--r-- | llvm/include/llvm/Target/TargetLowering.h | 2 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/TargetLoweringBase.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/vec3.ll | 12 |
3 files changed, 3 insertions, 15 deletions
diff --git a/llvm/include/llvm/Target/TargetLowering.h b/llvm/include/llvm/Target/TargetLowering.h index 11efde0b6f3..09ceb247cdf 100644 --- a/llvm/include/llvm/Target/TargetLowering.h +++ b/llvm/include/llvm/Target/TargetLowering.h @@ -592,7 +592,7 @@ public: /// Returns true if the operation can trap for the value type. /// /// VT must be a legal type. By default, we optimistically assume most - /// operations don't trap except for divide and remainder. + /// operations don't trap except for integer divide and remainder. virtual bool canOpTrap(unsigned Op, EVT VT) const; /// Similar to isShuffleMaskLegal. This is used by Targets can use this to diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp index 62a3499a276..85c277a5025 100644 --- a/llvm/lib/CodeGen/TargetLoweringBase.cpp +++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp @@ -955,15 +955,11 @@ EVT TargetLoweringBase::getShiftAmountTy(EVT LHSTy, return getScalarShiftAmountTy(DL, LHSTy); } -/// canOpTrap - Returns true if the operation can trap for the value type. -/// VT must be a legal type. bool TargetLoweringBase::canOpTrap(unsigned Op, EVT VT) const { assert(isTypeLegal(VT)); switch (Op) { default: return false; - case ISD::FDIV: - case ISD::FREM: case ISD::SDIV: case ISD::UDIV: case ISD::SREM: diff --git a/llvm/test/CodeGen/X86/vec3.ll b/llvm/test/CodeGen/X86/vec3.ll index c7b8e54cf7e..8eaf9f4f48e 100644 --- a/llvm/test/CodeGen/X86/vec3.ll +++ b/llvm/test/CodeGen/X86/vec3.ll @@ -19,16 +19,8 @@ define <3 x float> @fadd(<3 x float> %v, float %d) { define <3 x float> @fdiv(<3 x float> %v, float %d) { ; CHECK-LABEL: fdiv: ; CHECK: # BB#0: -; CHECK-NEXT: movaps %xmm1, %xmm2 -; CHECK-NEXT: movaps %xmm0, %xmm3 -; CHECK-NEXT: movaps %xmm1, %xmm4 -; CHECK-NEXT: divss %xmm0, %xmm1 -; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,2,3] -; CHECK-NEXT: divss %xmm0, %xmm2 -; CHECK-NEXT: movhlps {{.*#+}} xmm3 = xmm3[1,1] -; CHECK-NEXT: divss %xmm3, %xmm4 -; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1] -; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] +; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,0,3] +; CHECK-NEXT: divps %xmm0, %xmm1 ; CHECK-NEXT: movaps %xmm1, %xmm0 ; CHECK-NEXT: retq ; |

