@@ -73,23 +73,17 @@ define <2 x i64> @freeze_zext_vec(<2 x i16> %a0) nounwind {
73
73
define i32 @freeze_abs (i32 %a0 ) nounwind {
74
74
; X86-LABEL: freeze_abs:
75
75
; X86: # %bb.0:
76
- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
77
- ; X86-NEXT: movl %eax, %ecx
78
- ; X86-NEXT: negl %ecx
79
- ; X86-NEXT: cmovsl %eax, %ecx
76
+ ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
80
77
; X86-NEXT: movl %ecx, %eax
81
78
; X86-NEXT: negl %eax
82
79
; X86-NEXT: cmovsl %ecx, %eax
83
80
; X86-NEXT: retl
84
81
;
85
82
; X64-LABEL: freeze_abs:
86
83
; X64: # %bb.0:
87
- ; X64-NEXT: movl %edi, %ecx
88
- ; X64-NEXT: negl %ecx
89
- ; X64-NEXT: cmovsl %edi, %ecx
90
- ; X64-NEXT: movl %ecx, %eax
84
+ ; X64-NEXT: movl %edi, %eax
91
85
; X64-NEXT: negl %eax
92
- ; X64-NEXT: cmovsl %ecx , %eax
86
+ ; X64-NEXT: cmovsl %edi , %eax
93
87
; X64-NEXT: retq
94
88
%x = call i32 @llvm.abs.i32 (i32 %a0 , i1 0 )
95
89
%f = freeze i32 %x
@@ -104,16 +98,11 @@ define <4 x i32> @freeze_abs_vec(<4 x i32> %a0) nounwind {
104
98
; X86-NEXT: psrad $31, %xmm1
105
99
; X86-NEXT: pxor %xmm1, %xmm0
106
100
; X86-NEXT: psubd %xmm1, %xmm0
107
- ; X86-NEXT: movdqa %xmm0, %xmm1
108
- ; X86-NEXT: psrad $31, %xmm1
109
- ; X86-NEXT: pxor %xmm1, %xmm0
110
- ; X86-NEXT: psubd %xmm1, %xmm0
111
101
; X86-NEXT: retl
112
102
;
113
103
; X64-LABEL: freeze_abs_vec:
114
104
; X64: # %bb.0:
115
105
; X64-NEXT: pabsd %xmm0, %xmm0
116
- ; X64-NEXT: pabsd %xmm0, %xmm0
117
106
; X64-NEXT: retq
118
107
%x = call <4 x i32 > @llvm.abs.v4i32 (<4 x i32 > %a0 , i1 0 )
119
108
%f = freeze <4 x i32 > %x
@@ -124,23 +113,17 @@ define <4 x i32> @freeze_abs_vec(<4 x i32> %a0) nounwind {
124
113
define i32 @freeze_abs_undef (i32 %a0 ) nounwind {
125
114
; X86-LABEL: freeze_abs_undef:
126
115
; X86: # %bb.0:
127
- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
128
- ; X86-NEXT: movl %eax, %ecx
129
- ; X86-NEXT: negl %ecx
130
- ; X86-NEXT: cmovsl %eax, %ecx
116
+ ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
131
117
; X86-NEXT: movl %ecx, %eax
132
118
; X86-NEXT: negl %eax
133
119
; X86-NEXT: cmovsl %ecx, %eax
134
120
; X86-NEXT: retl
135
121
;
136
122
; X64-LABEL: freeze_abs_undef:
137
123
; X64: # %bb.0:
138
- ; X64-NEXT: movl %edi, %ecx
139
- ; X64-NEXT: negl %ecx
140
- ; X64-NEXT: cmovsl %edi, %ecx
141
- ; X64-NEXT: movl %ecx, %eax
124
+ ; X64-NEXT: movl %edi, %eax
142
125
; X64-NEXT: negl %eax
143
- ; X64-NEXT: cmovsl %ecx , %eax
126
+ ; X64-NEXT: cmovsl %edi , %eax
144
127
; X64-NEXT: retq
145
128
%x = call i32 @llvm.abs.i32 (i32 %a0 , i1 -1 )
146
129
%f = freeze i32 %x
@@ -155,16 +138,11 @@ define <4 x i32> @freeze_abs_undef_vec(<4 x i32> %a0) nounwind {
155
138
; X86-NEXT: psrad $31, %xmm1
156
139
; X86-NEXT: pxor %xmm1, %xmm0
157
140
; X86-NEXT: psubd %xmm1, %xmm0
158
- ; X86-NEXT: movdqa %xmm0, %xmm1
159
- ; X86-NEXT: psrad $31, %xmm1
160
- ; X86-NEXT: pxor %xmm1, %xmm0
161
- ; X86-NEXT: psubd %xmm1, %xmm0
162
141
; X86-NEXT: retl
163
142
;
164
143
; X64-LABEL: freeze_abs_undef_vec:
165
144
; X64: # %bb.0:
166
145
; X64-NEXT: pabsd %xmm0, %xmm0
167
- ; X64-NEXT: pabsd %xmm0, %xmm0
168
146
; X64-NEXT: retq
169
147
%x = call <4 x i32 > @llvm.abs.v4i32 (<4 x i32 > %a0 , i1 -1 )
170
148
%f = freeze <4 x i32 > %x
0 commit comments