4444 entry :
4545 ret i64 0
4646 }
47+
48+ define i64 @killed_blended_disc(i64 %a, i64 %b, i64 %c) {
49+ entry :
50+ ret i64 0
51+ }
4752...
4853---
4954name : movk_correct_blend
@@ -59,7 +64,7 @@ body: |
5964 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
6065 ; CHECK-NEXT: [[MOVKXi:%[0-9]+]]:gpr64noip = MOVKXi [[COPY1]], 42, 48
6166 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64noip = COPY [[COPY1]]
62- ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, killed [[COPY2]], implicit-def dead $x16, implicit-def dead $x17
67+ ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, [[COPY2]], implicit-def dead $x16, implicit-def dead $x17
6368 ; CHECK-NEXT: $x0 = COPY [[PAC]]
6469 ; CHECK-NEXT: RET_ReallyLR implicit $x0
6570 %0:gpr64 = COPY $x0
@@ -127,7 +132,7 @@ body: |
127132 ; CHECK-NEXT: {{ $}}
128133 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
129134 ; CHECK-NEXT: [[MOVi64imm:%[0-9]+]]:gpr64noip = MOVi64imm 42
130- ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, killed $noreg, implicit-def dead $x16, implicit-def dead $x17
135+ ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, $noreg, implicit-def dead $x16, implicit-def dead $x17
131136 ; CHECK-NEXT: $x0 = COPY [[PAC]]
132137 ; CHECK-NEXT: RET_ReallyLR implicit $x0
133138 %0:gpr64 = COPY $x0
@@ -170,7 +175,7 @@ body: |
170175 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
171176 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 42
172177 ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gpr64noip = SUBREG_TO_REG 0, killed [[MOVi32imm]], %subreg.sub_32
173- ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, killed $noreg, implicit-def dead $x16, implicit-def dead $x17
178+ ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, $noreg, implicit-def dead $x16, implicit-def dead $x17
174179 ; CHECK-NEXT: $x0 = COPY [[PAC]]
175180 ; CHECK-NEXT: RET_ReallyLR implicit $x0
176181 %0:gpr64 = COPY $x0
@@ -203,3 +208,31 @@ body: |
203208 $x0 = COPY %3
204209 RET_ReallyLR implicit $x0
205210 ...
211+ ---
212+ name : killed_blended_disc
213+ tracksRegLiveness : true
214+ body : |
215+ bb.0.entry:
216+ liveins: $x0, $x1, $x2
217+
218+ ; CHECK-LABEL: name: killed_blended_disc
219+ ; CHECK: liveins: $x0, $x1, $x2
220+ ; CHECK-NEXT: {{ $}}
221+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
222+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64noip = COPY $x1
223+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64sp = COPY $x2
224+ ; CHECK-NEXT: [[MOVKXi:%[0-9]+]]:gpr64noip = MOVKXi [[COPY1]], 42, 48
225+ ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, [[COPY1]], implicit-def dead $x16, implicit-def dead $x17
226+ ; CHECK-NEXT: STRXui [[PAC]], [[COPY2]], 0 :: (store (s64))
227+ ; CHECK-NEXT: $x0 = COPY [[COPY1]]
228+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
229+ %0:gpr64 = COPY $x0
230+ ; %1 is in GPR64noip, so that it will be directly used by PAC.
231+ %1:gpr64noip = COPY $x1
232+ %2:gpr64sp = COPY $x2
233+ %3:gpr64noip = MOVKXi %1, 42, 48
234+ %4:gpr64 = PAC %0, 2, 0, killed %3, implicit-def dead $x16, implicit-def dead $x17
235+ STRXui %4, %2, 0 :: (store (s64))
236+ $x0 = COPY %1
237+ RET_ReallyLR implicit $x0
238+ ...
0 commit comments