@@ -11,32 +11,34 @@ define void @func(ptr %a, ptr %b, ptr %c, ptr %d) nounwind {
1111; CHECK-LABEL: func:
1212; CHECK: # %bb.0: # %entry
1313; CHECK-NEXT: movslq (%rsi), %rax
14- ; CHECK-NEXT: movl $4, %esi
15- ; CHECK-NEXT: subq %rax, %rsi
14+ ; CHECK-NEXT: movl $4, %r8d
15+ ; CHECK-NEXT: subq %rax, %r8
1616; CHECK-NEXT: movq (%rdx), %rax
1717; CHECK-NEXT: movswl 8(%rdi), %edx
18- ; CHECK-NEXT: movswl (%rax,%rsi ,2), %eax
18+ ; CHECK-NEXT: movswl (%rax,%r8 ,2), %eax
1919; CHECK-NEXT: imull %edx, %eax
2020; CHECK-NEXT: addl $2138875574, %eax # imm = 0x7F7CA6B6
2121; CHECK-NEXT: cmpl $2138875574, %eax # imm = 0x7F7CA6B6
2222; CHECK-NEXT: setl %dl
2323; CHECK-NEXT: cmpl $-8608074, %eax # imm = 0xFF7CA6B6
24- ; CHECK-NEXT: setge %sil
25- ; CHECK-NEXT: andb %dl, %sil
26- ; CHECK-NEXT: movzbl %sil , %edx
27- ; CHECK-NEXT: movslq %eax, %rsi
28- ; CHECK-NEXT: movq %rsi , %rdi
24+ ; CHECK-NEXT: setge %r8b
25+ ; CHECK-NEXT: andb %dl, %r8b
26+ ; CHECK-NEXT: movzbl %r8b , %edx
27+ ; CHECK-NEXT: movslq %eax, %r8
28+ ; CHECK-NEXT: movq %r8 , %r9
2929; CHECK-NEXT: negl %edx
30- ; CHECK-NEXT: subq %rax, %rdi
30+ ; CHECK-NEXT: subq %rax, %r9
3131; CHECK-NEXT: xorl %eax, %eax
3232; CHECK-NEXT: testl $-2, %edx
33- ; CHECK-NEXT: cmovneq %rax, %rdi
34- ; CHECK-NEXT: testl %esi , %esi
35- ; CHECK-NEXT: cmovnsq %rax, %rdi
33+ ; CHECK-NEXT: cmovneq %rax, %r9
34+ ; CHECK-NEXT: testl %r8d , %r8d
35+ ; CHECK-NEXT: cmovnsq %rax, %r9
3636; CHECK-NEXT: movq (%rcx), %rax
37- ; CHECK-NEXT: subq %rdi , %rsi
38- ; CHECK-NEXT: leaq -2138875574(%rax,%rsi ), %rax
37+ ; CHECK-NEXT: subq %r9 , %r8
38+ ; CHECK-NEXT: leaq -2138875574(%rax,%r8 ), %rax
3939; CHECK-NEXT: movq %rax, (%rcx)
40+ ; CHECK-NEXT: movl $0, (%rdi)
41+ ; CHECK-NEXT: movl $0, (%rsi)
4042; CHECK-NEXT: retq
4143entry:
4244 %tmp103 = getelementptr inbounds [40 x i16 ], ptr %a , i64 0 , i64 4
@@ -77,5 +79,15 @@ entry:
7779 %alphaXbetaY = add i64 %alphaX , %tmp115
7880 %transformed = add i64 %alphaXbetaY , 9040145182981852475
7981 store i64 %transformed , ptr %d , align 8
82+ %tmp200 = zext i16 undef to i32
83+ %tmp201 = zext i16 undef to i32
84+ %tmp202 = shl i32 %tmp201 , 16
85+ %tmp203 = or i32 %tmp200 , %tmp202
86+ store i32 %tmp203 , ptr %a , align 4
87+ %tmp210 = sext i16 undef to i32
88+ %tmp211 = sext i16 undef to i32
89+ %tmp212 = shl i32 %tmp211 , 16
90+ %tmp213 = or i32 %tmp210 , %tmp212
91+ store i32 %tmp213 , ptr %b , align 4
8092 ret void
8193}
0 commit comments