|
1 | | -use super::{InlineAsmArch, InlineAsmType}; |
| 1 | +use super::{InlineAsmArch, InlineAsmType, ModifierInfo}; |
2 | 2 | use crate::spec::{RelocModel, Target}; |
3 | 3 | use rustc_data_structures::fx::FxIndexSet; |
4 | 4 | use rustc_macros::HashStable_Generic; |
@@ -27,32 +27,28 @@ impl AArch64InlineAsmRegClass { |
27 | 27 | None |
28 | 28 | } |
29 | 29 |
|
30 | | - pub fn suggest_modifier( |
31 | | - self, |
32 | | - _arch: InlineAsmArch, |
33 | | - ty: InlineAsmType, |
34 | | - ) -> Option<(char, &'static str)> { |
| 30 | + pub fn suggest_modifier(self, _arch: InlineAsmArch, ty: InlineAsmType) -> Option<ModifierInfo> { |
35 | 31 | match self { |
36 | 32 | Self::reg => match ty.size().bits() { |
37 | 33 | 64 => None, |
38 | | - _ => Some(('w', "w0")), |
| 34 | + _ => Some(('w', "w0", 32).into()), |
39 | 35 | }, |
40 | 36 | Self::vreg | Self::vreg_low16 => match ty.size().bits() { |
41 | | - 8 => Some(('b', "b0")), |
42 | | - 16 => Some(('h', "h0")), |
43 | | - 32 => Some(('s', "s0")), |
44 | | - 64 => Some(('d', "d0")), |
45 | | - 128 => Some(('q', "q0")), |
| 37 | + 8 => Some(('b', "b0", 8).into()), |
| 38 | + 16 => Some(('h', "h0", 16).into()), |
| 39 | + 32 => Some(('s', "s0", 32).into()), |
| 40 | + 64 => Some(('d', "d0", 64).into()), |
| 41 | + 128 => Some(('q', "q0", 128).into()), |
46 | 42 | _ => None, |
47 | 43 | }, |
48 | 44 | Self::preg => None, |
49 | 45 | } |
50 | 46 | } |
51 | 47 |
|
52 | | - pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> { |
| 48 | + pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> { |
53 | 49 | match self { |
54 | | - Self::reg => Some(('x', "x0")), |
55 | | - Self::vreg | Self::vreg_low16 => Some(('v', "v0")), |
| 50 | + Self::reg => Some(('x', "x0", 64).into()), |
| 51 | + Self::vreg | Self::vreg_low16 => Some(('v', "v0", 128).into()), |
56 | 52 | Self::preg => None, |
57 | 53 | } |
58 | 54 | } |
|
0 commit comments