Skip to content

Commit 4388e73

Browse files
committed
[X86] Address reviews
1 parent 7caceb1 commit 4388e73

File tree

2 files changed

+24
-26
lines changed

2 files changed

+24
-26
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53761,9 +53761,7 @@ static SDValue combinei64TruncSrlConstant(SDValue N, EVT VT, SelectionDAG &DAG,
5376153761

5376253762
if (Opcode == ISD::ADD)
5376353763
return DAG.getZeroExtendInReg(NewOpNode, DL, CleanUpVT);
53764-
53765-
SDValue CleanUp = DAG.getAnyExtOrTrunc(NewOpNode, DL, CleanUpVT);
53766-
return DAG.getAnyExtOrTrunc(CleanUp, DL, VT);
53764+
return NewOpNode;
5376753765
}
5376853766

5376953767
/// Attempt to pre-truncate inputs to arithmetic ops if it will simplify

llvm/test/CodeGen/X86/combine-i64-trunc-srl-add.ll

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,12 @@ define i32 @test_trunc_add(i64 %x) {
131131
define i32 @test_trunc_sub(i64 %x) {
132132
; X64-LABEL: test_trunc_sub:
133133
; X64: # %bb.0:
134-
; X64-NEXT: shrq $48, %rdi
135-
; X64-NEXT: addl $65522, %edi # imm = 0xFFF2
136-
; X64-NEXT: movzwl %di, %eax
134+
; X64-NEXT: shrq $49, %rdi
135+
; X64-NEXT: leal 32762(%rdi), %eax
136+
; X64-NEXT: andl $32767, %eax # imm = 0x7FFF
137137
; X64-NEXT: retq
138-
%sub = sub i64 %x, 3940649673949184
139-
%shr = lshr i64 %sub, 48
138+
%sub = sub i64 %x, 3377699720527872
139+
%shr = lshr i64 %sub, 49
140140
%conv = trunc i64 %shr to i32
141141
ret i32 %conv
142142
}
@@ -145,12 +145,12 @@ define i32 @test_trunc_and_1(i64 %x) {
145145
; X64-LABEL: test_trunc_and_1:
146146
; X64: # %bb.0:
147147
; X64-NEXT: movq %rdi, %rax
148-
; X64-NEXT: shrq $48, %rax
149-
; X64-NEXT: andl $14, %eax
148+
; X64-NEXT: shrq $50, %rax
149+
; X64-NEXT: andl $3, %eax
150150
; X64-NEXT: # kill: def $eax killed $eax killed $rax
151151
; X64-NEXT: retq
152152
%and = and i64 %x, 3940649673949184
153-
%shr = lshr i64 %and, 48
153+
%shr = lshr i64 %and, 50
154154
%conv = trunc i64 %shr to i32
155155
ret i32 %conv
156156
}
@@ -159,12 +159,12 @@ define i32 @test_trunc_or_1(i64 %x) {
159159
; X64-LABEL: test_trunc_or_1:
160160
; X64: # %bb.0:
161161
; X64-NEXT: movq %rdi, %rax
162-
; X64-NEXT: shrq $48, %rax
163-
; X64-NEXT: orl $14, %eax
162+
; X64-NEXT: shrq $50, %rax
163+
; X64-NEXT: orl $3, %eax
164164
; X64-NEXT: # kill: def $eax killed $eax killed $rax
165165
; X64-NEXT: retq
166166
%or = or i64 %x, 3940649673949184
167-
%shr = lshr i64 %or, 48
167+
%shr = lshr i64 %or, 50
168168
%conv = trunc i64 %shr to i32
169169
ret i32 %conv
170170
}
@@ -173,12 +173,12 @@ define i32 @test_trunc_xor_1(i64 %x) {
173173
; X64-LABEL: test_trunc_xor_1:
174174
; X64: # %bb.0:
175175
; X64-NEXT: movq %rdi, %rax
176-
; X64-NEXT: shrq $48, %rax
177-
; X64-NEXT: xorl $14, %eax
176+
; X64-NEXT: shrq $50, %rax
177+
; X64-NEXT: xorl $3, %eax
178178
; X64-NEXT: # kill: def $eax killed $eax killed $rax
179179
; X64-NEXT: retq
180180
%xor = xor i64 %x, 3940649673949184
181-
%shr = lshr i64 %xor, 48
181+
%shr = lshr i64 %xor, 50
182182
%conv = trunc i64 %shr to i32
183183
ret i32 %conv
184184
}
@@ -187,12 +187,12 @@ define i32 @test_trunc_and_2(i64 %x) {
187187
; X64-LABEL: test_trunc_and_2:
188188
; X64: # %bb.0:
189189
; X64-NEXT: movq %rdi, %rax
190-
; X64-NEXT: shrq $48, %rax
191-
; X64-NEXT: andl $13, %eax
190+
; X64-NEXT: shrq $45, %rax
191+
; X64-NEXT: andl $111, %eax
192192
; X64-NEXT: # kill: def $eax killed $eax killed $rax
193193
; X64-NEXT: retq
194194
%and = and i64 %x, 3940649673949183
195-
%shr = lshr i64 %and, 48
195+
%shr = lshr i64 %and, 45
196196
%conv = trunc i64 %shr to i32
197197
ret i32 %conv
198198
}
@@ -201,12 +201,12 @@ define i32 @test_trunc_or_2(i64 %x) {
201201
; X64-LABEL: test_trunc_or_2:
202202
; X64: # %bb.0:
203203
; X64-NEXT: movq %rdi, %rax
204-
; X64-NEXT: shrq $48, %rax
205-
; X64-NEXT: orl $13, %eax
204+
; X64-NEXT: shrq $45, %rax
205+
; X64-NEXT: orl $111, %eax
206206
; X64-NEXT: # kill: def $eax killed $eax killed $rax
207207
; X64-NEXT: retq
208208
%or = or i64 %x, 3940649673949183
209-
%shr = lshr i64 %or, 48
209+
%shr = lshr i64 %or, 45
210210
%conv = trunc i64 %shr to i32
211211
ret i32 %conv
212212
}
@@ -215,12 +215,12 @@ define i32 @test_trunc_xor_2(i64 %x) {
215215
; X64-LABEL: test_trunc_xor_2:
216216
; X64: # %bb.0:
217217
; X64-NEXT: movq %rdi, %rax
218-
; X64-NEXT: shrq $48, %rax
219-
; X64-NEXT: xorl $13, %eax
218+
; X64-NEXT: shrq $45, %rax
219+
; X64-NEXT: xorl $111, %eax
220220
; X64-NEXT: # kill: def $eax killed $eax killed $rax
221221
; X64-NEXT: retq
222222
%xor = xor i64 %x, 3940649673949183
223-
%shr = lshr i64 %xor, 48
223+
%shr = lshr i64 %xor, 45
224224
%conv = trunc i64 %shr to i32
225225
ret i32 %conv
226226
}

0 commit comments

Comments
 (0)