aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2022-04-11 15:43:38 +0000
committerSegher Boessenkool <segher@kernel.crashing.org>2022-04-11 21:00:25 +0000
commit0508f0b810985f4a8543ce44701ec7330ef29796 (patch)
tree527a3511609ec11eb0db9cbd51100722304dcd82
parent1774ab84863202f5db694914b67e3aef8c6dd807 (diff)
downloadgcc-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.md8
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")