@@ -7,8 +7,9 @@ define i1 @test_ult_trunc_add(i64 %x) {
7
7
; X64-LABEL: test_ult_trunc_add:
8
8
; X64: # %bb.0:
9
9
; X64-NEXT: shrq $48, %rdi
10
- ; X64-NEXT: addl $-65522, %edi # imm = 0xFFFF000E
11
- ; X64-NEXT: cmpl $3, %edi
10
+ ; X64-NEXT: addl $14, %edi
11
+ ; X64-NEXT: movzwl %di, %eax
12
+ ; X64-NEXT: cmpl $3, %eax
12
13
; X64-NEXT: setb %al
13
14
; X64-NEXT: retq
14
15
%add = add i64 %x , 3940649673949184
@@ -22,8 +23,9 @@ define i1 @test_ult_add(i64 %x) {
22
23
; X64-LABEL: test_ult_add:
23
24
; X64: # %bb.0:
24
25
; X64-NEXT: shrq $48, %rdi
25
- ; X64-NEXT: addl $-65522, %edi # imm = 0xFFFF000E
26
- ; X64-NEXT: cmpl $3, %edi
26
+ ; X64-NEXT: addl $14, %edi
27
+ ; X64-NEXT: movzwl %di, %eax
28
+ ; X64-NEXT: cmpl $3, %eax
27
29
; X64-NEXT: setb %al
28
30
; X64-NEXT: retq
29
31
%add = add i64 3940649673949184 , %x
@@ -35,8 +37,9 @@ define i1 @test_ugt_trunc_add(i64 %x) {
35
37
; X64-LABEL: test_ugt_trunc_add:
36
38
; X64: # %bb.0:
37
39
; X64-NEXT: shrq $48, %rdi
38
- ; X64-NEXT: addl $-65522, %edi # imm = 0xFFFF000E
39
- ; X64-NEXT: cmpl $4, %edi
40
+ ; X64-NEXT: addl $14, %edi
41
+ ; X64-NEXT: movzwl %di, %eax
42
+ ; X64-NEXT: cmpl $4, %eax
40
43
; X64-NEXT: setae %al
41
44
; X64-NEXT: retq
42
45
%add = add i64 %x , 3940649673949184
@@ -116,7 +119,8 @@ define i32 @test_trunc_add(i64 %x) {
116
119
; X64-LABEL: test_trunc_add:
117
120
; X64: # %bb.0:
118
121
; X64-NEXT: shrq $48, %rdi
119
- ; X64-NEXT: leal -65522(%rdi), %eax
122
+ ; X64-NEXT: addl $14, %edi
123
+ ; X64-NEXT: movzwl %di, %eax
120
124
; X64-NEXT: retq
121
125
%add = add i64 %x , 3940649673949184
122
126
%shr = lshr i64 %add , 48
@@ -151,3 +155,20 @@ for.body:
151
155
exit:
152
156
ret i32 0
153
157
}
158
+
159
+ define i64 @pr128309 (i64 %x ) {
160
+ ; X64-LABEL: pr128309:
161
+ ; X64: # %bb.0: # %entry
162
+ ; X64-NEXT: movl %edi, %eax
163
+ ; X64-NEXT: andl $18114, %eax # imm = 0x46C2
164
+ ; X64-NEXT: addl $6, %eax
165
+ ; X64-NEXT: andl %edi, %eax
166
+ ; X64-NEXT: retq
167
+ entry:
168
+ %shl = shl i64 %x , 48
169
+ %and = and i64 %shl , 5098637728136822784
170
+ %add = add i64 %and , 1688849860263936
171
+ %lshr = lshr i64 %add , 48
172
+ %res = and i64 %lshr , %x
173
+ ret i64 %res
174
+ }
0 commit comments