aboutsummaryrefslogtreecommitdiff
path: root/gcc
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 /gcc
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.
Diffstat (limited to 'gcc')
-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")