diff --git a/lib/Target/IA64/IA64InstrInfo.td b/lib/Target/IA64/IA64InstrInfo.td index 27888185d66..f18b451b7f3 100644 --- a/lib/Target/IA64/IA64InstrInfo.td +++ b/lib/Target/IA64/IA64InstrInfo.td @@ -429,10 +429,10 @@ def SELECTINT : Pat<(select PR:$which, GR:$src1, GR:$src2), def SELECTFP : Pat<(select PR:$which, FP:$src1, FP:$src2), (CFMOV (FMOV FP:$src2), FP:$src1, PR:$which)>; // note order! // TODO: can do this faster, w/o using any integer regs (see pattern isel) -// FIXME: this makes tblgen cough and splutter: -// Assertion && "Unknown node in result pattern!"' -//def SELECTBOOL : Pat<(select PR:$which, PR:$src1, PR:$src2), // note order! -// (trunc (CMOV (MOV (zext PR:$src2)), (zext PR:$src1), PR:$which))>; +def SELECTBOOL : Pat<(select PR:$which, PR:$src1, PR:$src2), // note order! + (CMPNE (CMOV + (MOV (TPCADDIMM22 (ADDS r0, 0), 1, PR:$src2)), + (TPCADDIMM22 (ADDS r0, 0), 1, PR:$src1), PR:$which), r0)>; // load constants of various sizes // FIXME: prettyprint -ve constants def : Pat<(i64 immSExt14:$imm), (ADDS r0, immSExt14:$imm)>;