+2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/rs6000.md (ieee_128bit_vsx_neg<mode>2): Make this a
+ parameterized name.
+ (neg<mode>2): Use that name. Simplify.
+
2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (abs<mode>2_hw): Make this a parameterized
if (TARGET_FLOAT128_HW)
emit_insn (gen_neg2_hw (<MODE>mode, operands[0], operands[1]));
else if (TARGET_FLOAT128_TYPE)
- {
- if (<MODE>mode == TFmode)
- emit_insn (gen_ieee_128bit_vsx_negtf2 (operands[0], operands[1]));
- else if (<MODE>mode == KFmode)
- emit_insn (gen_ieee_128bit_vsx_negkf2 (operands[0], operands[1]));
- else
- gcc_unreachable ();
- }
+ emit_insn (gen_ieee_128bit_vsx_neg2 (<MODE>mode,
+ operands[0], operands[1]));
else
{
rtx libfunc = optab_libfunc (neg_optab, <MODE>mode);
;; twiddle the sign bit. Later GCSE passes can then combine multiple uses of
;; neg/abs to create the constant just once.
-(define_insn_and_split "ieee_128bit_vsx_neg<mode>2"
+(define_insn_and_split "@ieee_128bit_vsx_neg<mode>2"
[(set (match_operand:IEEE128 0 "register_operand" "=wa")
(neg:IEEE128 (match_operand:IEEE128 1 "register_operand" "wa")))
(clobber (match_scratch:V16QI 2 "=v"))]