Add support in SplitVectorOp for remainder operators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44233 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2007-11-19 15:15:03 +00:00
parent f1c922181b
commit 089617d9e3
2 changed files with 19 additions and 1 deletions

View File

@ -6341,7 +6341,10 @@ void SelectionDAGLegalize::SplitVectorOp(SDOperand Op, SDOperand &Lo,
case ISD::FPOW:
case ISD::AND:
case ISD::OR:
case ISD::XOR: {
case ISD::XOR:
case ISD::UREM:
case ISD::SREM:
case ISD::FREM: {
SDOperand LL, LH, RL, RH;
SplitVectorOp(Node->getOperand(0), LL, LH);
SplitVectorOp(Node->getOperand(1), RL, RH);

View File

@ -0,0 +1,15 @@
; RUN: llvm-as < %s | llc -march=x86-64 | grep div | count 16
; RUN: llvm-as < %s | llc -march=x86-64 | grep fmodf | count 8
define <8 x i32> @foo(<8 x i32> %t, <8 x i32> %u) {
%m = srem <8 x i32> %t, %u
ret <8 x i32> %m
}
define <8 x i32> @bar(<8 x i32> %t, <8 x i32> %u) {
%m = urem <8 x i32> %t, %u
ret <8 x i32> %m
}
define <8 x float> @qux(<8 x float> %t, <8 x float> %u) {
%m = frem <8 x float> %t, %u
ret <8 x float> %m
}