Add some fancier AArch64 load/store instructions.

This commit is contained in:
Huon Wilson 2015-09-03 17:06:34 -07:00
parent 7241ae9112
commit 67aa4c775a
2 changed files with 643 additions and 1 deletions

View File

@ -336,6 +336,48 @@
"ret": "i8",
"args": ["0"]
},
{
"intrinsic": "ld2{0[0].width}_{0[0].data_type}",
"width": [64, 128],
"llvm": "ld2.{0[0].llvm_name}.{1.llvm_name}",
"ret": ["[i(8-64);2]","[f(32-64);2]"],
"args": ["0.0SPc/0.0"]
},
{
"intrinsic": "ld3{0[0].width}_{0[0].data_type}",
"width": [64, 128],
"llvm": "ld3.{0[0].llvm_name}.{1.llvm_name}",
"ret": ["[i(8-64);3]","[f(32-64);3]"],
"args": ["0.0SPc/0.0"]
},
{
"intrinsic": "ld4{0[0].width}_{0[0].data_type}",
"width": [64, 128],
"llvm": "ld4.{0[0].llvm_name}.{1.llvm_name}",
"ret": ["[i(8-64);4]","[f(32-64);4]"],
"args": ["0.0SPc/0.0"]
},
{
"intrinsic": "ld2{0[0].width}_dup_{0[0].data_type}",
"width": [64, 128],
"llvm": "ld2.{0[0].llvm_name}.{1.llvm_name}",
"ret": ["[i(8-64);2]","[f(32-64);2]"],
"args": ["0.0SPc"]
},
{
"intrinsic": "ld3{0[0].width}_dup_{0[0].data_type}",
"width": [64, 128],
"llvm": "ld3.{0[0].llvm_name}.{1.llvm_name}",
"ret": ["[i(8-64);3]","[f(32-64);3]"],
"args": ["0.0SPc"]
},
{
"intrinsic": "ld4{0[0].width}_dup_{0[0].data_type}",
"width": [64, 128],
"llvm": "ld4.{0[0].llvm_name}.{1.llvm_name}",
"ret": ["[i(8-64);4]","[f(32-64);4]"],
"args": ["0.0SPc"]
},
{
"intrinsic": "padd{0.width}_{0.data_type}",
"width": [64, 128],

View File

@ -13,7 +13,7 @@
#![allow(unused_imports)]
use {Intrinsic, i, i_, u, u_, f, v, agg, p};
use {Intrinsic, i, i_, u, u_, f, v, v_, agg, p, void};
use IntrinsicDef::Named;
use rustc::middle::ty;
@ -1910,6 +1910,606 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
output: v(u(8), 16),
definition: Named("llvm.aarch64.neon.rbit.v16i8")
},
"ld2_s8" => Intrinsic {
inputs: vec![p(true, i(8), Some(v(i(8), 8)))],
output: agg(false, vec![v(i(8), 8), v(i(8), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i8.p0v8i8")
},
"ld2_u8" => Intrinsic {
inputs: vec![p(true, u(8), Some(v(u(8), 8)))],
output: agg(false, vec![v(u(8), 8), v(u(8), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i8.p0v8i8")
},
"ld2_s16" => Intrinsic {
inputs: vec![p(true, i(16), Some(v(i(16), 4)))],
output: agg(false, vec![v(i(16), 4), v(i(16), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i16.p0v4i16")
},
"ld2_u16" => Intrinsic {
inputs: vec![p(true, u(16), Some(v(u(16), 4)))],
output: agg(false, vec![v(u(16), 4), v(u(16), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i16.p0v4i16")
},
"ld2_s32" => Intrinsic {
inputs: vec![p(true, i(32), Some(v(i(32), 2)))],
output: agg(false, vec![v(i(32), 2), v(i(32), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i32.p0v2i32")
},
"ld2_u32" => Intrinsic {
inputs: vec![p(true, u(32), Some(v(u(32), 2)))],
output: agg(false, vec![v(u(32), 2), v(u(32), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i32.p0v2i32")
},
"ld2_s64" => Intrinsic {
inputs: vec![p(true, i(64), Some(v(i(64), 1)))],
output: agg(false, vec![v(i(64), 1), v(i(64), 1)]),
definition: Named("llvm.aarch64.neon.ld2.v1i64.p0v1i64")
},
"ld2_u64" => Intrinsic {
inputs: vec![p(true, u(64), Some(v(u(64), 1)))],
output: agg(false, vec![v(u(64), 1), v(u(64), 1)]),
definition: Named("llvm.aarch64.neon.ld2.v1i64.p0v1i64")
},
"ld2_f32" => Intrinsic {
inputs: vec![p(true, f(32), Some(v(f(32), 2)))],
output: agg(false, vec![v(f(32), 2), v(f(32), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2f32.p0v2f32")
},
"ld2_f64" => Intrinsic {
inputs: vec![p(true, f(64), Some(v(f(64), 1)))],
output: agg(false, vec![v(f(64), 1), v(f(64), 1)]),
definition: Named("llvm.aarch64.neon.ld2.v1f64.p0v1f64")
},
"ld2q_s8" => Intrinsic {
inputs: vec![p(true, i(8), Some(v(i(8), 16)))],
output: agg(false, vec![v(i(8), 16), v(i(8), 16)]),
definition: Named("llvm.aarch64.neon.ld2.v16i8.p0v16i8")
},
"ld2q_u8" => Intrinsic {
inputs: vec![p(true, u(8), Some(v(u(8), 16)))],
output: agg(false, vec![v(u(8), 16), v(u(8), 16)]),
definition: Named("llvm.aarch64.neon.ld2.v16i8.p0v16i8")
},
"ld2q_s16" => Intrinsic {
inputs: vec![p(true, i(16), Some(v(i(16), 8)))],
output: agg(false, vec![v(i(16), 8), v(i(16), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i16.p0v8i16")
},
"ld2q_u16" => Intrinsic {
inputs: vec![p(true, u(16), Some(v(u(16), 8)))],
output: agg(false, vec![v(u(16), 8), v(u(16), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i16.p0v8i16")
},
"ld2q_s32" => Intrinsic {
inputs: vec![p(true, i(32), Some(v(i(32), 4)))],
output: agg(false, vec![v(i(32), 4), v(i(32), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i32.p0v4i32")
},
"ld2q_u32" => Intrinsic {
inputs: vec![p(true, u(32), Some(v(u(32), 4)))],
output: agg(false, vec![v(u(32), 4), v(u(32), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i32.p0v4i32")
},
"ld2q_s64" => Intrinsic {
inputs: vec![p(true, i(64), Some(v(i(64), 2)))],
output: agg(false, vec![v(i(64), 2), v(i(64), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i64.p0v2i64")
},
"ld2q_u64" => Intrinsic {
inputs: vec![p(true, u(64), Some(v(u(64), 2)))],
output: agg(false, vec![v(u(64), 2), v(u(64), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i64.p0v2i64")
},
"ld2q_f32" => Intrinsic {
inputs: vec![p(true, f(32), Some(v(f(32), 4)))],
output: agg(false, vec![v(f(32), 4), v(f(32), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4f32.p0v4f32")
},
"ld2q_f64" => Intrinsic {
inputs: vec![p(true, f(64), Some(v(f(64), 2)))],
output: agg(false, vec![v(f(64), 2), v(f(64), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2f64.p0v2f64")
},
"ld3_s8" => Intrinsic {
inputs: vec![p(true, i(8), Some(v(i(8), 8)))],
output: agg(false, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i8.p0v8i8")
},
"ld3_u8" => Intrinsic {
inputs: vec![p(true, u(8), Some(v(u(8), 8)))],
output: agg(false, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i8.p0v8i8")
},
"ld3_s16" => Intrinsic {
inputs: vec![p(true, i(16), Some(v(i(16), 4)))],
output: agg(false, vec![v(i(16), 4), v(i(16), 4), v(i(16), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i16.p0v4i16")
},
"ld3_u16" => Intrinsic {
inputs: vec![p(true, u(16), Some(v(u(16), 4)))],
output: agg(false, vec![v(u(16), 4), v(u(16), 4), v(u(16), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i16.p0v4i16")
},
"ld3_s32" => Intrinsic {
inputs: vec![p(true, i(32), Some(v(i(32), 2)))],
output: agg(false, vec![v(i(32), 2), v(i(32), 2), v(i(32), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i32.p0v2i32")
},
"ld3_u32" => Intrinsic {
inputs: vec![p(true, u(32), Some(v(u(32), 2)))],
output: agg(false, vec![v(u(32), 2), v(u(32), 2), v(u(32), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i32.p0v2i32")
},
"ld3_s64" => Intrinsic {
inputs: vec![p(true, i(64), Some(v(i(64), 1)))],
output: agg(false, vec![v(i(64), 1), v(i(64), 1), v(i(64), 1)]),
definition: Named("llvm.aarch64.neon.ld3.v1i64.p0v1i64")
},
"ld3_u64" => Intrinsic {
inputs: vec![p(true, u(64), Some(v(u(64), 1)))],
output: agg(false, vec![v(u(64), 1), v(u(64), 1), v(u(64), 1)]),
definition: Named("llvm.aarch64.neon.ld3.v1i64.p0v1i64")
},
"ld3_f32" => Intrinsic {
inputs: vec![p(true, f(32), Some(v(f(32), 2)))],
output: agg(false, vec![v(f(32), 2), v(f(32), 2), v(f(32), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2f32.p0v2f32")
},
"ld3_f64" => Intrinsic {
inputs: vec![p(true, f(64), Some(v(f(64), 1)))],
output: agg(false, vec![v(f(64), 1), v(f(64), 1), v(f(64), 1)]),
definition: Named("llvm.aarch64.neon.ld3.v1f64.p0v1f64")
},
"ld3q_s8" => Intrinsic {
inputs: vec![p(true, i(8), Some(v(i(8), 16)))],
output: agg(false, vec![v(i(8), 16), v(i(8), 16), v(i(8), 16)]),
definition: Named("llvm.aarch64.neon.ld3.v16i8.p0v16i8")
},
"ld3q_u8" => Intrinsic {
inputs: vec![p(true, u(8), Some(v(u(8), 16)))],
output: agg(false, vec![v(u(8), 16), v(u(8), 16), v(u(8), 16)]),
definition: Named("llvm.aarch64.neon.ld3.v16i8.p0v16i8")
},
"ld3q_s16" => Intrinsic {
inputs: vec![p(true, i(16), Some(v(i(16), 8)))],
output: agg(false, vec![v(i(16), 8), v(i(16), 8), v(i(16), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i16.p0v8i16")
},
"ld3q_u16" => Intrinsic {
inputs: vec![p(true, u(16), Some(v(u(16), 8)))],
output: agg(false, vec![v(u(16), 8), v(u(16), 8), v(u(16), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i16.p0v8i16")
},
"ld3q_s32" => Intrinsic {
inputs: vec![p(true, i(32), Some(v(i(32), 4)))],
output: agg(false, vec![v(i(32), 4), v(i(32), 4), v(i(32), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i32.p0v4i32")
},
"ld3q_u32" => Intrinsic {
inputs: vec![p(true, u(32), Some(v(u(32), 4)))],
output: agg(false, vec![v(u(32), 4), v(u(32), 4), v(u(32), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i32.p0v4i32")
},
"ld3q_s64" => Intrinsic {
inputs: vec![p(true, i(64), Some(v(i(64), 2)))],
output: agg(false, vec![v(i(64), 2), v(i(64), 2), v(i(64), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i64.p0v2i64")
},
"ld3q_u64" => Intrinsic {
inputs: vec![p(true, u(64), Some(v(u(64), 2)))],
output: agg(false, vec![v(u(64), 2), v(u(64), 2), v(u(64), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i64.p0v2i64")
},
"ld3q_f32" => Intrinsic {
inputs: vec![p(true, f(32), Some(v(f(32), 4)))],
output: agg(false, vec![v(f(32), 4), v(f(32), 4), v(f(32), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4f32.p0v4f32")
},
"ld3q_f64" => Intrinsic {
inputs: vec![p(true, f(64), Some(v(f(64), 2)))],
output: agg(false, vec![v(f(64), 2), v(f(64), 2), v(f(64), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2f64.p0v2f64")
},
"ld4_s8" => Intrinsic {
inputs: vec![p(true, i(8), Some(v(i(8), 8)))],
output: agg(false, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8), v(i(8), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i8.p0v8i8")
},
"ld4_u8" => Intrinsic {
inputs: vec![p(true, u(8), Some(v(u(8), 8)))],
output: agg(false, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8), v(u(8), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i8.p0v8i8")
},
"ld4_s16" => Intrinsic {
inputs: vec![p(true, i(16), Some(v(i(16), 4)))],
output: agg(false, vec![v(i(16), 4), v(i(16), 4), v(i(16), 4), v(i(16), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i16.p0v4i16")
},
"ld4_u16" => Intrinsic {
inputs: vec![p(true, u(16), Some(v(u(16), 4)))],
output: agg(false, vec![v(u(16), 4), v(u(16), 4), v(u(16), 4), v(u(16), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i16.p0v4i16")
},
"ld4_s32" => Intrinsic {
inputs: vec![p(true, i(32), Some(v(i(32), 2)))],
output: agg(false, vec![v(i(32), 2), v(i(32), 2), v(i(32), 2), v(i(32), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i32.p0v2i32")
},
"ld4_u32" => Intrinsic {
inputs: vec![p(true, u(32), Some(v(u(32), 2)))],
output: agg(false, vec![v(u(32), 2), v(u(32), 2), v(u(32), 2), v(u(32), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i32.p0v2i32")
},
"ld4_s64" => Intrinsic {
inputs: vec![p(true, i(64), Some(v(i(64), 1)))],
output: agg(false, vec![v(i(64), 1), v(i(64), 1), v(i(64), 1), v(i(64), 1)]),
definition: Named("llvm.aarch64.neon.ld4.v1i64.p0v1i64")
},
"ld4_u64" => Intrinsic {
inputs: vec![p(true, u(64), Some(v(u(64), 1)))],
output: agg(false, vec![v(u(64), 1), v(u(64), 1), v(u(64), 1), v(u(64), 1)]),
definition: Named("llvm.aarch64.neon.ld4.v1i64.p0v1i64")
},
"ld4_f32" => Intrinsic {
inputs: vec![p(true, f(32), Some(v(f(32), 2)))],
output: agg(false, vec![v(f(32), 2), v(f(32), 2), v(f(32), 2), v(f(32), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2f32.p0v2f32")
},
"ld4_f64" => Intrinsic {
inputs: vec![p(true, f(64), Some(v(f(64), 1)))],
output: agg(false, vec![v(f(64), 1), v(f(64), 1), v(f(64), 1), v(f(64), 1)]),
definition: Named("llvm.aarch64.neon.ld4.v1f64.p0v1f64")
},
"ld4q_s8" => Intrinsic {
inputs: vec![p(true, i(8), Some(v(i(8), 16)))],
output: agg(false, vec![v(i(8), 16), v(i(8), 16), v(i(8), 16), v(i(8), 16)]),
definition: Named("llvm.aarch64.neon.ld4.v16i8.p0v16i8")
},
"ld4q_u8" => Intrinsic {
inputs: vec![p(true, u(8), Some(v(u(8), 16)))],
output: agg(false, vec![v(u(8), 16), v(u(8), 16), v(u(8), 16), v(u(8), 16)]),
definition: Named("llvm.aarch64.neon.ld4.v16i8.p0v16i8")
},
"ld4q_s16" => Intrinsic {
inputs: vec![p(true, i(16), Some(v(i(16), 8)))],
output: agg(false, vec![v(i(16), 8), v(i(16), 8), v(i(16), 8), v(i(16), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i16.p0v8i16")
},
"ld4q_u16" => Intrinsic {
inputs: vec![p(true, u(16), Some(v(u(16), 8)))],
output: agg(false, vec![v(u(16), 8), v(u(16), 8), v(u(16), 8), v(u(16), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i16.p0v8i16")
},
"ld4q_s32" => Intrinsic {
inputs: vec![p(true, i(32), Some(v(i(32), 4)))],
output: agg(false, vec![v(i(32), 4), v(i(32), 4), v(i(32), 4), v(i(32), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i32.p0v4i32")
},
"ld4q_u32" => Intrinsic {
inputs: vec![p(true, u(32), Some(v(u(32), 4)))],
output: agg(false, vec![v(u(32), 4), v(u(32), 4), v(u(32), 4), v(u(32), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i32.p0v4i32")
},
"ld4q_s64" => Intrinsic {
inputs: vec![p(true, i(64), Some(v(i(64), 2)))],
output: agg(false, vec![v(i(64), 2), v(i(64), 2), v(i(64), 2), v(i(64), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i64.p0v2i64")
},
"ld4q_u64" => Intrinsic {
inputs: vec![p(true, u(64), Some(v(u(64), 2)))],
output: agg(false, vec![v(u(64), 2), v(u(64), 2), v(u(64), 2), v(u(64), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i64.p0v2i64")
},
"ld4q_f32" => Intrinsic {
inputs: vec![p(true, f(32), Some(v(f(32), 4)))],
output: agg(false, vec![v(f(32), 4), v(f(32), 4), v(f(32), 4), v(f(32), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4f32.p0v4f32")
},
"ld4q_f64" => Intrinsic {
inputs: vec![p(true, f(64), Some(v(f(64), 2)))],
output: agg(false, vec![v(f(64), 2), v(f(64), 2), v(f(64), 2), v(f(64), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2f64.p0v2f64")
},
"ld2_dup_s8" => Intrinsic {
inputs: vec![p(true, i(8), None)],
output: agg(false, vec![v(i(8), 8), v(i(8), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i8.p0i8")
},
"ld2_dup_u8" => Intrinsic {
inputs: vec![p(true, u(8), None)],
output: agg(false, vec![v(u(8), 8), v(u(8), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i8.p0i8")
},
"ld2_dup_s16" => Intrinsic {
inputs: vec![p(true, i(16), None)],
output: agg(false, vec![v(i(16), 4), v(i(16), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i16.p0i16")
},
"ld2_dup_u16" => Intrinsic {
inputs: vec![p(true, u(16), None)],
output: agg(false, vec![v(u(16), 4), v(u(16), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i16.p0i16")
},
"ld2_dup_s32" => Intrinsic {
inputs: vec![p(true, i(32), None)],
output: agg(false, vec![v(i(32), 2), v(i(32), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i32.p0i32")
},
"ld2_dup_u32" => Intrinsic {
inputs: vec![p(true, u(32), None)],
output: agg(false, vec![v(u(32), 2), v(u(32), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i32.p0i32")
},
"ld2_dup_s64" => Intrinsic {
inputs: vec![p(true, i(64), None)],
output: agg(false, vec![v(i(64), 1), v(i(64), 1)]),
definition: Named("llvm.aarch64.neon.ld2.v1i64.p0i64")
},
"ld2_dup_u64" => Intrinsic {
inputs: vec![p(true, u(64), None)],
output: agg(false, vec![v(u(64), 1), v(u(64), 1)]),
definition: Named("llvm.aarch64.neon.ld2.v1i64.p0i64")
},
"ld2_dup_f32" => Intrinsic {
inputs: vec![p(true, f(32), None)],
output: agg(false, vec![v(f(32), 2), v(f(32), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2f32.p0f32")
},
"ld2_dup_f64" => Intrinsic {
inputs: vec![p(true, f(64), None)],
output: agg(false, vec![v(f(64), 1), v(f(64), 1)]),
definition: Named("llvm.aarch64.neon.ld2.v1f64.p0f64")
},
"ld2q_dup_s8" => Intrinsic {
inputs: vec![p(true, i(8), None)],
output: agg(false, vec![v(i(8), 16), v(i(8), 16)]),
definition: Named("llvm.aarch64.neon.ld2.v16i8.p0i8")
},
"ld2q_dup_u8" => Intrinsic {
inputs: vec![p(true, u(8), None)],
output: agg(false, vec![v(u(8), 16), v(u(8), 16)]),
definition: Named("llvm.aarch64.neon.ld2.v16i8.p0i8")
},
"ld2q_dup_s16" => Intrinsic {
inputs: vec![p(true, i(16), None)],
output: agg(false, vec![v(i(16), 8), v(i(16), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i16.p0i16")
},
"ld2q_dup_u16" => Intrinsic {
inputs: vec![p(true, u(16), None)],
output: agg(false, vec![v(u(16), 8), v(u(16), 8)]),
definition: Named("llvm.aarch64.neon.ld2.v8i16.p0i16")
},
"ld2q_dup_s32" => Intrinsic {
inputs: vec![p(true, i(32), None)],
output: agg(false, vec![v(i(32), 4), v(i(32), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i32.p0i32")
},
"ld2q_dup_u32" => Intrinsic {
inputs: vec![p(true, u(32), None)],
output: agg(false, vec![v(u(32), 4), v(u(32), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4i32.p0i32")
},
"ld2q_dup_s64" => Intrinsic {
inputs: vec![p(true, i(64), None)],
output: agg(false, vec![v(i(64), 2), v(i(64), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i64.p0i64")
},
"ld2q_dup_u64" => Intrinsic {
inputs: vec![p(true, u(64), None)],
output: agg(false, vec![v(u(64), 2), v(u(64), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2i64.p0i64")
},
"ld2q_dup_f32" => Intrinsic {
inputs: vec![p(true, f(32), None)],
output: agg(false, vec![v(f(32), 4), v(f(32), 4)]),
definition: Named("llvm.aarch64.neon.ld2.v4f32.p0f32")
},
"ld2q_dup_f64" => Intrinsic {
inputs: vec![p(true, f(64), None)],
output: agg(false, vec![v(f(64), 2), v(f(64), 2)]),
definition: Named("llvm.aarch64.neon.ld2.v2f64.p0f64")
},
"ld3_dup_s8" => Intrinsic {
inputs: vec![p(true, i(8), None)],
output: agg(false, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i8.p0i8")
},
"ld3_dup_u8" => Intrinsic {
inputs: vec![p(true, u(8), None)],
output: agg(false, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i8.p0i8")
},
"ld3_dup_s16" => Intrinsic {
inputs: vec![p(true, i(16), None)],
output: agg(false, vec![v(i(16), 4), v(i(16), 4), v(i(16), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i16.p0i16")
},
"ld3_dup_u16" => Intrinsic {
inputs: vec![p(true, u(16), None)],
output: agg(false, vec![v(u(16), 4), v(u(16), 4), v(u(16), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i16.p0i16")
},
"ld3_dup_s32" => Intrinsic {
inputs: vec![p(true, i(32), None)],
output: agg(false, vec![v(i(32), 2), v(i(32), 2), v(i(32), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i32.p0i32")
},
"ld3_dup_u32" => Intrinsic {
inputs: vec![p(true, u(32), None)],
output: agg(false, vec![v(u(32), 2), v(u(32), 2), v(u(32), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i32.p0i32")
},
"ld3_dup_s64" => Intrinsic {
inputs: vec![p(true, i(64), None)],
output: agg(false, vec![v(i(64), 1), v(i(64), 1), v(i(64), 1)]),
definition: Named("llvm.aarch64.neon.ld3.v1i64.p0i64")
},
"ld3_dup_u64" => Intrinsic {
inputs: vec![p(true, u(64), None)],
output: agg(false, vec![v(u(64), 1), v(u(64), 1), v(u(64), 1)]),
definition: Named("llvm.aarch64.neon.ld3.v1i64.p0i64")
},
"ld3_dup_f32" => Intrinsic {
inputs: vec![p(true, f(32), None)],
output: agg(false, vec![v(f(32), 2), v(f(32), 2), v(f(32), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2f32.p0f32")
},
"ld3_dup_f64" => Intrinsic {
inputs: vec![p(true, f(64), None)],
output: agg(false, vec![v(f(64), 1), v(f(64), 1), v(f(64), 1)]),
definition: Named("llvm.aarch64.neon.ld3.v1f64.p0f64")
},
"ld3q_dup_s8" => Intrinsic {
inputs: vec![p(true, i(8), None)],
output: agg(false, vec![v(i(8), 16), v(i(8), 16), v(i(8), 16)]),
definition: Named("llvm.aarch64.neon.ld3.v16i8.p0i8")
},
"ld3q_dup_u8" => Intrinsic {
inputs: vec![p(true, u(8), None)],
output: agg(false, vec![v(u(8), 16), v(u(8), 16), v(u(8), 16)]),
definition: Named("llvm.aarch64.neon.ld3.v16i8.p0i8")
},
"ld3q_dup_s16" => Intrinsic {
inputs: vec![p(true, i(16), None)],
output: agg(false, vec![v(i(16), 8), v(i(16), 8), v(i(16), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i16.p0i16")
},
"ld3q_dup_u16" => Intrinsic {
inputs: vec![p(true, u(16), None)],
output: agg(false, vec![v(u(16), 8), v(u(16), 8), v(u(16), 8)]),
definition: Named("llvm.aarch64.neon.ld3.v8i16.p0i16")
},
"ld3q_dup_s32" => Intrinsic {
inputs: vec![p(true, i(32), None)],
output: agg(false, vec![v(i(32), 4), v(i(32), 4), v(i(32), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i32.p0i32")
},
"ld3q_dup_u32" => Intrinsic {
inputs: vec![p(true, u(32), None)],
output: agg(false, vec![v(u(32), 4), v(u(32), 4), v(u(32), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4i32.p0i32")
},
"ld3q_dup_s64" => Intrinsic {
inputs: vec![p(true, i(64), None)],
output: agg(false, vec![v(i(64), 2), v(i(64), 2), v(i(64), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i64.p0i64")
},
"ld3q_dup_u64" => Intrinsic {
inputs: vec![p(true, u(64), None)],
output: agg(false, vec![v(u(64), 2), v(u(64), 2), v(u(64), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2i64.p0i64")
},
"ld3q_dup_f32" => Intrinsic {
inputs: vec![p(true, f(32), None)],
output: agg(false, vec![v(f(32), 4), v(f(32), 4), v(f(32), 4)]),
definition: Named("llvm.aarch64.neon.ld3.v4f32.p0f32")
},
"ld3q_dup_f64" => Intrinsic {
inputs: vec![p(true, f(64), None)],
output: agg(false, vec![v(f(64), 2), v(f(64), 2), v(f(64), 2)]),
definition: Named("llvm.aarch64.neon.ld3.v2f64.p0f64")
},
"ld4_dup_s8" => Intrinsic {
inputs: vec![p(true, i(8), None)],
output: agg(false, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8), v(i(8), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i8.p0i8")
},
"ld4_dup_u8" => Intrinsic {
inputs: vec![p(true, u(8), None)],
output: agg(false, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8), v(u(8), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i8.p0i8")
},
"ld4_dup_s16" => Intrinsic {
inputs: vec![p(true, i(16), None)],
output: agg(false, vec![v(i(16), 4), v(i(16), 4), v(i(16), 4), v(i(16), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i16.p0i16")
},
"ld4_dup_u16" => Intrinsic {
inputs: vec![p(true, u(16), None)],
output: agg(false, vec![v(u(16), 4), v(u(16), 4), v(u(16), 4), v(u(16), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i16.p0i16")
},
"ld4_dup_s32" => Intrinsic {
inputs: vec![p(true, i(32), None)],
output: agg(false, vec![v(i(32), 2), v(i(32), 2), v(i(32), 2), v(i(32), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i32.p0i32")
},
"ld4_dup_u32" => Intrinsic {
inputs: vec![p(true, u(32), None)],
output: agg(false, vec![v(u(32), 2), v(u(32), 2), v(u(32), 2), v(u(32), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i32.p0i32")
},
"ld4_dup_s64" => Intrinsic {
inputs: vec![p(true, i(64), None)],
output: agg(false, vec![v(i(64), 1), v(i(64), 1), v(i(64), 1), v(i(64), 1)]),
definition: Named("llvm.aarch64.neon.ld4.v1i64.p0i64")
},
"ld4_dup_u64" => Intrinsic {
inputs: vec![p(true, u(64), None)],
output: agg(false, vec![v(u(64), 1), v(u(64), 1), v(u(64), 1), v(u(64), 1)]),
definition: Named("llvm.aarch64.neon.ld4.v1i64.p0i64")
},
"ld4_dup_f32" => Intrinsic {
inputs: vec![p(true, f(32), None)],
output: agg(false, vec![v(f(32), 2), v(f(32), 2), v(f(32), 2), v(f(32), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2f32.p0f32")
},
"ld4_dup_f64" => Intrinsic {
inputs: vec![p(true, f(64), None)],
output: agg(false, vec![v(f(64), 1), v(f(64), 1), v(f(64), 1), v(f(64), 1)]),
definition: Named("llvm.aarch64.neon.ld4.v1f64.p0f64")
},
"ld4q_dup_s8" => Intrinsic {
inputs: vec![p(true, i(8), None)],
output: agg(false, vec![v(i(8), 16), v(i(8), 16), v(i(8), 16), v(i(8), 16)]),
definition: Named("llvm.aarch64.neon.ld4.v16i8.p0i8")
},
"ld4q_dup_u8" => Intrinsic {
inputs: vec![p(true, u(8), None)],
output: agg(false, vec![v(u(8), 16), v(u(8), 16), v(u(8), 16), v(u(8), 16)]),
definition: Named("llvm.aarch64.neon.ld4.v16i8.p0i8")
},
"ld4q_dup_s16" => Intrinsic {
inputs: vec![p(true, i(16), None)],
output: agg(false, vec![v(i(16), 8), v(i(16), 8), v(i(16), 8), v(i(16), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i16.p0i16")
},
"ld4q_dup_u16" => Intrinsic {
inputs: vec![p(true, u(16), None)],
output: agg(false, vec![v(u(16), 8), v(u(16), 8), v(u(16), 8), v(u(16), 8)]),
definition: Named("llvm.aarch64.neon.ld4.v8i16.p0i16")
},
"ld4q_dup_s32" => Intrinsic {
inputs: vec![p(true, i(32), None)],
output: agg(false, vec![v(i(32), 4), v(i(32), 4), v(i(32), 4), v(i(32), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i32.p0i32")
},
"ld4q_dup_u32" => Intrinsic {
inputs: vec![p(true, u(32), None)],
output: agg(false, vec![v(u(32), 4), v(u(32), 4), v(u(32), 4), v(u(32), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4i32.p0i32")
},
"ld4q_dup_s64" => Intrinsic {
inputs: vec![p(true, i(64), None)],
output: agg(false, vec![v(i(64), 2), v(i(64), 2), v(i(64), 2), v(i(64), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i64.p0i64")
},
"ld4q_dup_u64" => Intrinsic {
inputs: vec![p(true, u(64), None)],
output: agg(false, vec![v(u(64), 2), v(u(64), 2), v(u(64), 2), v(u(64), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2i64.p0i64")
},
"ld4q_dup_f32" => Intrinsic {
inputs: vec![p(true, f(32), None)],
output: agg(false, vec![v(f(32), 4), v(f(32), 4), v(f(32), 4), v(f(32), 4)]),
definition: Named("llvm.aarch64.neon.ld4.v4f32.p0f32")
},
"ld4q_dup_f64" => Intrinsic {
inputs: vec![p(true, f(64), None)],
output: agg(false, vec![v(f(64), 2), v(f(64), 2), v(f(64), 2), v(f(64), 2)]),
definition: Named("llvm.aarch64.neon.ld4.v2f64.p0f64")
},
"padd_s8" => Intrinsic {
inputs: vec![v(i(8), 8), v(i(8), 8)],
output: v(i(8), 8),