Skip to content

Commit d1133cf

Browse files
KanRobertAlexisPerry
authored andcommitted
[X86][CodeGen] Not promote some binary ops from i16 to i32 if we have NDD variant
1 parent 902b2ef commit d1133cf

File tree

17 files changed

+151
-322
lines changed

17 files changed

+151
-322
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57550,16 +57550,20 @@ bool X86TargetLowering::isTypeDesirableForOp(unsigned Opc, EVT VT) const {
5755057550
case ISD::SIGN_EXTEND:
5755157551
case ISD::ZERO_EXTEND:
5755257552
case ISD::ANY_EXTEND:
57553+
case ISD::MUL:
57554+
return false;
5755357555
case ISD::SHL:
5755457556
case ISD::SRA:
5755557557
case ISD::SRL:
5755657558
case ISD::SUB:
5755757559
case ISD::ADD:
57558-
case ISD::MUL:
5755957560
case ISD::AND:
5756057561
case ISD::OR:
5756157562
case ISD::XOR:
57562-
return false;
57563+
// NDD instruction never has "partial register write" issue b/c it has
57564+
// destination register's upper bits [63:OSIZE]) zeroed even when
57565+
// OSIZE=8/16.
57566+
return Subtarget.hasNDD();
5756357567
}
5756457568
}
5756557569

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

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,7 @@ define i16 @adc16ri8(i16 %a, i16 %x, i16 %y) nounwind {
113113
; CHECK-LABEL: adc16ri8:
114114
; CHECK: # %bb.0:
115115
; CHECK-NEXT: cmpw %si, %dx # encoding: [0x66,0x39,0xf2]
116-
; CHECK-NEXT: adcw $0, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xd7,0x00]
117-
; CHECK-NEXT: addl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x7b]
118-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
116+
; CHECK-NEXT: adcw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xd7,0x7b]
119117
; CHECK-NEXT: retq # encoding: [0xc3]
120118
%s = add i16 %a, 123
121119
%k = icmp ugt i16 %x, %y
@@ -167,10 +165,8 @@ define i16 @adc16ri(i16 %a, i16 %x, i16 %y) nounwind {
167165
; CHECK-LABEL: adc16ri:
168166
; CHECK: # %bb.0:
169167
; CHECK-NEXT: cmpw %si, %dx # encoding: [0x66,0x39,0xf2]
170-
; CHECK-NEXT: adcw $0, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xd7,0x00]
171-
; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00]
168+
; CHECK-NEXT: adcw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xd7,0xd2,0x04]
172169
; CHECK-NEXT: # imm = 0x4D2
173-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
174170
; CHECK-NEXT: retq # encoding: [0xc3]
175171
%s = add i16 %a, 1234
176172
%k = icmp ugt i16 %x, %y
@@ -267,9 +263,7 @@ define i16 @adc16mi8(ptr %ptr, i16 %x, i16 %y) nounwind {
267263
; CHECK-LABEL: adc16mi8:
268264
; CHECK: # %bb.0:
269265
; CHECK-NEXT: cmpw %si, %dx # encoding: [0x66,0x39,0xf2]
270-
; CHECK-NEXT: adcw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x17,0x00]
271-
; CHECK-NEXT: addl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x7b]
272-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
266+
; CHECK-NEXT: adcw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x17,0x7b]
273267
; CHECK-NEXT: retq # encoding: [0xc3]
274268
%a = load i16, ptr %ptr
275269
%s = add i16 %a, 123
@@ -325,10 +319,8 @@ define i16 @adc16mi(ptr %ptr, i16 %x, i16 %y) nounwind {
325319
; CHECK-LABEL: adc16mi:
326320
; CHECK: # %bb.0:
327321
; CHECK-NEXT: cmpw %si, %dx # encoding: [0x66,0x39,0xf2]
328-
; CHECK-NEXT: adcw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x17,0x00]
329-
; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00]
322+
; CHECK-NEXT: adcw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x17,0xd2,0x04]
330323
; CHECK-NEXT: # imm = 0x4D2
331-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
332324
; CHECK-NEXT: retq # encoding: [0xc3]
333325
%a = load i16, ptr %ptr
334326
%s = add i16 %a, 1234
@@ -447,10 +439,8 @@ define void @adc16mi_legacy(ptr %ptr, i16 %x, i16 %y) nounwind {
447439
; CHECK-LABEL: adc16mi_legacy:
448440
; CHECK: # %bb.0:
449441
; CHECK-NEXT: cmpw %si, %dx # encoding: [0x66,0x39,0xf2]
450-
; CHECK-NEXT: adcw $0, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x17,0x00]
451-
; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00]
442+
; CHECK-NEXT: adcw $1234, (%rdi) # encoding: [0x66,0x81,0x17,0xd2,0x04]
452443
; CHECK-NEXT: # imm = 0x4D2
453-
; CHECK-NEXT: movw %ax, (%rdi) # encoding: [0x66,0x89,0x07]
454444
; CHECK-NEXT: retq # encoding: [0xc3]
455445
%a = load i16, ptr %ptr
456446
%s = add i16 %a, 1234

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

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@ entry:
2020
define i16 @add16rr(i16 noundef %a, i16 noundef %b) {
2121
; CHECK-LABEL: add16rr:
2222
; CHECK: # %bb.0: # %entry
23-
; CHECK-NEXT: addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7]
24-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
23+
; CHECK-NEXT: addw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0xf7]
2524
; CHECK-NEXT: retq # encoding: [0xc3]
2625
;
2726
; NF-LABEL: add16rr:
2827
; NF: # %bb.0: # %entry
29-
; NF-NEXT: {nf} addl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x01,0xf7]
30-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
28+
; NF-NEXT: {nf} addw %si, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x01,0xf7]
3129
; NF-NEXT: retq # encoding: [0xc3]
3230
entry:
3331
%add = add i16 %a, %b
@@ -131,14 +129,12 @@ entry:
131129
define i16 @add16ri8(i16 noundef %a) {
132130
; CHECK-LABEL: add16ri8:
133131
; CHECK: # %bb.0: # %entry
134-
; CHECK-NEXT: addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xc7,0x7b]
135-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
132+
; CHECK-NEXT: addw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xc7,0x7b]
136133
; CHECK-NEXT: retq # encoding: [0xc3]
137134
;
138135
; NF-LABEL: add16ri8:
139136
; NF: # %bb.0: # %entry
140-
; NF-NEXT: {nf} addl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xc7,0x7b]
141-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
137+
; NF-NEXT: {nf} addw $123, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0xc7,0x7b]
142138
; NF-NEXT: retq # encoding: [0xc3]
143139
entry:
144140
%add = add i16 %a, 123
@@ -193,16 +189,14 @@ entry:
193189
define i16 @add16ri(i16 noundef %a) {
194190
; CHECK-LABEL: add16ri:
195191
; CHECK: # %bb.0: # %entry
196-
; CHECK-NEXT: addl $1234, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0xd2,0x04,0x00,0x00]
192+
; CHECK-NEXT: addw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xc7,0xd2,0x04]
197193
; CHECK-NEXT: # imm = 0x4D2
198-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
199194
; CHECK-NEXT: retq # encoding: [0xc3]
200195
;
201196
; NF-LABEL: add16ri:
202197
; NF: # %bb.0: # %entry
203-
; NF-NEXT: {nf} addl $1234, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xc7,0xd2,0x04,0x00,0x00]
198+
; NF-NEXT: {nf} addw $1234, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0xc7,0xd2,0x04]
204199
; NF-NEXT: # imm = 0x4D2
205-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
206200
; NF-NEXT: retq # encoding: [0xc3]
207201
entry:
208202
%add = add i16 %a, 1234
@@ -310,16 +304,12 @@ entry:
310304
define i16 @add16mi8(ptr %a) {
311305
; CHECK-LABEL: add16mi8:
312306
; CHECK: # %bb.0: # %entry
313-
; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
314-
; CHECK-NEXT: addl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x7b]
315-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
307+
; CHECK-NEXT: addw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x07,0x7b]
316308
; CHECK-NEXT: retq # encoding: [0xc3]
317309
;
318310
; NF-LABEL: add16mi8:
319311
; NF: # %bb.0: # %entry
320-
; NF-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
321-
; NF-NEXT: addl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xc0,0x7b]
322-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
312+
; NF-NEXT: {nf} addw $123, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0x07,0x7b]
323313
; NF-NEXT: retq # encoding: [0xc3]
324314
entry:
325315
%t= load i16, ptr %a
@@ -378,18 +368,14 @@ entry:
378368
define i16 @add16mi(ptr %a) {
379369
; CHECK-LABEL: add16mi:
380370
; CHECK: # %bb.0: # %entry
381-
; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
382-
; CHECK-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00]
371+
; CHECK-NEXT: addw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x07,0xd2,0x04]
383372
; CHECK-NEXT: # imm = 0x4D2
384-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
385373
; CHECK-NEXT: retq # encoding: [0xc3]
386374
;
387375
; NF-LABEL: add16mi:
388376
; NF: # %bb.0: # %entry
389-
; NF-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
390-
; NF-NEXT: addl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x05,0xd2,0x04,0x00,0x00]
377+
; NF-NEXT: {nf} addw $1234, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0x07,0xd2,0x04]
391378
; NF-NEXT: # imm = 0x4D2
392-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
393379
; NF-NEXT: retq # encoding: [0xc3]
394380
entry:
395381
%t= load i16, ptr %a

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

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,12 @@ entry:
133133
define i16 @and16ri8(i16 noundef %a) {
134134
; CHECK-LABEL: and16ri8:
135135
; CHECK: # %bb.0: # %entry
136-
; CHECK-NEXT: andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xe7,0x7b]
137-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
136+
; CHECK-NEXT: andw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xe7,0x7b]
138137
; CHECK-NEXT: retq # encoding: [0xc3]
139138
;
140139
; NF-LABEL: and16ri8:
141140
; NF: # %bb.0: # %entry
142-
; NF-NEXT: {nf} andl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xe7,0x7b]
143-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
141+
; NF-NEXT: {nf} andw $123, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0xe7,0x7b]
144142
; NF-NEXT: retq # encoding: [0xc3]
145143
entry:
146144
%and = and i16 %a, 123
@@ -195,16 +193,14 @@ entry:
195193
define i16 @and16ri(i16 noundef %a) {
196194
; CHECK-LABEL: and16ri:
197195
; CHECK: # %bb.0: # %entry
198-
; CHECK-NEXT: andl $1234, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0xd2,0x04,0x00,0x00]
196+
; CHECK-NEXT: andw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xe7,0xd2,0x04]
199197
; CHECK-NEXT: # imm = 0x4D2
200-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
201198
; CHECK-NEXT: retq # encoding: [0xc3]
202199
;
203200
; NF-LABEL: and16ri:
204201
; NF: # %bb.0: # %entry
205-
; NF-NEXT: {nf} andl $1234, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xe7,0xd2,0x04,0x00,0x00]
202+
; NF-NEXT: {nf} andw $1234, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0xe7,0xd2,0x04]
206203
; NF-NEXT: # imm = 0x4D2
207-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
208204
; NF-NEXT: retq # encoding: [0xc3]
209205
entry:
210206
%and = and i16 %a, 1234
@@ -312,16 +308,12 @@ entry:
312308
define i16 @and16mi8(ptr %a) {
313309
; CHECK-LABEL: and16mi8:
314310
; CHECK: # %bb.0: # %entry
315-
; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
316-
; CHECK-NEXT: andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b]
317-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
311+
; CHECK-NEXT: andw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x27,0x7b]
318312
; CHECK-NEXT: retq # encoding: [0xc3]
319313
;
320314
; NF-LABEL: and16mi8:
321315
; NF: # %bb.0: # %entry
322-
; NF-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
323-
; NF-NEXT: andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b]
324-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
316+
; NF-NEXT: {nf} andw $123, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0x27,0x7b]
325317
; NF-NEXT: retq # encoding: [0xc3]
326318
entry:
327319
%t= load i16, ptr %a
@@ -382,18 +374,14 @@ entry:
382374
define i16 @and16mi(ptr %a) {
383375
; CHECK-LABEL: and16mi:
384376
; CHECK: # %bb.0: # %entry
385-
; CHECK-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
386-
; CHECK-NEXT: andl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x25,0xd2,0x04,0x00,0x00]
377+
; CHECK-NEXT: andw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x27,0xd2,0x04]
387378
; CHECK-NEXT: # imm = 0x4D2
388-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
389379
; CHECK-NEXT: retq # encoding: [0xc3]
390380
;
391381
; NF-LABEL: and16mi:
392382
; NF: # %bb.0: # %entry
393-
; NF-NEXT: movzwl (%rdi), %eax # encoding: [0x0f,0xb7,0x07]
394-
; NF-NEXT: andl $1234, %eax # EVEX TO LEGACY Compression encoding: [0x25,0xd2,0x04,0x00,0x00]
383+
; NF-NEXT: {nf} andw $1234, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0x27,0xd2,0x04]
395384
; NF-NEXT: # imm = 0x4D2
396-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
397385
; NF-NEXT: retq # encoding: [0xc3]
398386
entry:
399387
%t= load i16, ptr %a
@@ -469,7 +457,7 @@ define i1 @andflag8rr(i8 %a, i8 %b) {
469457
define i1 @andflag16rr(i16 %a, i16 %b) {
470458
; CHECK-LABEL: andflag16rr:
471459
; CHECK: # %bb.0:
472-
; CHECK-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6]
460+
; CHECK-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
473461
; CHECK-NEXT: andw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x21,0xc7]
474462
; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0]
475463
; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
@@ -478,7 +466,7 @@ define i1 @andflag16rr(i16 %a, i16 %b) {
478466
;
479467
; NF-LABEL: andflag16rr:
480468
; NF: # %bb.0:
481-
; NF-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6]
469+
; NF-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
482470
; NF-NEXT: andw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x21,0xc7]
483471
; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0]
484472
; NF-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
@@ -564,7 +552,7 @@ define i1 @andflag8rm(ptr %ptr, i8 %b) {
564552
define i1 @andflag16rm(ptr %ptr, i16 %b) {
565553
; CHECK-LABEL: andflag16rm:
566554
; CHECK: # %bb.0:
567-
; CHECK-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6]
555+
; CHECK-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
568556
; CHECK-NEXT: andw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x23,0x07]
569557
; CHECK-NEXT: sete %al # encoding: [0x0f,0x94,0xc0]
570558
; CHECK-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
@@ -573,7 +561,7 @@ define i1 @andflag16rm(ptr %ptr, i16 %b) {
573561
;
574562
; NF-LABEL: andflag16rm:
575563
; NF: # %bb.0:
576-
; NF-NEXT: notl %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xf7,0xd6]
564+
; NF-NEXT: notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
577565
; NF-NEXT: andw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x23,0x07]
578566
; NF-NEXT: sete %al # encoding: [0x0f,0x94,0xc0]
579567
; NF-NEXT: movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]

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

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -396,9 +396,8 @@ define void @ctest16ri_zf(i16 noundef %a, i16 noundef %b) {
396396
;
397397
; NDD-LABEL: ctest16ri_zf:
398398
; NDD: # %bb.0: # %entry
399-
; NDD-NEXT: andl $1234, %esi, %eax # imm = 0x4D2
400399
; NDD-NEXT: testw %di, %di
401-
; NDD-NEXT: ctestnew {dfv=zf} %ax, %ax
400+
; NDD-NEXT: ctestnew {dfv=zf} $1234, %si # imm = 0x4D2
402401
; NDD-NEXT: jne .LBB10_1
403402
; NDD-NEXT: # %bb.2: # %if.then
404403
; NDD-NEXT: xorl %eax, %eax
@@ -704,10 +703,8 @@ define void @ctest16mi_zf(i16 noundef %a, ptr %ptr) {
704703
;
705704
; NDD-LABEL: ctest16mi_zf:
706705
; NDD: # %bb.0: # %entry
707-
; NDD-NEXT: movzwl (%rsi), %eax
708-
; NDD-NEXT: andl $1234, %eax # imm = 0x4D2
709706
; NDD-NEXT: testw %di, %di
710-
; NDD-NEXT: ctestnew {dfv=zf} %ax, %ax
707+
; NDD-NEXT: ctestnew {dfv=zf} $1234, (%rsi) # imm = 0x4D2
711708
; NDD-NEXT: jne .LBB18_1
712709
; NDD-NEXT: # %bb.2: # %if.then
713710
; NDD-NEXT: xorl %eax, %eax
@@ -746,10 +743,8 @@ define void @ctest32mi_zf(i32 noundef %a, ptr %ptr) {
746743
;
747744
; NDD-LABEL: ctest32mi_zf:
748745
; NDD: # %bb.0: # %entry
749-
; NDD-NEXT: movzwl (%rsi), %eax
750-
; NDD-NEXT: andl $12345, %eax # imm = 0x3039
751746
; NDD-NEXT: testl %edi, %edi
752-
; NDD-NEXT: ctestnew {dfv=zf} %ax, %ax
747+
; NDD-NEXT: ctestnew {dfv=zf} $12345, (%rsi) # imm = 0x3039
753748
; NDD-NEXT: jne .LBB19_1
754749
; NDD-NEXT: # %bb.2: # %if.then
755750
; NDD-NEXT: xorl %eax, %eax

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

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@ entry:
2020
define i16 @dec16r(i16 noundef %a) {
2121
; CHECK-LABEL: dec16r:
2222
; CHECK: # %bb.0: # %entry
23-
; CHECK-NEXT: decl %edi, %eax
24-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
23+
; CHECK-NEXT: decw %di, %ax
2524
; CHECK-NEXT: retq
2625
;
2726
; NF-LABEL: dec16r:
2827
; NF: # %bb.0: # %entry
29-
; NF-NEXT: {nf} decl %edi, %eax
30-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
28+
; NF-NEXT: {nf} decw %di, %ax
3129
; NF-NEXT: retq
3230
entry:
3331
%dec = sub i16 %a, 1
@@ -83,16 +81,12 @@ entry:
8381
define i16 @dec16m(ptr %ptr) {
8482
; CHECK-LABEL: dec16m:
8583
; CHECK: # %bb.0: # %entry
86-
; CHECK-NEXT: movzwl (%rdi), %eax
87-
; CHECK-NEXT: decl %eax
88-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
84+
; CHECK-NEXT: decw (%rdi), %ax
8985
; CHECK-NEXT: retq
9086
;
9187
; NF-LABEL: dec16m:
9288
; NF: # %bb.0: # %entry
93-
; NF-NEXT: movzwl (%rdi), %eax
94-
; NF-NEXT: decl %eax
95-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
89+
; NF-NEXT: {nf} decw (%rdi), %ax
9690
; NF-NEXT: retq
9791
entry:
9892
%a = load i16, ptr %ptr

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

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@ entry:
2020
define i16 @inc16r(i16 noundef %a) {
2121
; CHECK-LABEL: inc16r:
2222
; CHECK: # %bb.0: # %entry
23-
; CHECK-NEXT: incl %edi, %eax
24-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
23+
; CHECK-NEXT: incw %di, %ax
2524
; CHECK-NEXT: retq
2625
;
2726
; NF-LABEL: inc16r:
2827
; NF: # %bb.0: # %entry
29-
; NF-NEXT: {nf} incl %edi, %eax
30-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
28+
; NF-NEXT: {nf} incw %di, %ax
3129
; NF-NEXT: retq
3230
entry:
3331
%inc = add i16 %a, 1
@@ -83,16 +81,12 @@ entry:
8381
define i16 @inc16m(ptr %ptr) {
8482
; CHECK-LABEL: inc16m:
8583
; CHECK: # %bb.0: # %entry
86-
; CHECK-NEXT: movzwl (%rdi), %eax
87-
; CHECK-NEXT: incl %eax
88-
; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
84+
; CHECK-NEXT: incw (%rdi), %ax
8985
; CHECK-NEXT: retq
9086
;
9187
; NF-LABEL: inc16m:
9288
; NF: # %bb.0: # %entry
93-
; NF-NEXT: movzwl (%rdi), %eax
94-
; NF-NEXT: incl %eax
95-
; NF-NEXT: # kill: def $ax killed $ax killed $eax
89+
; NF-NEXT: {nf} incw (%rdi), %ax
9690
; NF-NEXT: retq
9791
entry:
9892
%a = load i16, ptr %ptr

0 commit comments

Comments
 (0)