+2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/85291
+       * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
+       asked to not generate direct moves.
+       (fix_trunc<mode>si2_stfiwx): Similar.
+       (fix_trunc<mode>si2_internal): Similar.
+
 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/83157
 
        (fix:SI (match_operand:SFDF 1 "gpc_reg_operand")))]
   "TARGET_HARD_FLOAT && <TARGET_FLOAT>"
 {
-  if (!TARGET_P8_VECTOR)
+  if (!(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE))
     {
       rtx src = force_reg (<MODE>mode, operands[1]);
 
   "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT
    && (<MODE>mode != SFmode || TARGET_SINGLE_FLOAT)
    && TARGET_STFIWX && can_create_pseudo_p ()
-   && !TARGET_P8_VECTOR"
+   && !(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE)"
   "#"
   ""
   [(pc)]
        (fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d,<rreg>")))
    (clobber (match_operand:DI 2 "gpc_reg_operand" "=1,d"))
    (clobber (match_operand:DI 3 "offsettable_mem_operand" "=o,o"))]
-  "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && !TARGET_P8_VECTOR"
+  "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT
+   && !(TARGET_P8_VECTOR && TARGET_DIRECT_MOVE)"
   "#"
   ""
   [(pc)]