Skip to content

Commit 3316f81

Browse files
committed
core_arch: redefine svtrn{1,2}
Same as previous redefinitions in stdarch#2163 - these were missed in that PR because the hardware being tested on was missing the hardware feature required for the instructions these use.
1 parent 3d2e05b commit 3316f81

2 files changed

Lines changed: 56 additions & 50 deletions

File tree

library/stdarch/crates/core_arch/src/aarch64/sve/generated.rs

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -42211,30 +42211,17 @@ pub fn svtmad_f64<const IMM3: i32>(op1: svfloat64_t, op2: svfloat64_t) -> svfloa
4221142211
unsafe { _svtmad_f64(op1, op2, IMM3) }
4221242212
}
4221342213
#[doc = "Interleave even elements from two inputs"]
42214-
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn1_b8)"]
42215-
#[inline]
42216-
#[target_feature(enable = "sve")]
42217-
#[unstable(feature = "stdarch_aarch64_sve", issue = "145052")]
42218-
#[cfg_attr(test, assert_instr(trn1))]
42219-
pub fn svtrn1_b8(op1: svbool_t, op2: svbool_t) -> svbool_t {
42220-
unsafe extern "unadjusted" {
42221-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.nxv16i1")]
42222-
fn _svtrn1_b8(op1: svbool_t, op2: svbool_t) -> svbool_t;
42223-
}
42224-
unsafe { _svtrn1_b8(op1, op2) }
42225-
}
42226-
#[doc = "Interleave even elements from two inputs"]
4222742214
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn1_b16)"]
4222842215
#[inline]
4222942216
#[target_feature(enable = "sve")]
4223042217
#[unstable(feature = "stdarch_aarch64_sve", issue = "145052")]
4223142218
#[cfg_attr(test, assert_instr(trn1))]
4223242219
pub fn svtrn1_b16(op1: svbool_t, op2: svbool_t) -> svbool_t {
4223342220
unsafe extern "unadjusted" {
42234-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.nxv8i1")]
42235-
fn _svtrn1_b16(op1: svbool8_t, op2: svbool8_t) -> svbool8_t;
42221+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.b16")]
42222+
fn _svtrn1_b16(op1: svbool_t, op2: svbool_t) -> svbool_t;
4223642223
}
42237-
unsafe { _svtrn1_b16(op1.sve_into(), op2.sve_into()).sve_into() }
42224+
unsafe { _svtrn1_b16(op1.sve_into(), op2.sve_into()) }
4223842225
}
4223942226
#[doc = "Interleave even elements from two inputs"]
4224042227
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn1_b32)"]
@@ -42244,10 +42231,10 @@ pub fn svtrn1_b16(op1: svbool_t, op2: svbool_t) -> svbool_t {
4224442231
#[cfg_attr(test, assert_instr(trn1))]
4224542232
pub fn svtrn1_b32(op1: svbool_t, op2: svbool_t) -> svbool_t {
4224642233
unsafe extern "unadjusted" {
42247-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.nxv4i1")]
42248-
fn _svtrn1_b32(op1: svbool4_t, op2: svbool4_t) -> svbool4_t;
42234+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.b32")]
42235+
fn _svtrn1_b32(op1: svbool_t, op2: svbool_t) -> svbool_t;
4224942236
}
42250-
unsafe { _svtrn1_b32(op1.sve_into(), op2.sve_into()).sve_into() }
42237+
unsafe { _svtrn1_b32(op1.sve_into(), op2.sve_into()) }
4225142238
}
4225242239
#[doc = "Interleave even elements from two inputs"]
4225342240
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn1_b64)"]
@@ -42257,10 +42244,10 @@ pub fn svtrn1_b32(op1: svbool_t, op2: svbool_t) -> svbool_t {
4225742244
#[cfg_attr(test, assert_instr(trn1))]
4225842245
pub fn svtrn1_b64(op1: svbool_t, op2: svbool_t) -> svbool_t {
4225942246
unsafe extern "unadjusted" {
42260-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.nxv2i1")]
42261-
fn _svtrn1_b64(op1: svbool2_t, op2: svbool2_t) -> svbool2_t;
42247+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.b64")]
42248+
fn _svtrn1_b64(op1: svbool_t, op2: svbool_t) -> svbool_t;
4226242249
}
42263-
unsafe { _svtrn1_b64(op1.sve_into(), op2.sve_into()).sve_into() }
42250+
unsafe { _svtrn1_b64(op1.sve_into(), op2.sve_into()) }
4226442251
}
4226542252
#[doc = "Interleave even elements from two inputs"]
4226642253
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn1[_f32])"]
@@ -42376,6 +42363,19 @@ pub fn svtrn1_u32(op1: svuint32_t, op2: svuint32_t) -> svuint32_t {
4237642363
pub fn svtrn1_u64(op1: svuint64_t, op2: svuint64_t) -> svuint64_t {
4237742364
unsafe { svtrn1_s64(op1.as_signed(), op2.as_signed()).as_unsigned() }
4237842365
}
42366+
#[doc = "Interleave even elements from two inputs"]
42367+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn1[_b8])"]
42368+
#[inline]
42369+
#[target_feature(enable = "sve")]
42370+
#[unstable(feature = "stdarch_aarch64_sve", issue = "145052")]
42371+
#[cfg_attr(test, assert_instr(trn1))]
42372+
pub fn svtrn1_b8(op1: svbool_t, op2: svbool_t) -> svbool_t {
42373+
unsafe extern "unadjusted" {
42374+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn1.nxv16i1")]
42375+
fn _svtrn1_b8(op1: svbool_t, op2: svbool_t) -> svbool_t;
42376+
}
42377+
unsafe { _svtrn1_b8(op1, op2) }
42378+
}
4237942379
#[doc = "Interleave even quadwords from two inputs"]
4238042380
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn1q[_f32])"]
4238142381
#[inline]
@@ -42491,30 +42491,17 @@ pub fn svtrn1q_u64(op1: svuint64_t, op2: svuint64_t) -> svuint64_t {
4249142491
unsafe { svtrn1q_s64(op1.as_signed(), op2.as_signed()).as_unsigned() }
4249242492
}
4249342493
#[doc = "Interleave odd elements from two inputs"]
42494-
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn2_b8)"]
42495-
#[inline]
42496-
#[target_feature(enable = "sve")]
42497-
#[unstable(feature = "stdarch_aarch64_sve", issue = "145052")]
42498-
#[cfg_attr(test, assert_instr(trn2))]
42499-
pub fn svtrn2_b8(op1: svbool_t, op2: svbool_t) -> svbool_t {
42500-
unsafe extern "unadjusted" {
42501-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.nxv16i1")]
42502-
fn _svtrn2_b8(op1: svbool_t, op2: svbool_t) -> svbool_t;
42503-
}
42504-
unsafe { _svtrn2_b8(op1, op2) }
42505-
}
42506-
#[doc = "Interleave odd elements from two inputs"]
4250742494
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn2_b16)"]
4250842495
#[inline]
4250942496
#[target_feature(enable = "sve")]
4251042497
#[unstable(feature = "stdarch_aarch64_sve", issue = "145052")]
4251142498
#[cfg_attr(test, assert_instr(trn2))]
4251242499
pub fn svtrn2_b16(op1: svbool_t, op2: svbool_t) -> svbool_t {
4251342500
unsafe extern "unadjusted" {
42514-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.nxv8i1")]
42515-
fn _svtrn2_b16(op1: svbool8_t, op2: svbool8_t) -> svbool8_t;
42501+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.b16")]
42502+
fn _svtrn2_b16(op1: svbool_t, op2: svbool_t) -> svbool_t;
4251642503
}
42517-
unsafe { _svtrn2_b16(op1.sve_into(), op2.sve_into()).sve_into() }
42504+
unsafe { _svtrn2_b16(op1.sve_into(), op2.sve_into()) }
4251842505
}
4251942506
#[doc = "Interleave odd elements from two inputs"]
4252042507
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn2_b32)"]
@@ -42524,10 +42511,10 @@ pub fn svtrn2_b16(op1: svbool_t, op2: svbool_t) -> svbool_t {
4252442511
#[cfg_attr(test, assert_instr(trn2))]
4252542512
pub fn svtrn2_b32(op1: svbool_t, op2: svbool_t) -> svbool_t {
4252642513
unsafe extern "unadjusted" {
42527-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.nxv4i1")]
42528-
fn _svtrn2_b32(op1: svbool4_t, op2: svbool4_t) -> svbool4_t;
42514+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.b32")]
42515+
fn _svtrn2_b32(op1: svbool_t, op2: svbool_t) -> svbool_t;
4252942516
}
42530-
unsafe { _svtrn2_b32(op1.sve_into(), op2.sve_into()).sve_into() }
42517+
unsafe { _svtrn2_b32(op1.sve_into(), op2.sve_into()) }
4253142518
}
4253242519
#[doc = "Interleave odd elements from two inputs"]
4253342520
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn2_b64)"]
@@ -42537,10 +42524,10 @@ pub fn svtrn2_b32(op1: svbool_t, op2: svbool_t) -> svbool_t {
4253742524
#[cfg_attr(test, assert_instr(trn2))]
4253842525
pub fn svtrn2_b64(op1: svbool_t, op2: svbool_t) -> svbool_t {
4253942526
unsafe extern "unadjusted" {
42540-
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.nxv2i1")]
42541-
fn _svtrn2_b64(op1: svbool2_t, op2: svbool2_t) -> svbool2_t;
42527+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.b64")]
42528+
fn _svtrn2_b64(op1: svbool_t, op2: svbool_t) -> svbool_t;
4254242529
}
42543-
unsafe { _svtrn2_b64(op1.sve_into(), op2.sve_into()).sve_into() }
42530+
unsafe { _svtrn2_b64(op1.sve_into(), op2.sve_into()) }
4254442531
}
4254542532
#[doc = "Interleave odd elements from two inputs"]
4254642533
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn2[_f32])"]
@@ -42656,6 +42643,19 @@ pub fn svtrn2_u32(op1: svuint32_t, op2: svuint32_t) -> svuint32_t {
4265642643
pub fn svtrn2_u64(op1: svuint64_t, op2: svuint64_t) -> svuint64_t {
4265742644
unsafe { svtrn2_s64(op1.as_signed(), op2.as_signed()).as_unsigned() }
4265842645
}
42646+
#[doc = "Interleave odd elements from two inputs"]
42647+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn2[_b8])"]
42648+
#[inline]
42649+
#[target_feature(enable = "sve")]
42650+
#[unstable(feature = "stdarch_aarch64_sve", issue = "145052")]
42651+
#[cfg_attr(test, assert_instr(trn2))]
42652+
pub fn svtrn2_b8(op1: svbool_t, op2: svbool_t) -> svbool_t {
42653+
unsafe extern "unadjusted" {
42654+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.trn2.nxv16i1")]
42655+
fn _svtrn2_b8(op1: svbool_t, op2: svbool_t) -> svbool_t;
42656+
}
42657+
unsafe { _svtrn2_b8(op1, op2) }
42658+
}
4265942659
#[doc = "Interleave odd quadwords from two inputs"]
4266042660
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svtrn2q[_f32])"]
4266142661
#[inline]

library/stdarch/crates/stdarch-gen-arm/spec/sve/aarch64.spec.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,7 @@ intrinsics:
11571157
doc: Interleave even elements from two inputs
11581158
arguments: ["op1: {sve_type}", "op2: {sve_type}"]
11591159
return_type: "{sve_type}"
1160-
types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]
1160+
types: [b8, f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]
11611161
assert_instr: [trn1]
11621162
compose:
11631163
- LLVMLink: { name: "trn1.{sve_type}" }
@@ -1167,10 +1167,13 @@ intrinsics:
11671167
doc: Interleave even elements from two inputs
11681168
arguments: ["op1: {sve_type}", "op2: {sve_type}"]
11691169
return_type: "{sve_type}"
1170-
types: [b8, b16, b32, b64]
1170+
types: [b16, b32, b64]
11711171
assert_instr: [trn1]
11721172
compose:
1173-
- LLVMLink: { name: "trn1.{sve_type}" }
1173+
- LLVMLink:
1174+
name: "llvm.aarch64.sve.trn1.b{size}"
1175+
arguments: ["op1: svbool_t", "op2: svbool_t"]
1176+
return_type: "svbool_t"
11741177

11751178
- name: svtrn1q[_{type}]
11761179
attr: [*sve-unstable]
@@ -1188,7 +1191,7 @@ intrinsics:
11881191
doc: Interleave odd elements from two inputs
11891192
arguments: ["op1: {sve_type}", "op2: {sve_type}"]
11901193
return_type: "{sve_type}"
1191-
types: [f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]
1194+
types: [b8, f32, f64, i8, i16, i32, i64, u8, u16, u32, u64]
11921195
assert_instr: [trn2]
11931196
compose:
11941197
- LLVMLink: { name: "trn2.{sve_type}" }
@@ -1198,10 +1201,13 @@ intrinsics:
11981201
doc: Interleave odd elements from two inputs
11991202
arguments: ["op1: {sve_type}", "op2: {sve_type}"]
12001203
return_type: "{sve_type}"
1201-
types: [b8, b16, b32, b64]
1204+
types: [b16, b32, b64]
12021205
assert_instr: [trn2]
12031206
compose:
1204-
- LLVMLink: { name: "trn2.{sve_type}" }
1207+
- LLVMLink:
1208+
name: "llvm.aarch64.sve.trn2.b{size}"
1209+
arguments: ["op1: svbool_t", "op2: svbool_t"]
1210+
return_type: "svbool_t"
12051211

12061212
- name: svtrn2q[_{type}]
12071213
attr: [*sve-unstable]

0 commit comments

Comments
 (0)