[llvm] r255010 - [AArch64] Add ARMv8.2-A FP16 vector instructions

Ahmed Bougacha via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 8 11:02:42 PST 2015


On Tue, Dec 8, 2015 at 4:16 AM, Oliver Stannard via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Modified: llvm/trunk/lib/Target/AArch64/AArch64InstrFormats.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64InstrFormats.td?rev=255010&r1=255009&r2=255010&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64InstrFormats.td (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64InstrFormats.td Tue Dec  8 06:16:10 2015
> @@ -6712,6 +6853,21 @@ multiclass SIMDFPIndexed<bit U, bits<4>
>      let Inst{21} = 0;
>    }
>
> +  let Predicates = [HasNEON, HasFullFP16] in {
> +  def v1i16_indexed : BaseSIMDIndexed<1, U, 1, 0b00, opc,
> +                                      FPR16Op, FPR16Op, V128, VectorIndexH,

Hey Oliver, should this be V128_lo, like v4i16/v8i16?

> +                                      asm, ".h", "", "", ".h",
> +    [(set (f16 FPR16Op:$Rd),
> +          (OpNode (f16 FPR16Op:$Rn),
> +                  (f16 (vector_extract (v8f16 V128:$Rm),
> +                                       VectorIndexH:$idx))))]> {
> +    bits<3> idx;
> +    let Inst{11} = idx{2};
> +    let Inst{21} = idx{1};
> +    let Inst{20} = idx{0};
> +  }
> +  } // Predicates = [HasNEON, HasFullFP16]
> +
>    def v1i32_indexed : BaseSIMDIndexed<1, U, 1, 0b10, opc,
>                                        FPR32Op, FPR32Op, V128, VectorIndexS,
>                                        asm, ".s", "", "", ".s",
> @@ -6816,6 +6993,16 @@ multiclass SIMDFPIndexedTied<bit U, bits
>      let Inst{21} = 0;
>    }
>
> +  let Predicates = [HasNEON, HasFullFP16] in {
> +  def v1i16_indexed : BaseSIMDIndexedTied<1, U, 1, 0b00, opc,
> +                                      FPR16Op, FPR16Op, V128, VectorIndexH,

Ditto.

-Ahmed

> +                                      asm, ".h", "", "", ".h", []> {
> +    bits<3> idx;
> +    let Inst{11} = idx{2};
> +    let Inst{21} = idx{1};
> +    let Inst{20} = idx{0};
> +  }
> +  } // Predicates = [HasNEON, HasFullFP16]
>
>    def v1i32_indexed : BaseSIMDIndexedTied<1, U, 1, 0b10, opc,
>                                        FPR32Op, FPR32Op, V128, VectorIndexS,


More information about the llvm-commits mailing list