diff --git a/gcc/config/aarch64/aarch64-sve.md b/gcc/config/aarch64/aarch64-sve.md index a93bc463a90..3dbd65986ec 100644 --- a/gcc/config/aarch64/aarch64-sve.md +++ b/gcc/config/aarch64/aarch64-sve.md @@ -3107,12 +3107,12 @@ [(set (match_operand: 0 "register_operand") (unspec: [(match_operand: 1 "register_operand") - (match_operand:SVE_FULL 2 "register_operand")] + (match_operand:SVE_ALL 2 "register_operand")] LAST))] "TARGET_SVE" {@ [ cons: =0 , 1 , 2 ] - [ ?r , Upl , w ] last\t%0, %1, %2. - [ w , Upl , w ] last\t%0, %1, %2. + [ ?r , Upl , w ] last\t%0, %1, %2. + [ w , Upl , w ] last\t%0, %1, %2. } ) @@ -8899,26 +8899,26 @@ (unspec: [(match_operand: 1 "register_operand") (match_operand: 2 "register_operand") - (match_operand:SVE_FULL 3 "register_operand")] + (match_operand:SVE_ALL 3 "register_operand")] CLAST))] "TARGET_SVE" {@ [ cons: =0 , 1 , 2 , 3 ] - [ ?r , 0 , Upl , w ] clast\t%0, %2, %0, %3. - [ w , 0 , Upl , w ] clast\t%0, %2, %0, %3. + [ ?r , 0 , Upl , w ] clast\t%0, %2, %0, %3. + [ w , 0 , Upl , w ] clast\t%0, %2, %0, %3. } ) (define_insn "@aarch64_fold_extract_vector__" - [(set (match_operand:SVE_FULL 0 "register_operand") - (unspec:SVE_FULL - [(match_operand:SVE_FULL 1 "register_operand") + [(set (match_operand:SVE_ALL 0 "register_operand") + (unspec:SVE_ALL + [(match_operand:SVE_ALL 1 "register_operand") (match_operand: 2 "register_operand") - (match_operand:SVE_FULL 3 "register_operand")] + (match_operand:SVE_ALL 3 "register_operand")] CLAST))] "TARGET_SVE" {@ [ cons: =0 , 1 , 2 , 3 ] - [ w , 0 , Upl , w ] clast\t%0., %2, %0., %3. - [ ?&w , w , Upl , w ] movprfx\t%0, %1\;clast\t%0., %2, %0., %3. + [ w , 0 , Upl , w ] clast\t%0., %2, %0., %3. + [ ?&w , w , Upl , w ] movprfx\t%0, %1\;clast\t%0., %2, %0., %3. } ) diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 5bfd6e7d362..146453b0516 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -2025,8 +2025,12 @@ ;; Like vwcore, but for the container mode rather than the element mode. (define_mode_attr vccore [(VNx16QI "w") (VNx8QI "w") (VNx4QI "w") (VNx2QI "x") (VNx8HI "w") (VNx4HI "w") (VNx2HI "x") + (VNx8HF "w") (VNx4HF "w") (VNx2HF "x") + (VNx8BF "w") (VNx4BF "w") (VNx2BF "x") (VNx4SI "w") (VNx2SI "x") - (VNx2DI "x")]) + (VNx4SF "w") (VNx2SF "x") + (VNx2DI "x") + (VNx2DF "x")]) ;; Double vector types for ALLX. (define_mode_attr Vallxd [(QI "8b") (HI "4h") (SI "2s")])