The patterns for altivec_vpku<VI_char>um take care of the order of
operands for the vpkuwum instruction, and therefore it is not needed in
the define_expand pattern "convert_4f32_8f16".
2025-11-18 Avinash Jayakar <avinashd@linux.ibm.com>
gcc/ChangeLog:
PR target/119130
* config/rs6000/altivec.md (convert_4f32_8f16): Use same operand
order for both endian format.
gcc/testsuite/ChangeLog:
PR target/119130
* gcc.target/powerpc/builtins-1-p9-runnable.c: Use same expected
results for both endian format.
emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1]));
emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2]));
- if (!BYTES_BIG_ENDIAN)
- emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
- else
- emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_lo, rtx_tmp_hi));
+ emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
DONE;
})
vfb = (vector float){10.0, -2.0, 70.0, 999.0 };
/* Expected results. */
-#ifdef __BIG_ENDIAN__
- vexpected = (vector unsigned short) { 0x4900, 0xc000, 0x5460, 0x63ce,
- 0x3666, 0x3e66, 0x4d00, 0x563e };
-#else
vexpected = (vector unsigned short) { 0x3666, 0x3e66, 0x4d00, 0x563e,
0x4900, 0xc000, 0x5460, 0x63ce };
-#endif
/*
vresult = vec_pack_to_short_fp32 (vfa, vfb);