@@ -131,12 +131,12 @@ define i32 @test_trunc_add(i64 %x) {
131131define 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