diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2022-04-11 15:43:38 +0000 |
---|---|---|
committer | Segher Boessenkool <segher@kernel.crashing.org> | 2022-04-11 21:00:25 +0000 |
commit | 0508f0b810985f4a8543ce44701ec7330ef29796 (patch) | |
tree | 527a3511609ec11eb0db9cbd51100722304dcd82 | |
parent | 1774ab84863202f5db694914b67e3aef8c6dd807 (diff) | |
download | gcc-0508f0b810985f4a8543ce44701ec7330ef29796.zip gcc-0508f0b810985f4a8543ce44701ec7330ef29796.tar.gz gcc-0508f0b810985f4a8543ce44701ec7330ef29796.tar.bz2 |
rs6000: Fix unpack for no-direct-move (PR103623)
The _dm alternative works fine for soft-float, but the _nodm variant
pattern is missing that alternative. So, let's add that.
There probably should be an r,r,i alternative as well (or we can make it
rm,r,i), but that is for later.
2022-04-11 Segher Boessenkool <segher@kernel.crashing.org>
PR target/105213
PR target/103623
* config/rs6000/rs6000.md (unpack<mode>_nodm): Add m,r,i alternative.
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index fdfbc65..f05b835 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -14580,10 +14580,10 @@ [(set_attr "type" "fp,fpstore,mtvsr,mfvsr,store")]) (define_insn_and_split "unpack<mode>_nodm" - [(set (match_operand:<FP128_64> 0 "nonimmediate_operand" "=d,m") + [(set (match_operand:<FP128_64> 0 "nonimmediate_operand" "=d,m,m") (unspec:<FP128_64> - [(match_operand:FMOVE128 1 "register_operand" "d,d") - (match_operand:QI 2 "const_0_to_1_operand" "i,i")] + [(match_operand:FMOVE128 1 "register_operand" "d,d,r") + (match_operand:QI 2 "const_0_to_1_operand" "i,i,i")] UNSPEC_UNPACK_128BIT))] "(!TARGET_POWERPC64 || !TARGET_DIRECT_MOVE) && FLOAT128_2REG_P (<MODE>mode)" "#" @@ -14600,7 +14600,7 @@ operands[3] = gen_rtx_REG (<FP128_64>mode, fp_regno); } - [(set_attr "type" "fp,fpstore")]) + [(set_attr "type" "fp,fpstore,store")]) (define_insn_and_split "pack<mode>" [(set (match_operand:FMOVE128 0 "register_operand" "=&d") |