Skip to content

Commit dc7c1d1

Browse files
committed
[X86][CodeGen] Support EVEX compression: NDD to nonNDD
1 parent e4e0b65 commit dc7c1d1

File tree

10 files changed

+70
-40
lines changed

10 files changed

+70
-40
lines changed

llvm/lib/Target/X86/X86CompressEVEX.cpp

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,27 @@ static bool performCustomAdjustments(MachineInstr &MI, unsigned NewOpc) {
220220
return true;
221221
}
222222

223+
static bool isRedundantNewDataDest(MachineInstr &MI, const X86Subtarget &ST) {
224+
// add rbx, rbx, rax / add rbx, rax, rbx -> add rbx, rax
225+
const MCInstrDesc &Desc = MI.getDesc();
226+
Register Reg0 = MI.getOperand(0).getReg();
227+
const MachineOperand &Op1 = MI.getOperand(1);
228+
if (!Op1.isReg())
229+
return false;
230+
Register Reg1 = Op1.getReg();
231+
if (Reg1 == Reg0)
232+
return true;
233+
234+
// Op1 and Op2 may be commutable for ND instructions.
235+
if (!Desc.isCommutable() || Desc.getNumOperands() < 3 ||
236+
!MI.getOperand(2).isReg() || MI.getOperand(2).getReg() != Reg0)
237+
return false;
238+
// Opcode may change after commute, e.g. SHRD -> SHLD
239+
// TODO: Add test for this after ND SHRD/SHLD is supported
240+
ST.getInstrInfo()->commuteInstruction(MI, false, 1, 2);
241+
return true;
242+
}
243+
223244
static bool CompressEVEXImpl(MachineInstr &MI, const X86Subtarget &ST) {
224245
uint64_t TSFlags = MI.getDesc().TSFlags;
225246

@@ -241,26 +262,35 @@ static bool CompressEVEXImpl(MachineInstr &MI, const X86Subtarget &ST) {
241262
//
242263
// For AVX512 cases, EVEX prefix is needed in order to carry this information
243264
// thus preventing the transformation to VEX encoding.
265+
bool IsND = X86II::hasNewDataDest(TSFlags);
244266
if (TSFlags & X86II::EVEX_B)
245-
return false;
267+
if (!IsND || !isRedundantNewDataDest(MI, ST))
268+
return false;
246269

247270
ArrayRef<X86CompressEVEXTableEntry> Table = ArrayRef(X86CompressEVEXTable);
248271

249272
unsigned Opc = MI.getOpcode();
250273
const auto *I = llvm::lower_bound(Table, Opc);
251-
if (I == Table.end() || I->OldOpc != Opc)
274+
if (I == Table.end() || I->OldOpc != Opc) {
275+
assert(!IsND && "Missing entry for ND instruction");
252276
return false;
277+
}
253278

254-
if (usesExtendedRegister(MI) || !checkVEXInstPredicate(Opc, ST) ||
255-
!performCustomAdjustments(MI, I->NewOpc))
256-
return false;
279+
if (!IsND) {
280+
if (usesExtendedRegister(MI) || !checkVEXInstPredicate(Opc, ST) ||
281+
!performCustomAdjustments(MI, I->NewOpc))
282+
return false;
283+
}
257284

258285
const MCInstrDesc &NewDesc = ST.getInstrInfo()->get(I->NewOpc);
259286
MI.setDesc(NewDesc);
260287
uint64_t Encoding = NewDesc.TSFlags & X86II::EncodingMask;
261288
auto AsmComment =
262289
(Encoding == X86II::VEX) ? X86::AC_EVEX_2_VEX : X86::AC_EVEX_2_LEGACY;
263290
MI.setAsmPrinterFlag(AsmComment);
291+
if (IsND)
292+
MI.tieOperands(0, 1);
293+
264294
return true;
265295
}
266296

llvm/test/CodeGen/X86/apx/adc.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ define i16 @adc16ri8(i16 %a, i16 %x, i16 %y) nounwind {
114114
; CHECK: # %bb.0:
115115
; CHECK-NEXT: subw %si, %dx, %ax
116116
; CHECK-NEXT: adcw $0, %di, %ax
117-
; CHECK-NEXT: addl $123, %eax, %eax
117+
; CHECK-NEXT: addl $123, %eax
118118
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
119119
; CHECK-NEXT: retq
120120
%s = add i16 %a, 123
@@ -168,7 +168,7 @@ define i16 @adc16ri(i16 %a, i16 %x, i16 %y) nounwind {
168168
; CHECK: # %bb.0:
169169
; CHECK-NEXT: subw %si, %dx, %ax
170170
; CHECK-NEXT: adcw $0, %di, %ax
171-
; CHECK-NEXT: addl $1234, %eax, %eax # imm = 0x4D2
171+
; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2
172172
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
173173
; CHECK-NEXT: retq
174174
%s = add i16 %a, 1234
@@ -265,7 +265,7 @@ define i16 @adc16mi8(ptr %ptr, i16 %x, i16 %y) nounwind {
265265
; CHECK: # %bb.0:
266266
; CHECK-NEXT: subw %si, %dx, %ax
267267
; CHECK-NEXT: adcw $0, (%rdi), %ax
268-
; CHECK-NEXT: addl $123, %eax, %eax
268+
; CHECK-NEXT: addl $123, %eax
269269
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
270270
; CHECK-NEXT: retq
271271
%a = load i16, ptr %ptr
@@ -323,7 +323,7 @@ define i16 @adc16mi(ptr %ptr, i16 %x, i16 %y) nounwind {
323323
; CHECK: # %bb.0:
324324
; CHECK-NEXT: subw %si, %dx, %ax
325325
; CHECK-NEXT: adcw $0, (%rdi), %ax
326-
; CHECK-NEXT: addl $1234, %eax, %eax # imm = 0x4D2
326+
; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2
327327
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
328328
; CHECK-NEXT: retq
329329
%a = load i16, ptr %ptr
@@ -442,7 +442,7 @@ define void @adc16mi_legacy(ptr %ptr, i16 %x, i16 %y) nounwind {
442442
; CHECK: # %bb.0:
443443
; CHECK-NEXT: subw %si, %dx, %ax
444444
; CHECK-NEXT: adcw $0, (%rdi), %ax
445-
; CHECK-NEXT: addl $1234, %eax, %eax # imm = 0x4D2
445+
; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2
446446
; CHECK-NEXT: movw %ax, (%rdi)
447447
; CHECK-NEXT: retq
448448
%a = load i16, ptr %ptr

llvm/test/CodeGen/X86/apx/add.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ define i16 @add16mi8(ptr %a) {
206206
; CHECK-LABEL: add16mi8:
207207
; CHECK: # %bb.0: # %entry
208208
; CHECK-NEXT: movzwl (%rdi), %eax
209-
; CHECK-NEXT: addl $123, %eax, %eax
209+
; CHECK-NEXT: addl $123, %eax
210210
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
211211
; CHECK-NEXT: retq
212212
entry:
@@ -252,7 +252,7 @@ define i16 @add16mi(ptr %a) {
252252
; CHECK-LABEL: add16mi:
253253
; CHECK: # %bb.0: # %entry
254254
; CHECK-NEXT: movzwl (%rdi), %eax
255-
; CHECK-NEXT: addl $1234, %eax, %eax # imm = 0x4D2
255+
; CHECK-NEXT: addl $1234, %eax # imm = 0x4D2
256256
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
257257
; CHECK-NEXT: retq
258258
entry:
@@ -489,8 +489,8 @@ define i1 @add64ri_reloc(i16 %k) {
489489
; CHECK: # %bb.0:
490490
; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
491491
; CHECK-NEXT: movswq %di, %rax
492-
; CHECK-NEXT: addq %rax, %rax, %rax
493-
; CHECK-NEXT: addq $val, %rax, %rax
492+
; CHECK-NEXT: addq %rax, %rax
493+
; CHECK-NEXT: addq $val, %rax
494494
; CHECK-NEXT: setne %al
495495
; CHECK-NEXT: retq
496496
%g = getelementptr inbounds i16, ptr @val, i16 %k

llvm/test/CodeGen/X86/apx/compress-evex.mir

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ name: ndd_2_non_ndd_xor
66
body: |
77
bb.0.entry:
88
liveins: $rdi, $rsi
9-
; CHECK: xorq %rsi, %rax, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x31,0xf0]
9+
; CHECK: xorq %rsi, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x31,0xf0]
1010
renamable $rax = ADD64rr_ND killed renamable $rdi, renamable $rsi, implicit-def dead $eflags
1111
renamable $rax = XOR64rr_ND killed renamable $rax, killed renamable $rsi, implicit-def dead $eflags
1212
RET64 $rax
@@ -17,7 +17,7 @@ name: ndd_2_non_ndd_sub
1717
body: |
1818
bb.0.entry:
1919
liveins: $rdi, $rsi
20-
; CHECK: subq %rsi, %rax, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x29,0xf0]
20+
; CHECK: subq %rsi, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x29,0xf0]
2121
renamable $rax = ADD64rr_ND killed renamable $rdi, renamable $rsi, implicit-def dead $eflags
2222
renamable $rax = SUB64rr_ND killed renamable $rax, killed renamable $rsi, implicit-def dead $eflags
2323
RET64 $rax
@@ -28,7 +28,7 @@ name: ndd_2_non_ndd_commutable
2828
body: |
2929
bb.0.entry:
3030
liveins: $rdi, $rsi
31-
; CHECK: xorq %rax, %rsi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x31,0xc6]
31+
; CHECK: xorq %rsi, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x31,0xf0]
3232
renamable $rax = ADD64rr_ND killed renamable $rdi, renamable $rsi, implicit-def dead $eflags
3333
renamable $rax = XOR64rr_ND killed renamable $rsi, killed renamable $rax, implicit-def dead $eflags
3434
RET64 $rax

llvm/test/CodeGen/X86/apx/dec.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ define i16 @dec16m(ptr %ptr) {
5757
; CHECK-LABEL: dec16m:
5858
; CHECK: # %bb.0: # %entry
5959
; CHECK-NEXT: movzwl (%rdi), %eax
60-
; CHECK-NEXT: decl %eax, %eax
60+
; CHECK-NEXT: decl %eax
6161
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
6262
; CHECK-NEXT: retq
6363
entry:

llvm/test/CodeGen/X86/apx/inc.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ define i16 @inc16m(ptr %ptr) {
5757
; CHECK-LABEL: inc16m:
5858
; CHECK: # %bb.0: # %entry
5959
; CHECK-NEXT: movzwl (%rdi), %eax
60-
; CHECK-NEXT: incl %eax, %eax
60+
; CHECK-NEXT: incl %eax
6161
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
6262
; CHECK-NEXT: retq
6363
entry:

llvm/test/CodeGen/X86/apx/or.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ define i16 @or16mi8(ptr %a) {
207207
; CHECK-LABEL: or16mi8:
208208
; CHECK: # %bb.0: # %entry
209209
; CHECK-NEXT: movzwl (%rdi), %eax
210-
; CHECK-NEXT: orl $123, %eax, %eax
210+
; CHECK-NEXT: orl $123, %eax
211211
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
212212
; CHECK-NEXT: retq
213213
entry:
@@ -253,7 +253,7 @@ define i16 @or16mi(ptr %a) {
253253
; CHECK-LABEL: or16mi:
254254
; CHECK: # %bb.0: # %entry
255255
; CHECK-NEXT: movzwl (%rdi), %eax
256-
; CHECK-NEXT: orl $1234, %eax, %eax # imm = 0x4D2
256+
; CHECK-NEXT: orl $1234, %eax # imm = 0x4D2
257257
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
258258
; CHECK-NEXT: retq
259259
entry:

llvm/test/CodeGen/X86/apx/sbb.ll

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ define i16 @sbb16ri8(i16 %a, i16 %x, i16 %y) nounwind {
114114
; CHECK: # %bb.0:
115115
; CHECK-NEXT: subw %si, %dx, %ax
116116
; CHECK-NEXT: sbbw $0, %di, %ax
117-
; CHECK-NEXT: addl $-123, %eax, %eax
117+
; CHECK-NEXT: addl $-123, %eax
118118
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
119119
; CHECK-NEXT: retq
120120
%s = sub i16 %a, 123
@@ -129,7 +129,7 @@ define i32 @sbb32ri8(i32 %a, i32 %x, i32 %y) nounwind {
129129
; CHECK: # %bb.0:
130130
; CHECK-NEXT: subl %esi, %edx, %eax
131131
; CHECK-NEXT: sbbl $0, %edi, %eax
132-
; CHECK-NEXT: addl $-123, %eax, %eax
132+
; CHECK-NEXT: addl $-123, %eax
133133
; CHECK-NEXT: retq
134134
%s = sub i32 %a, 123
135135
%k = icmp ugt i32 %x, %y
@@ -143,7 +143,7 @@ define i64 @sbb64ri8(i64 %a, i64 %x, i64 %y) nounwind {
143143
; CHECK: # %bb.0:
144144
; CHECK-NEXT: subq %rsi, %rdx, %rax
145145
; CHECK-NEXT: sbbq $0, %rdi, %rax
146-
; CHECK-NEXT: addq $-123, %rax, %rax
146+
; CHECK-NEXT: addq $-123, %rax
147147
; CHECK-NEXT: retq
148148
%s = sub i64 %a, 123
149149
%k = icmp ugt i64 %x, %y
@@ -157,7 +157,7 @@ define i8 @sbb8ri(i8 %a, i8 %x, i8 %y) nounwind {
157157
; CHECK: # %bb.0:
158158
; CHECK-NEXT: subb %sil, %dl, %al
159159
; CHECK-NEXT: sbbb $0, %dil, %al
160-
; CHECK-NEXT: addb $-123, %al, %al
160+
; CHECK-NEXT: addb $-123, %al
161161
; CHECK-NEXT: retq
162162
%s = sub i8 %a, 123
163163
%k = icmp ugt i8 %x, %y
@@ -171,7 +171,7 @@ define i16 @sbb16ri(i16 %a, i16 %x, i16 %y) nounwind {
171171
; CHECK: # %bb.0:
172172
; CHECK-NEXT: subw %si, %dx, %ax
173173
; CHECK-NEXT: sbbw $0, %di, %ax
174-
; CHECK-NEXT: addl $-1234, %eax, %eax # imm = 0xFB2E
174+
; CHECK-NEXT: addl $-1234, %eax # imm = 0xFB2E
175175
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
176176
; CHECK-NEXT: retq
177177
%s = sub i16 %a, 1234
@@ -186,7 +186,7 @@ define i32 @sbb32ri(i32 %a, i32 %x, i32 %y) nounwind {
186186
; CHECK: # %bb.0:
187187
; CHECK-NEXT: subl %esi, %edx, %eax
188188
; CHECK-NEXT: sbbl $0, %edi, %eax
189-
; CHECK-NEXT: addl $-123456, %eax, %eax # imm = 0xFFFE1DC0
189+
; CHECK-NEXT: addl $-123456, %eax # imm = 0xFFFE1DC0
190190
; CHECK-NEXT: retq
191191
%s = sub i32 %a, 123456
192192
%k = icmp ugt i32 %x, %y
@@ -200,7 +200,7 @@ define i64 @sbb64ri(i64 %a, i64 %x, i64 %y) nounwind {
200200
; CHECK: # %bb.0:
201201
; CHECK-NEXT: subq %rsi, %rdx, %rax
202202
; CHECK-NEXT: sbbq $0, %rdi, %rax
203-
; CHECK-NEXT: addq $-123456, %rax, %rax # imm = 0xFFFE1DC0
203+
; CHECK-NEXT: addq $-123456, %rax # imm = 0xFFFE1DC0
204204
; CHECK-NEXT: retq
205205
%s = sub i64 %a, 123456
206206
%k = icmp ugt i64 %x, %y
@@ -270,7 +270,7 @@ define i16 @sbb16mi8(ptr %ptr, i16 %x, i16 %y) nounwind {
270270
; CHECK: # %bb.0:
271271
; CHECK-NEXT: subw %si, %dx, %ax
272272
; CHECK-NEXT: sbbw $0, (%rdi), %ax
273-
; CHECK-NEXT: addl $-123, %eax, %eax
273+
; CHECK-NEXT: addl $-123, %eax
274274
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
275275
; CHECK-NEXT: retq
276276
%a = load i16, ptr %ptr
@@ -286,7 +286,7 @@ define i32 @sbb32mi8(ptr %ptr, i32 %x, i32 %y) nounwind {
286286
; CHECK: # %bb.0:
287287
; CHECK-NEXT: subl %esi, %edx, %eax
288288
; CHECK-NEXT: sbbl $0, (%rdi), %eax
289-
; CHECK-NEXT: addl $-123, %eax, %eax
289+
; CHECK-NEXT: addl $-123, %eax
290290
; CHECK-NEXT: retq
291291
%a = load i32, ptr %ptr
292292
%s = sub i32 %a, 123
@@ -301,7 +301,7 @@ define i64 @sbb64mi8(ptr %ptr, i64 %x, i64 %y) nounwind {
301301
; CHECK: # %bb.0:
302302
; CHECK-NEXT: subq %rsi, %rdx, %rax
303303
; CHECK-NEXT: sbbq $0, (%rdi), %rax
304-
; CHECK-NEXT: addq $-123, %rax, %rax
304+
; CHECK-NEXT: addq $-123, %rax
305305
; CHECK-NEXT: retq
306306
%a = load i64, ptr %ptr
307307
%s = sub i64 %a, 123
@@ -316,7 +316,7 @@ define i8 @sbb8mi(ptr %ptr, i8 %x, i8 %y) nounwind {
316316
; CHECK: # %bb.0:
317317
; CHECK-NEXT: subb %sil, %dl, %al
318318
; CHECK-NEXT: sbbb $0, (%rdi), %al
319-
; CHECK-NEXT: addb $-123, %al, %al
319+
; CHECK-NEXT: addb $-123, %al
320320
; CHECK-NEXT: retq
321321
%a = load i8, ptr %ptr
322322
%s = sub i8 %a, 123
@@ -331,7 +331,7 @@ define i16 @sbb16mi(ptr %ptr, i16 %x, i16 %y) nounwind {
331331
; CHECK: # %bb.0:
332332
; CHECK-NEXT: subw %si, %dx, %ax
333333
; CHECK-NEXT: sbbw $0, (%rdi), %ax
334-
; CHECK-NEXT: addl $-1234, %eax, %eax # imm = 0xFB2E
334+
; CHECK-NEXT: addl $-1234, %eax # imm = 0xFB2E
335335
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
336336
; CHECK-NEXT: retq
337337
%a = load i16, ptr %ptr
@@ -347,7 +347,7 @@ define i32 @sbb32mi(ptr %ptr, i32 %x, i32 %y) nounwind {
347347
; CHECK: # %bb.0:
348348
; CHECK-NEXT: subl %esi, %edx, %eax
349349
; CHECK-NEXT: sbbl $0, (%rdi), %eax
350-
; CHECK-NEXT: addl $-123456, %eax, %eax # imm = 0xFFFE1DC0
350+
; CHECK-NEXT: addl $-123456, %eax # imm = 0xFFFE1DC0
351351
; CHECK-NEXT: retq
352352
%a = load i32, ptr %ptr
353353
%s = sub i32 %a, 123456
@@ -362,7 +362,7 @@ define i64 @sbb64mi(ptr %ptr, i64 %x, i64 %y) nounwind {
362362
; CHECK: # %bb.0:
363363
; CHECK-NEXT: subq %rsi, %rdx, %rax
364364
; CHECK-NEXT: sbbq $0, (%rdi), %rax
365-
; CHECK-NEXT: addq $-123456, %rax, %rax # imm = 0xFFFE1DC0
365+
; CHECK-NEXT: addq $-123456, %rax # imm = 0xFFFE1DC0
366366
; CHECK-NEXT: retq
367367
%a = load i64, ptr %ptr
368368
%s = sub i64 %a, 123456

llvm/test/CodeGen/X86/apx/sub.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ define i16 @sub16mr(ptr %a, i16 noundef %b) {
173173
; CHECK-LABEL: sub16mr:
174174
; CHECK: # %bb.0: # %entry
175175
; CHECK-NEXT: movzwl (%rdi), %eax
176-
; CHECK-NEXT: subl %esi, %eax, %eax
176+
; CHECK-NEXT: subl %esi, %eax
177177
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
178178
; CHECK-NEXT: retq
179179
entry:
@@ -208,7 +208,7 @@ define i16 @sub16mi8(ptr %a) {
208208
; CHECK-LABEL: sub16mi8:
209209
; CHECK: # %bb.0: # %entry
210210
; CHECK-NEXT: movzwl (%rdi), %eax
211-
; CHECK-NEXT: addl $-123, %eax, %eax
211+
; CHECK-NEXT: addl $-123, %eax
212212
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
213213
; CHECK-NEXT: retq
214214
entry:
@@ -254,7 +254,7 @@ define i16 @sub16mi(ptr %a) {
254254
; CHECK-LABEL: sub16mi:
255255
; CHECK: # %bb.0: # %entry
256256
; CHECK-NEXT: movzwl (%rdi), %eax
257-
; CHECK-NEXT: addl $-1234, %eax, %eax # imm = 0xFB2E
257+
; CHECK-NEXT: addl $-1234, %eax # imm = 0xFB2E
258258
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
259259
; CHECK-NEXT: retq
260260
entry:

llvm/test/CodeGen/X86/apx/xor.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ define i16 @xor16mi8(ptr %a) {
207207
; CHECK-LABEL: xor16mi8:
208208
; CHECK: # %bb.0: # %entry
209209
; CHECK-NEXT: movzwl (%rdi), %eax
210-
; CHECK-NEXT: xorl $123, %eax, %eax
210+
; CHECK-NEXT: xorl $123, %eax
211211
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
212212
; CHECK-NEXT: retq
213213
entry:
@@ -253,7 +253,7 @@ define i16 @xor16mi(ptr %a) {
253253
; CHECK-LABEL: xor16mi:
254254
; CHECK: # %bb.0: # %entry
255255
; CHECK-NEXT: movzwl (%rdi), %eax
256-
; CHECK-NEXT: xorl $1234, %eax, %eax # imm = 0x4D2
256+
; CHECK-NEXT: xorl $1234, %eax # imm = 0x4D2
257257
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
258258
; CHECK-NEXT: retq
259259
entry:

0 commit comments

Comments
 (0)