Skip to content

Commit a59a886

Browse files
committed
[AArch64][GlobalISel] Selection support for G_ASHR of <2 x s64>
Just add an extra case to the existing selection logic. llvm-svn: 372466
1 parent fae979b commit a59a886

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,11 @@ bool AArch64InstructionSelector::selectVectorASHR(
10521052
unsigned Opc = 0;
10531053
unsigned NegOpc = 0;
10541054
const TargetRegisterClass *RC = nullptr;
1055-
if (Ty == LLT::vector(4, 32)) {
1055+
if (Ty == LLT::vector(2, 64)) {
1056+
Opc = AArch64::SSHLv2i64;
1057+
NegOpc = AArch64::NEGv2i64;
1058+
RC = &AArch64::FPR128RegClass;
1059+
} else if (Ty == LLT::vector(4, 32)) {
10561060
Opc = AArch64::SSHLv4i32;
10571061
NegOpc = AArch64::NEGv4i32;
10581062
RC = &AArch64::FPR128RegClass;

llvm/test/CodeGen/AArch64/GlobalISel/select-vector-shift.mir

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,33 @@ body: |
118118
RET_ReallyLR implicit $q0
119119
120120
...
121+
---
122+
name: ashr_v4i64
123+
alignment: 4
124+
legalized: true
125+
regBankSelected: true
126+
tracksRegLiveness: true
127+
registers:
128+
- { id: 0, class: fpr }
129+
- { id: 1, class: fpr }
130+
- { id: 2, class: fpr }
131+
machineFunctionInfo: {}
132+
body: |
133+
bb.1:
134+
liveins: $q0, $q1
135+
136+
; CHECK-LABEL: name: ashr_v4i64
137+
; CHECK: liveins: $q0, $q1
138+
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
139+
; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
140+
; CHECK: [[NEGv2i64_:%[0-9]+]]:fpr128 = NEGv2i64 [[COPY1]]
141+
; CHECK: [[SSHLv2i64_:%[0-9]+]]:fpr128 = SSHLv2i64 [[COPY]], [[NEGv2i64_]]
142+
; CHECK: $q0 = COPY [[SSHLv2i64_]]
143+
; CHECK: RET_ReallyLR implicit $q0
144+
%0:fpr(<2 x s64>) = COPY $q0
145+
%1:fpr(<2 x s64>) = COPY $q1
146+
%2:fpr(<2 x s64>) = G_ASHR %0, %1(<2 x s64>)
147+
$q0 = COPY %2(<2 x s64>)
148+
RET_ReallyLR implicit $q0
149+
150+
...

0 commit comments

Comments
 (0)