Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/lib/Target/SystemZ/SystemZOperators.td
Show First 20 Lines • Show All 640 Lines • ▼ Show 20 Lines | def z_iabs64 : PatFrag<(ops node:$src), | ||||
(sra node:$src, (i32 63)))>; | (sra node:$src, (i32 63)))>; | ||||
def z_inegabs32 : PatFrag<(ops node:$src), (ineg (z_iabs32 node:$src))>; | def z_inegabs32 : PatFrag<(ops node:$src), (ineg (z_iabs32 node:$src))>; | ||||
def z_inegabs64 : PatFrag<(ops node:$src), (ineg (z_iabs64 node:$src))>; | def z_inegabs64 : PatFrag<(ops node:$src), (ineg (z_iabs64 node:$src))>; | ||||
// Integer multiply-and-add | // Integer multiply-and-add | ||||
def z_muladd : PatFrag<(ops node:$src1, node:$src2, node:$src3), | def z_muladd : PatFrag<(ops node:$src1, node:$src2, node:$src3), | ||||
(add (mul node:$src1, node:$src2), node:$src3)>; | (add (mul node:$src1, node:$src2), node:$src3)>; | ||||
// Alternatives to match operations with or without an overflow CC result. | |||||
def z_sadd : PatFrags<(ops node:$src1, node:$src2), | |||||
[(z_saddo node:$src1, node:$src2), | |||||
(add node:$src1, node:$src2)]>; | |||||
def z_uadd : PatFrags<(ops node:$src1, node:$src2), | |||||
[(z_uaddo node:$src1, node:$src2), | |||||
(add node:$src1, node:$src2)]>; | |||||
def z_ssub : PatFrags<(ops node:$src1, node:$src2), | |||||
[(z_ssubo node:$src1, node:$src2), | |||||
(sub node:$src1, node:$src2)]>; | |||||
def z_usub : PatFrags<(ops node:$src1, node:$src2), | |||||
[(z_usubo node:$src1, node:$src2), | |||||
(sub node:$src1, node:$src2)]>; | |||||
// Fused multiply-subtract, using the natural operand order. | // Fused multiply-subtract, using the natural operand order. | ||||
def fms : PatFrag<(ops node:$src1, node:$src2, node:$src3), | def fms : PatFrag<(ops node:$src1, node:$src2, node:$src3), | ||||
(fma node:$src1, node:$src2, (fneg node:$src3))>; | (fma node:$src1, node:$src2, (fneg node:$src3))>; | ||||
// Fused multiply-add and multiply-subtract, but with the order of the | // Fused multiply-add and multiply-subtract, but with the order of the | ||||
// operands matching SystemZ's MA and MS instructions. | // operands matching SystemZ's MA and MS instructions. | ||||
def z_fma : PatFrag<(ops node:$src1, node:$src2, node:$src3), | def z_fma : PatFrag<(ops node:$src1, node:$src2, node:$src3), | ||||
(fma node:$src2, node:$src3, node:$src1)>; | (fma node:$src2, node:$src3, node:$src1)>; | ||||
▲ Show 20 Lines • Show All 148 Lines • Show Last 20 Lines |