mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 23:31:37 +00:00
Merge similar functionality using a nested switch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171229 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6d183e4007
commit
6f57f39e4a
@ -10373,32 +10373,63 @@ static SDValue LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG) {
|
||||
case Intrinsic::x86_avx2_pmaxu_b:
|
||||
case Intrinsic::x86_avx2_pmaxu_w:
|
||||
case Intrinsic::x86_avx2_pmaxu_d:
|
||||
return DAG.getNode(X86ISD::UMAX, dl, Op.getValueType(),
|
||||
Op.getOperand(1), Op.getOperand(2));
|
||||
case Intrinsic::x86_sse2_pminu_b:
|
||||
case Intrinsic::x86_sse41_pminuw:
|
||||
case Intrinsic::x86_sse41_pminud:
|
||||
case Intrinsic::x86_avx2_pminu_b:
|
||||
case Intrinsic::x86_avx2_pminu_w:
|
||||
case Intrinsic::x86_avx2_pminu_d:
|
||||
return DAG.getNode(X86ISD::UMIN, dl, Op.getValueType(),
|
||||
Op.getOperand(1), Op.getOperand(2));
|
||||
case Intrinsic::x86_sse41_pmaxsb:
|
||||
case Intrinsic::x86_sse2_pmaxs_w:
|
||||
case Intrinsic::x86_sse41_pmaxsd:
|
||||
case Intrinsic::x86_avx2_pmaxs_b:
|
||||
case Intrinsic::x86_avx2_pmaxs_w:
|
||||
case Intrinsic::x86_avx2_pmaxs_d:
|
||||
return DAG.getNode(X86ISD::SMAX, dl, Op.getValueType(),
|
||||
Op.getOperand(1), Op.getOperand(2));
|
||||
case Intrinsic::x86_sse41_pminsb:
|
||||
case Intrinsic::x86_sse2_pmins_w:
|
||||
case Intrinsic::x86_sse41_pminsd:
|
||||
case Intrinsic::x86_avx2_pmins_b:
|
||||
case Intrinsic::x86_avx2_pmins_w:
|
||||
case Intrinsic::x86_avx2_pmins_d:
|
||||
return DAG.getNode(X86ISD::SMIN, dl, Op.getValueType(),
|
||||
case Intrinsic::x86_avx2_pmins_d: {
|
||||
unsigned Opcode;
|
||||
switch (IntNo) {
|
||||
default: llvm_unreachable("Impossible intrinsic"); // Can't reach here.
|
||||
case Intrinsic::x86_sse2_pmaxu_b:
|
||||
case Intrinsic::x86_sse41_pmaxuw:
|
||||
case Intrinsic::x86_sse41_pmaxud:
|
||||
case Intrinsic::x86_avx2_pmaxu_b:
|
||||
case Intrinsic::x86_avx2_pmaxu_w:
|
||||
case Intrinsic::x86_avx2_pmaxu_d:
|
||||
Opcode = X86ISD::UMAX;
|
||||
break;
|
||||
case Intrinsic::x86_sse2_pminu_b:
|
||||
case Intrinsic::x86_sse41_pminuw:
|
||||
case Intrinsic::x86_sse41_pminud:
|
||||
case Intrinsic::x86_avx2_pminu_b:
|
||||
case Intrinsic::x86_avx2_pminu_w:
|
||||
case Intrinsic::x86_avx2_pminu_d:
|
||||
Opcode = X86ISD::UMIN;
|
||||
break;
|
||||
case Intrinsic::x86_sse41_pmaxsb:
|
||||
case Intrinsic::x86_sse2_pmaxs_w:
|
||||
case Intrinsic::x86_sse41_pmaxsd:
|
||||
case Intrinsic::x86_avx2_pmaxs_b:
|
||||
case Intrinsic::x86_avx2_pmaxs_w:
|
||||
case Intrinsic::x86_avx2_pmaxs_d:
|
||||
Opcode = X86ISD::SMAX;
|
||||
break;
|
||||
case Intrinsic::x86_sse41_pminsb:
|
||||
case Intrinsic::x86_sse2_pmins_w:
|
||||
case Intrinsic::x86_sse41_pminsd:
|
||||
case Intrinsic::x86_avx2_pmins_b:
|
||||
case Intrinsic::x86_avx2_pmins_w:
|
||||
case Intrinsic::x86_avx2_pmins_d:
|
||||
Opcode = X86ISD::SMIN;
|
||||
break;
|
||||
}
|
||||
return DAG.getNode(Opcode, dl, Op.getValueType(),
|
||||
Op.getOperand(1), Op.getOperand(2));
|
||||
}
|
||||
|
||||
// SSE/SSE2/AVX floating point max/min intrinsics.
|
||||
case Intrinsic::x86_sse_max_ps:
|
||||
|
Loading…
x
Reference in New Issue
Block a user