Rollup merge of #150826 - s390x-asm-f16-vector, r=uweigand,tgross35
Add `f16` inline ASM support for s390x tracking issue: https://github.com/rust-lang/rust/issues/116909 cc https://github.com/rust-lang/rust/issues/125398 Support the `f16x8` type in inline assembly. Only with the `nnp-assist` feature are there any instructions that make use of this type. Based on the riscv implementation I now cast to `i16x8` when that feature is not enabled. As far as I'm aware there are no instructions operating on `f16` scalar values. Should we still add support for using them in inline assembly? r? @tgross35 cc @uweigand
This commit is contained in:
commit
002b68d628
3 changed files with 51 additions and 7 deletions
|
|
@ -42,13 +42,13 @@ impl S390xInlineAsmRegClass {
|
|||
) -> &'static [(InlineAsmType, Option<Symbol>)] {
|
||||
match self {
|
||||
Self::reg | Self::reg_addr => types! { _: I8, I16, I32, I64; },
|
||||
Self::freg => types! { _: F32, F64; },
|
||||
Self::freg => types! { _: F16, F32, F64; },
|
||||
Self::vreg => {
|
||||
if allow_experimental_reg {
|
||||
// non-clobber-only vector register support is unstable.
|
||||
types! {
|
||||
vector: I32, F32, I64, F64, I128, F128,
|
||||
VecI8(16), VecI16(8), VecI32(4), VecI64(2), VecF32(4), VecF64(2);
|
||||
vector: I32, F16, F32, I64, F64, I128, F128,
|
||||
VecI8(16), VecI16(8), VecI32(4), VecI64(2), VecF16(8), VecF32(4), VecF64(2);
|
||||
}
|
||||
} else {
|
||||
&[]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue