@@ -68,24 +68,24 @@ if.else:
68
68
ret i32 %res
69
69
}
70
70
71
- define i32 @mm3 (i1 %pred , i32 %val , i32 %e1 , i128 %e2 , i128 %e3 , i128 %e4 , i128 %e5 ) {
71
+ define i64 @mm3 (i1 %pred , i64 %val , i64 %e1 , i128 %e2 , i128 %e3 , i128 %e4 , i128 %e5 ) {
72
72
; CHECK-LABEL: mm3:
73
73
; CHECK: # %bb.0: # %entry
74
- ; CHECK-NEXT: movl %esi , %eax
74
+ ; CHECK-NEXT: movq %rsi , %rax
75
75
; CHECK-NEXT: testb $1, %dil
76
- ; CHECK-NEXT: movl %esi , %r10d
76
+ ; CHECK-NEXT: movq %rsi , %r10
77
77
; CHECK-NEXT: jne .LBB2_2
78
78
; CHECK-NEXT: # %bb.1: # %if.false
79
79
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rsi
80
80
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rdi
81
- ; CHECK-NEXT: imull %edx, %edx
82
- ; CHECK-NEXT: movslq %edx, %r10
83
- ; CHECK-NEXT: movq %rcx, %rax
84
- ; CHECK-NEXT: movl %edx, %r9d
85
- ; CHECK-NEXT: mulq %r10
86
- ; CHECK-NEXT: imulq %r10, %r8
81
+ ; CHECK-NEXT: imulq %rdx, %rdx
82
+ ; CHECK-NEXT: movq %rdx, %r10
87
83
; CHECK-NEXT: sarq $63, %r10
84
+ ; CHECK-NEXT: movq %rcx, %rax
85
+ ; CHECK-NEXT: movq %rdx, %r9
86
+ ; CHECK-NEXT: mulq %rdx
88
87
; CHECK-NEXT: imulq %rcx, %r10
88
+ ; CHECK-NEXT: imulq %r9, %r8
89
89
; CHECK-NEXT: addq %rdx, %r8
90
90
; CHECK-NEXT: addq %r10, %r8
91
91
; CHECK-NEXT: addq {{[0-9]+}}(%rsp), %rax
@@ -106,9 +106,9 @@ define i32 @mm3(i1 %pred, i32 %val, i32 %e1, i128 %e2, i128 %e3, i128 %e4, i128
106
106
; CHECK-NEXT: orq %rdi, %r10
107
107
; CHECK-NEXT: testb $64, %sil
108
108
; CHECK-NEXT: cmovneq %rax, %r10
109
- ; CHECK-NEXT: movl %r9d , %eax
109
+ ; CHECK-NEXT: movq %r9 , %rax
110
110
; CHECK-NEXT: .LBB2_2: # %if.endif
111
- ; CHECK-NEXT: addl %r10d , %eax
111
+ ; CHECK-NEXT: addq %r10 , %rax
112
112
; CHECK-NEXT: retq
113
113
entry:
114
114
br i1 %pred , label %if.true , label %if.false
@@ -117,19 +117,19 @@ if.true:
117
117
br label %if.endif
118
118
119
119
if.false:
120
- %f1 = mul i32 %e1 , %e1
121
- %f3 = sext i32 %f1 to i128
120
+ %f1 = mul i64 %e1 , %e1
121
+ %f3 = sext i64 %f1 to i128
122
122
%f4 = mul i128 %e2 , %f3
123
123
%f6 = add i128 %e3 , %f4
124
124
%f7 = xor i128 %e4 , %f6
125
125
%f8 = xor i128 %e5 , %f7
126
126
%a1 = ashr i128 %f8 , %e5
127
- %f5 = trunc i128 %a1 to i32
127
+ %f5 = trunc i128 %a1 to i64
128
128
br label %if.endif
129
129
130
130
if.endif:
131
- %r1 = phi i32 [ %val , %if.true ], [ %f1 , %if.false ]
132
- %r2 = phi i32 [ %val , %if.true ], [ %f5 , %if.false ]
133
- %res = add i32 %r1 , %r2
134
- ret i32 %res
131
+ %r1 = phi i64 [ %val , %if.true ], [ %f1 , %if.false ]
132
+ %r2 = phi i64 [ %val , %if.true ], [ %f5 , %if.false ]
133
+ %res = add i64 %r1 , %r2
134
+ ret i64 %res
135
135
}
0 commit comments