I've managed to get an INCORRECT workaround in place by editing:
Around, line 570, add the following:
bld_base->op_actions[TGSI_OPCODE_F2I].emit = lp_build_tgsi_intrinsic;
bld_base->op_actions[TGSI_OPCODE_F2I].intr_name = "llvm.AMDIL.f32.i32.flr.";
As I said, this is an incorrect solution. This uses the floor rounding method combined with the float -> int conversion, whereas GLSL should truncate/round-to-zero. There is an FTOI instruction defined in the AMD IL, but I haven't figured out what is needed to output an instruction instead of an intrinsic, and more importantly, where the rest of the conversions are stored. Unfortunately, I won't be able to continue looking at this until after work today.
Even though the solution is incorrect, it increases my piglit test passes from 5700 to ~7400 (of 8000+ total).