ret float %r
}
-define <4 x float> @fsub_neg_y_vector(<4 x float> %x, <4 x float>%y) {
+define <4 x float> @fsub_neg_y_vector(<4 x float> %x, <4 x float> %y) {
; ANY-LABEL: fsub_neg_y_vector:
; ANY: # %bb.0:
; ANY-NEXT: mulps {{.*}}(%rip), %xmm0
ret <4 x float> %r
}
+define <4 x float> @fsub_neg_y_vector_nonuniform(<4 x float> %x, <4 x float> %y) {
+; ANY-LABEL: fsub_neg_y_vector_nonuniform:
+; ANY: # %bb.0:
+; ANY-NEXT: mulps {{.*}}(%rip), %xmm0
+; ANY-NEXT: xorps {{.*}}(%rip), %xmm0
+; ANY-NEXT: retq
+ %mul = fmul <4 x float> %x, <float 5.0, float 6.0, float 7.0, float 8.0>
+ %add = fadd <4 x float> %mul, %y
+ %r = fsub nsz reassoc <4 x float> %y, %add
+ ret <4 x float> %r
+}
+
define float @fsub_neg_y_commute(float %x, float %y) {
; ANY-LABEL: fsub_neg_y_commute:
; ANY: # %bb.0: