Skip to content

Commit 61dfa00

Browse files
author
Francesco Petrogalli
committed
[MC][SVE] Fix data operand for instruction alias of st1d.
The version of `st1d` that operates with vector plus immediate addressing mode uses the alias `st1d { <Zn>.d }, <Pg>, [<Za>.d]` for rendering `st1d { <Zn>.d }, <Pg>, [<Za>.d, #0]`. The disassembler was generating `<Zn>.s` instead of `<Zn>.d>`. Differential Revision: https://reviews.llvm.org/D86633
1 parent 476ca33 commit 61dfa00

File tree

5 files changed

+85
-1
lines changed

5 files changed

+85
-1
lines changed

llvm/lib/Target/AArch64/SVEInstrFormats.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5487,7 +5487,7 @@ multiclass sve_mem_64b_sst_vi_ptrs<bits<3> opc, string asm,
54875487
def : InstAlias<asm # "\t$Zt, $Pg, [$Zn, $imm5]",
54885488
(!cast<Instruction>(NAME # _IMM) ZPR64:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, imm_ty:$imm5), 0>;
54895489
def : InstAlias<asm # "\t$Zt, $Pg, [$Zn]",
5490-
(!cast<Instruction>(NAME # _IMM) Z_s:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0), 1>;
5490+
(!cast<Instruction>(NAME # _IMM) Z_d:$Zt, PPR3bAny:$Pg, ZPR64:$Zn, 0), 1>;
54915491

54925492
def : Pat<(op (nxv2i64 ZPR:$data), (nxv2i1 PPR:$gp), (nxv2i64 ZPR:$ptrs), imm_ty:$index, vt),
54935493
(!cast<Instruction>(NAME # _IMM) ZPR:$data, PPR:$gp, ZPR:$ptrs, imm_ty:$index)>;

llvm/test/MC/AArch64/SVE/st1b.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,27 @@ st1b { z31.d }, p7, [z31.d, #31]
168168
// CHECK-ENCODING: [0xff,0xbf,0x5f,0xe4]
169169
// CHECK-ERROR: instruction requires: sve
170170
// CHECK-UNKNOWN: ff bf 5f e4 <unknown>
171+
172+
st1b { z0.s }, p7, [z0.s, #0]
173+
// CHECK-INST: st1b { z0.s }, p7, [z0.s]
174+
// CHECK-ENCODING: [0x00,0xbc,0x60,0xe4]
175+
// CHECK-ERROR: instruction requires: sve
176+
// CHECK-UNKNOWN: 00 bc 60 e4 <unknown>
177+
178+
st1b { z0.s }, p7, [z0.s]
179+
// CHECK-INST: st1b { z0.s }, p7, [z0.s]
180+
// CHECK-ENCODING: [0x00,0xbc,0x60,0xe4]
181+
// CHECK-ERROR: instruction requires: sve
182+
// CHECK-UNKNOWN: 00 bc 60 e4 <unknown>
183+
184+
st1b { z0.d }, p7, [z0.d, #0]
185+
// CHECK-INST: st1b { z0.d }, p7, [z0.d]
186+
// CHECK-ENCODING: [0x00,0xbc,0x40,0xe4]
187+
// CHECK-ERROR: instruction requires: sve
188+
// CHECK-UNKNOWN: 00 bc 40 e4 <unknown>
189+
190+
st1b { z0.d }, p7, [z0.d]
191+
// CHECK-INST: st1b { z0.d }, p7, [z0.d]
192+
// CHECK-ENCODING: [0x00,0xbc,0x40,0xe4]
193+
// CHECK-ERROR: instruction requires: sve
194+
// CHECK-UNKNOWN: 00 bc 40 e4 <unknown>

llvm/test/MC/AArch64/SVE/st1d.s

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,15 @@ st1d { z31.d }, p7, [z31.d, #248]
7878
// CHECK-ENCODING: [0xff,0xbf,0xdf,0xe5]
7979
// CHECK-ERROR: instruction requires: sve
8080
// CHECK-UNKNOWN: ff bf df e5 <unknown>
81+
82+
st1d { z0.d }, p7, [z0.d, #0]
83+
// CHECK-INST: st1d { z0.d }, p7, [z0.d]
84+
// CHECK-ENCODING: [0x00,0xbc,0xc0,0xe5]
85+
// CHECK-ERROR: instruction requires: sve
86+
// CHECK-UNKNOWN: 00 bc c0 e5 <unknown>
87+
88+
st1d { z0.d }, p7, [z0.d]
89+
// CHECK-INST: st1d { z0.d }, p7, [z0.d]
90+
// CHECK-ENCODING: [0x00,0xbc,0xc0,0xe5]
91+
// CHECK-ERROR: instruction requires: sve
92+
// CHECK-UNKNOWN: 00 bc c0 e5 <unknown>

llvm/test/MC/AArch64/SVE/st1h.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,27 @@ st1h { z31.d }, p7, [z31.d, #62]
168168
// CHECK-ENCODING: [0xff,0xbf,0xdf,0xe4]
169169
// CHECK-ERROR: instruction requires: sve
170170
// CHECK-UNKNOWN: ff bf df e4 <unknown>
171+
172+
st1h { z0.s }, p7, [z0.s, #0]
173+
// CHECK-INST: st1h { z0.s }, p7, [z0.s]
174+
// CHECK-ENCODING: [0x00,0xbc,0xe0,0xe4]
175+
// CHECK-ERROR: instruction requires: sve
176+
// CHECK-UNKNOWN: 00 bc e0 e4 <unknown>
177+
178+
st1h { z0.s }, p7, [z0.s]
179+
// CHECK-INST: st1h { z0.s }, p7, [z0.s]
180+
// CHECK-ENCODING: [0x00,0xbc,0xe0,0xe4]
181+
// CHECK-ERROR: instruction requires: sve
182+
// CHECK-UNKNOWN: 00 bc e0 e4 <unknown>
183+
184+
st1h { z0.d }, p7, [z0.d, #0]
185+
// CHECK-INST: st1h { z0.d }, p7, [z0.d]
186+
// CHECK-ENCODING: [0x00,0xbc,0xc0,0xe4]
187+
// CHECK-ERROR: instruction requires: sve
188+
// CHECK-UNKNOWN: 00 bc c0 e4 <unknown>
189+
190+
st1h { z0.d }, p7, [z0.d]
191+
// CHECK-INST: st1h { z0.d }, p7, [z0.d]
192+
// CHECK-ENCODING: [0x00,0xbc,0xc0,0xe4]
193+
// CHECK-ERROR: instruction requires: sve
194+
// CHECK-UNKNOWN: 00 bc c0 e4 <unknown>

llvm/test/MC/AArch64/SVE/st1w.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,27 @@ st1w { z31.d }, p7, [z31.d, #124]
138138
// CHECK-ENCODING: [0xff,0xbf,0x5f,0xe5]
139139
// CHECK-ERROR: instruction requires: sve
140140
// CHECK-UNKNOWN: ff bf 5f e5 <unknown>
141+
142+
st1w { z0.s }, p7, [z0.s, #0]
143+
// CHECK-INST: st1w { z0.s }, p7, [z0.s]
144+
// CHECK-ENCODING: [0x00,0xbc,0x60,0xe5]
145+
// CHECK-ERROR: instruction requires: sve
146+
// CHECK-UNKNOWN: 00 bc 60 e5 <unknown>
147+
148+
st1w { z0.s }, p7, [z0.s]
149+
// CHECK-INST: st1w { z0.s }, p7, [z0.s]
150+
// CHECK-ENCODING: [0x00,0xbc,0x60,0xe5]
151+
// CHECK-ERROR: instruction requires: sve
152+
// CHECK-UNKNOWN: 00 bc 60 e5 <unknown>
153+
154+
st1w { z0.d }, p7, [z0.d, #0]
155+
// CHECK-INST: st1w { z0.d }, p7, [z0.d]
156+
// CHECK-ENCODING: [0x00,0xbc,0x40,0xe5]
157+
// CHECK-ERROR: instruction requires: sve
158+
// CHECK-UNKNOWN: 00 bc 40 e5 <unknown>
159+
160+
st1w { z0.d }, p7, [z0.d]
161+
// CHECK-INST: st1w { z0.d }, p7, [z0.d]
162+
// CHECK-ENCODING: [0x00,0xbc,0x40,0xe5]
163+
// CHECK-ERROR: instruction requires: sve
164+
// CHECK-UNKNOWN: 00 bc 40 e5 <unknown>

0 commit comments

Comments
 (0)