• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=aarch64 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s
3#
4# Verify register banks for G_DUP.
5#
6
7...
8---
9name:            v4s32_gpr
10alignment:       4
11legalized:       true
12tracksRegLiveness: true
13body:             |
14  bb.0.entry:
15    liveins: $w0
16
17    ; CHECK-LABEL: name: v4s32_gpr
18    ; CHECK: liveins: $w0
19    ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
20    ; CHECK: [[DUP:%[0-9]+]]:fpr(<4 x s32>) = G_DUP [[COPY]](s32)
21    ; CHECK: $q0 = COPY [[DUP]](<4 x s32>)
22    ; CHECK: RET_ReallyLR implicit $q0
23    %0:_(s32) = COPY $w0
24    %4:_(<4 x s32>) = G_DUP %0(s32)
25    $q0 = COPY %4(<4 x s32>)
26    RET_ReallyLR implicit $q0
27
28...
29---
30name:            v4s64_gpr
31alignment:       4
32legalized:       true
33tracksRegLiveness: true
34body:             |
35  bb.0.entry:
36    liveins: $x0
37
38    ; CHECK-LABEL: name: v4s64_gpr
39    ; CHECK: liveins: $x0
40    ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0
41    ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s64>) = G_DUP [[COPY]](s64)
42    ; CHECK: $q0 = COPY [[DUP]](<2 x s64>)
43    ; CHECK: RET_ReallyLR implicit $q0
44    %0:_(s64) = COPY $x0
45    %4:_(<2 x s64>) = G_DUP %0(s64)
46    $q0 = COPY %4(<2 x s64>)
47    RET_ReallyLR implicit $q0
48
49...
50---
51name:            v2s32_gpr
52alignment:       4
53legalized:       true
54tracksRegLiveness: true
55body:             |
56  bb.0.entry:
57    liveins: $w0
58
59    ; CHECK-LABEL: name: v2s32_gpr
60    ; CHECK: liveins: $w0
61    ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
62    ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s32>) = G_DUP [[COPY]](s32)
63    ; CHECK: $d0 = COPY [[DUP]](<2 x s32>)
64    ; CHECK: RET_ReallyLR implicit $d0
65    %0:_(s32) = COPY $w0
66    %4:_(<2 x s32>) = G_DUP %0(s32)
67    $d0 = COPY %4(<2 x s32>)
68    RET_ReallyLR implicit $d0
69
70...
71---
72name:            v4s32_fpr
73alignment:       4
74legalized:       true
75tracksRegLiveness: true
76body:             |
77  bb.0.entry:
78    liveins: $s0
79
80    ; CHECK-LABEL: name: v4s32_fpr
81    ; CHECK: liveins: $s0
82    ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
83    ; CHECK: [[DUP:%[0-9]+]]:fpr(<4 x s32>) = G_DUP [[COPY]](s32)
84    ; CHECK: $q0 = COPY [[DUP]](<4 x s32>)
85    ; CHECK: RET_ReallyLR implicit $q0
86    %0:_(s32) = COPY $s0
87    %4:_(<4 x s32>) = G_DUP %0(s32)
88    $q0 = COPY %4(<4 x s32>)
89    RET_ReallyLR implicit $q0
90
91...
92---
93name:            v2s64_fpr
94alignment:       4
95legalized:       true
96tracksRegLiveness: true
97body:             |
98  bb.0.entry:
99    liveins: $d0
100
101    ; CHECK-LABEL: name: v2s64_fpr
102    ; CHECK: liveins: $d0
103    ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0
104    ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s64>) = G_DUP [[COPY]](s64)
105    ; CHECK: $q0 = COPY [[DUP]](<2 x s64>)
106    ; CHECK: RET_ReallyLR implicit $q0
107    %0:_(s64) = COPY $d0
108    %4:_(<2 x s64>) = G_DUP %0(s64)
109    $q0 = COPY %4(<2 x s64>)
110    RET_ReallyLR implicit $q0
111
112...
113---
114name:            v2s32_fpr
115alignment:       4
116legalized:       true
117tracksRegLiveness: true
118body:             |
119  bb.0.entry:
120    liveins: $s0
121
122    ; CHECK-LABEL: name: v2s32_fpr
123    ; CHECK: liveins: $s0
124    ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
125    ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s32>) = G_DUP [[COPY]](s32)
126    ; CHECK: $d0 = COPY [[DUP]](<2 x s32>)
127    ; CHECK: RET_ReallyLR implicit $d0
128    %0:_(s32) = COPY $s0
129    %4:_(<2 x s32>) = G_DUP %0(s32)
130    $d0 = COPY %4(<2 x s32>)
131    RET_ReallyLR implicit $d0
132
133...
134---
135name:            v2s64_fpr_copy
136alignment:       4
137legalized:       true
138tracksRegLiveness: true
139body:             |
140  bb.0.entry:
141    liveins: $d0
142
143    ; CHECK-LABEL: name: v2s64_fpr_copy
144    ; CHECK: liveins: $d0
145    ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0
146    ; CHECK: [[DUP:%[0-9]+]]:fpr(<2 x s64>) = G_DUP [[COPY]](s64)
147    ; CHECK: $q0 = COPY [[DUP]](<2 x s64>)
148    ; CHECK: RET_ReallyLR implicit $q0
149    %0:_(s64) = COPY $d0
150    %6:_(<2 x s64>) = G_DUP %0(s64)
151    $q0 = COPY %6(<2 x s64>)
152    RET_ReallyLR implicit $q0
153
154...
155