--- /dev/null
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr8 \
+; RUN: -verify-machineinstrs | FileCheck %s
+; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr7 \
+; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=NOP8VEC
+define <16 x i8> @getsmaxi8(<16 x i8> %a, <16 x i8> %b) {
+; CHECK-LABEL: getsmaxi8:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vmaxsb 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmaxi8:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: vmaxsb 2, 2, 3
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp sgt <16 x i8> %a, %b
+ %1 = select <16 x i1> %0, <16 x i8> %a, <16 x i8> %b
+ ret <16 x i8> %1
+}
+
+define <8 x i16> @getsmaxi16(<8 x i16> %a, <8 x i16> %b) {
+; CHECK-LABEL: getsmaxi16:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vmaxsh 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmaxi16:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: vmaxsh 2, 2, 3
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp sgt <8 x i16> %a, %b
+ %1 = select <8 x i1> %0, <8 x i16> %a, <8 x i16> %b
+ ret <8 x i16> %1
+}
+
+define <4 x i32> @getsmaxi32(<4 x i32> %a, <4 x i32> %b) {
+; CHECK-LABEL: getsmaxi32:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vmaxsw 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmaxi32:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: vmaxsw 2, 2, 3
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp sgt <4 x i32> %a, %b
+ %1 = select <4 x i1> %0, <4 x i32> %a, <4 x i32> %b
+ ret <4 x i32> %1
+}
+
+define <2 x i64> @getsmaxi64(<2 x i64> %a, <2 x i64> %b) {
+; CHECK-LABEL: getsmaxi64:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vmaxsd 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmaxi64:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: xxswapd 0, 35
+; NOP8VEC-NEXT: addi 3, 1, -32
+; NOP8VEC-NEXT: addi 4, 1, -48
+; NOP8VEC-NEXT: xxswapd 1, 34
+; NOP8VEC-NEXT: stxvd2x 0, 0, 3
+; NOP8VEC-NEXT: stxvd2x 1, 0, 4
+; NOP8VEC-NEXT: ld 3, -24(1)
+; NOP8VEC-NEXT: ld 4, -40(1)
+; NOP8VEC-NEXT: cmpd 4, 3
+; NOP8VEC-NEXT: li 3, 0
+; NOP8VEC-NEXT: li 4, -1
+; NOP8VEC-NEXT: isel 5, 4, 3, 1
+; NOP8VEC-NEXT: std 5, -8(1)
+; NOP8VEC-NEXT: ld 5, -32(1)
+; NOP8VEC-NEXT: ld 6, -48(1)
+; NOP8VEC-NEXT: cmpd 6, 5
+; NOP8VEC-NEXT: isel 3, 4, 3, 1
+; NOP8VEC-NEXT: std 3, -16(1)
+; NOP8VEC-NEXT: addi 3, 1, -16
+; NOP8VEC-NEXT: lxvd2x 0, 0, 3
+; NOP8VEC-NEXT: xxswapd 36, 0
+; NOP8VEC-NEXT: xxsel 34, 35, 34, 36
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp sgt <2 x i64> %a, %b
+ %1 = select <2 x i1> %0, <2 x i64> %a, <2 x i64> %b
+ ret <2 x i64> %1
+}
+
+define <4 x float> @getsmaxf32(<4 x float> %a, <4 x float> %b) {
+; CHECK-LABEL: getsmaxf32:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xvmaxsp 34, 34, 35
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmaxf32:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: xvmaxsp 34, 34, 35
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = fcmp fast oge <4 x float> %a, %b
+ %1 = select <4 x i1> %0, <4 x float> %a, <4 x float> %b
+ ret <4 x float> %1
+}
+
+define <2 x double> @getsmaxf64(<2 x double> %a, <2 x double> %b) {
+; CHECK-LABEL: getsmaxf64:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xvmaxdp 34, 34, 35
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmaxf64:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: xvmaxdp 34, 34, 35
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = fcmp fast oge <2 x double> %a, %b
+ %1 = select <2 x i1> %0, <2 x double> %a, <2 x double> %b
+ ret <2 x double> %1
+}
+
+define <16 x i8> @getsmini8(<16 x i8> %a, <16 x i8> %b) {
+; CHECK-LABEL: getsmini8:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vminsb 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmini8:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: vminsb 2, 2, 3
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp slt <16 x i8> %a, %b
+ %1 = select <16 x i1> %0, <16 x i8> %a, <16 x i8> %b
+ ret <16 x i8> %1
+}
+
+define <8 x i16> @getsmini16(<8 x i16> %a, <8 x i16> %b) {
+; CHECK-LABEL: getsmini16:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vminsh 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmini16:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: vminsh 2, 2, 3
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp slt <8 x i16> %a, %b
+ %1 = select <8 x i1> %0, <8 x i16> %a, <8 x i16> %b
+ ret <8 x i16> %1
+}
+
+define <4 x i32> @getsmini32(<4 x i32> %a, <4 x i32> %b) {
+; CHECK-LABEL: getsmini32:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vminsw 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmini32:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: vminsw 2, 2, 3
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp slt <4 x i32> %a, %b
+ %1 = select <4 x i1> %0, <4 x i32> %a, <4 x i32> %b
+ ret <4 x i32> %1
+}
+
+define <2 x i64> @getsmini64(<2 x i64> %a, <2 x i64> %b) {
+; CHECK-LABEL: getsmini64:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vminsd 2, 2, 3
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsmini64:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: xxswapd 0, 35
+; NOP8VEC-NEXT: addi 3, 1, -32
+; NOP8VEC-NEXT: addi 4, 1, -48
+; NOP8VEC-NEXT: xxswapd 1, 34
+; NOP8VEC-NEXT: stxvd2x 0, 0, 3
+; NOP8VEC-NEXT: stxvd2x 1, 0, 4
+; NOP8VEC-NEXT: ld 3, -24(1)
+; NOP8VEC-NEXT: ld 4, -40(1)
+; NOP8VEC-NEXT: cmpd 4, 3
+; NOP8VEC-NEXT: li 3, 0
+; NOP8VEC-NEXT: li 4, -1
+; NOP8VEC-NEXT: isel 5, 4, 3, 0
+; NOP8VEC-NEXT: std 5, -8(1)
+; NOP8VEC-NEXT: ld 5, -32(1)
+; NOP8VEC-NEXT: ld 6, -48(1)
+; NOP8VEC-NEXT: cmpd 6, 5
+; NOP8VEC-NEXT: isel 3, 4, 3, 0
+; NOP8VEC-NEXT: std 3, -16(1)
+; NOP8VEC-NEXT: addi 3, 1, -16
+; NOP8VEC-NEXT: lxvd2x 0, 0, 3
+; NOP8VEC-NEXT: xxswapd 36, 0
+; NOP8VEC-NEXT: xxsel 34, 35, 34, 36
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = icmp slt <2 x i64> %a, %b
+ %1 = select <2 x i1> %0, <2 x i64> %a, <2 x i64> %b
+ ret <2 x i64> %1
+}
+
+define <4 x float> @getsminf32(<4 x float> %a, <4 x float> %b) {
+; CHECK-LABEL: getsminf32:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xvminsp 34, 34, 35
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsminf32:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: xvminsp 34, 34, 35
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = fcmp fast ole <4 x float> %a, %b
+ %1 = select <4 x i1> %0, <4 x float> %a, <4 x float> %b
+ ret <4 x float> %1
+}
+
+define <2 x double> @getsminf64(<2 x double> %a, <2 x double> %b) {
+; CHECK-LABEL: getsminf64:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xvmindp 34, 34, 35
+; CHECK-NEXT: blr
+;
+; NOP8VEC-LABEL: getsminf64:
+; NOP8VEC: # %bb.0: # %entry
+; NOP8VEC-NEXT: xvmindp 34, 34, 35
+; NOP8VEC-NEXT: blr
+entry:
+ %0 = fcmp fast ole <2 x double> %a, %b
+ %1 = select <2 x i1> %0, <2 x double> %a, <2 x double> %b
+ ret <2 x double> %1
+}
+
; PC64LE9-NEXT: ld 0, 16(1)
; PC64LE9-NEXT: mtlr 0
; PC64LE9-NEXT: blr
-;
%rem = call <4 x double> @llvm.experimental.constrained.frem.v4f64(
<4 x double> <double 1.000000e+00, double 2.000000e+00,
double 3.000000e+00, double 4.000000e+00>,
; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: xvsqrtdp 35, 0
; PC64LE9-NEXT: blr
-;
entry:
%sqrt = call <4 x double> @llvm.experimental.constrained.sqrt.v4f64(
<4 x double> <double 42.0, double 42.1,
; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
; PC64LE9-NEXT: blr
-;
entry:
%rint = call <3 x float> @llvm.experimental.constrained.rint.v3f32(
<3 x float> <float 42.0, float 43.0, float 44.0>,
define <2 x double> @constrained_vector_maxnum_v2f64() {
; PC64LE-LABEL: constrained_vector_maxnum_v2f64:
; PC64LE: # %bb.0: # %entry
-; PC64LE-NEXT: mflr 0
-; PC64LE-NEXT: std 0, 16(1)
-; PC64LE-NEXT: stdu 1, -64(1)
-; PC64LE-NEXT: .cfi_def_cfa_offset 64
-; PC64LE-NEXT: .cfi_offset lr, 16
; PC64LE-NEXT: addis 3, 2, .LCPI86_0@toc@ha
; PC64LE-NEXT: addis 4, 2, .LCPI86_1@toc@ha
-; PC64LE-NEXT: lfs 1, .LCPI86_0@toc@l(3)
-; PC64LE-NEXT: lfs 2, .LCPI86_1@toc@l(4)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI86_3@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT: addis 3, 2, .LCPI86_2@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI86_3@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI86_2@toc@l(3)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: xxmrghd 34, 1, 0
-; PC64LE-NEXT: addi 1, 1, 64
-; PC64LE-NEXT: ld 0, 16(1)
-; PC64LE-NEXT: mtlr 0
+; PC64LE-NEXT: addi 3, 3, .LCPI86_0@toc@l
+; PC64LE-NEXT: addi 4, 4, .LCPI86_1@toc@l
+; PC64LE-NEXT: lxvd2x 0, 0, 3
+; PC64LE-NEXT: lxvd2x 1, 0, 4
+; PC64LE-NEXT: xxswapd 0, 0
+; PC64LE-NEXT: xxswapd 1, 1
+; PC64LE-NEXT: xvmaxdp 34, 1, 0
; PC64LE-NEXT: blr
;
; PC64LE9-LABEL: constrained_vector_maxnum_v2f64:
; PC64LE9: # %bb.0: # %entry
-; PC64LE9-NEXT: mflr 0
-; PC64LE9-NEXT: std 0, 16(1)
-; PC64LE9-NEXT: stdu 1, -48(1)
-; PC64LE9-NEXT: .cfi_def_cfa_offset 48
-; PC64LE9-NEXT: .cfi_offset lr, 16
; PC64LE9-NEXT: addis 3, 2, .LCPI86_0@toc@ha
-; PC64LE9-NEXT: lfs 1, .LCPI86_0@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI86_0@toc@l
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI86_1@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI86_1@toc@l(3)
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: addis 3, 2, .LCPI86_2@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI86_2@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI86_3@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI86_3@toc@l(3)
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 34, 1, 0
-; PC64LE9-NEXT: addi 1, 1, 48
-; PC64LE9-NEXT: ld 0, 16(1)
-; PC64LE9-NEXT: mtlr 0
+; PC64LE9-NEXT: addi 3, 3, .LCPI86_1@toc@l
+; PC64LE9-NEXT: lxvx 1, 0, 3
+; PC64LE9-NEXT: xvmaxdp 34, 1, 0
; PC64LE9-NEXT: blr
entry:
%max = call <2 x double> @llvm.experimental.constrained.maxnum.v2f64(
; PC64LE: # %bb.0: # %entry
; PC64LE-NEXT: mflr 0
; PC64LE-NEXT: std 0, 16(1)
-; PC64LE-NEXT: stdu 1, -80(1)
-; PC64LE-NEXT: .cfi_def_cfa_offset 80
+; PC64LE-NEXT: stdu 1, -32(1)
+; PC64LE-NEXT: .cfi_def_cfa_offset 32
; PC64LE-NEXT: .cfi_offset lr, 16
-; PC64LE-NEXT: .cfi_offset v31, -16
-; PC64LE-NEXT: li 3, 64
-; PC64LE-NEXT: addis 4, 2, .LCPI88_1@toc@ha
-; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill
; PC64LE-NEXT: addis 3, 2, .LCPI88_0@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI88_1@toc@l(4)
+; PC64LE-NEXT: addis 4, 2, .LCPI88_1@toc@ha
; PC64LE-NEXT: lfs 1, .LCPI88_0@toc@l(3)
+; PC64LE-NEXT: lfs 2, .LCPI88_1@toc@l(4)
; PC64LE-NEXT: bl fmax
; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI88_3@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
; PC64LE-NEXT: addis 3, 2, .LCPI88_2@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI88_3@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI88_2@toc@l(3)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: addis 4, 2, .LCPI88_5@toc@ha
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: addis 3, 2, .LCPI88_4@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI88_5@toc@l(4)
-; PC64LE-NEXT: xxmrghd 63, 1, 0
-; PC64LE-NEXT: lfs 1, .LCPI88_4@toc@l(3)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 64
+; PC64LE-NEXT: addis 4, 2, .LCPI88_3@toc@ha
; PC64LE-NEXT: fmr 3, 1
-; PC64LE-NEXT: xxlor 1, 63, 63
-; PC64LE-NEXT: xxlor 2, 63, 63
-; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: addi 1, 1, 80
+; PC64LE-NEXT: addi 3, 3, .LCPI88_2@toc@l
+; PC64LE-NEXT: addi 4, 4, .LCPI88_3@toc@l
+; PC64LE-NEXT: lxvd2x 0, 0, 3
+; PC64LE-NEXT: lxvd2x 2, 0, 4
+; PC64LE-NEXT: xxswapd 0, 0
+; PC64LE-NEXT: xxswapd 2, 2
+; PC64LE-NEXT: xvmaxdp 2, 2, 0
+; PC64LE-NEXT: xxswapd 0, 2
+; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2
+; PC64LE-NEXT: fmr 1, 0
+; PC64LE-NEXT: addi 1, 1, 32
; PC64LE-NEXT: ld 0, 16(1)
; PC64LE-NEXT: mtlr 0
; PC64LE-NEXT: blr
; PC64LE9: # %bb.0: # %entry
; PC64LE9-NEXT: mflr 0
; PC64LE9-NEXT: std 0, 16(1)
-; PC64LE9-NEXT: stdu 1, -64(1)
-; PC64LE9-NEXT: .cfi_def_cfa_offset 64
+; PC64LE9-NEXT: stdu 1, -32(1)
+; PC64LE9-NEXT: .cfi_def_cfa_offset 32
; PC64LE9-NEXT: .cfi_offset lr, 16
-; PC64LE9-NEXT: .cfi_offset v31, -16
; PC64LE9-NEXT: addis 3, 2, .LCPI88_0@toc@ha
; PC64LE9-NEXT: lfs 1, .LCPI88_0@toc@l(3)
; PC64LE9-NEXT: addis 3, 2, .LCPI88_1@toc@ha
; PC64LE9-NEXT: lfs 2, .LCPI88_1@toc@l(3)
-; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill
; PC64LE9-NEXT: bl fmax
; PC64LE9-NEXT: nop
; PC64LE9-NEXT: addis 3, 2, .LCPI88_2@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI88_2@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI88_2@toc@l
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI88_3@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI88_3@toc@l(3)
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: addis 3, 2, .LCPI88_4@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 63, 1, 0
-; PC64LE9-NEXT: lfs 1, .LCPI88_4@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI88_5@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI88_5@toc@l(3)
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
+; PC64LE9-NEXT: addi 3, 3, .LCPI88_3@toc@l
; PC64LE9-NEXT: fmr 3, 1
-; PC64LE9-NEXT: xscpsgndp 1, 63, 63
-; PC64LE9-NEXT: xscpsgndp 2, 63, 63
-; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: addi 1, 1, 64
+; PC64LE9-NEXT: lxvx 1, 0, 3
+; PC64LE9-NEXT: xvmaxdp 2, 1, 0
+; PC64LE9-NEXT: xxswapd 1, 2
+; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1
+; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2
+; PC64LE9-NEXT: addi 1, 1, 32
; PC64LE9-NEXT: ld 0, 16(1)
; PC64LE9-NEXT: mtlr 0
; PC64LE9-NEXT: blr
define <4 x double> @constrained_vector_maxnum_v4f64() {
; PC64LE-LABEL: constrained_vector_maxnum_v4f64:
; PC64LE: # %bb.0: # %entry
-; PC64LE-NEXT: mflr 0
-; PC64LE-NEXT: std 0, 16(1)
-; PC64LE-NEXT: stdu 1, -80(1)
-; PC64LE-NEXT: .cfi_def_cfa_offset 80
-; PC64LE-NEXT: .cfi_offset lr, 16
-; PC64LE-NEXT: .cfi_offset v31, -16
-; PC64LE-NEXT: li 3, 64
-; PC64LE-NEXT: addis 4, 2, .LCPI89_1@toc@ha
-; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill
; PC64LE-NEXT: addis 3, 2, .LCPI89_0@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI89_1@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI89_0@toc@l(3)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI89_3@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT: addis 3, 2, .LCPI89_2@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI89_3@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI89_2@toc@l(3)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: addis 4, 2, .LCPI89_5@toc@ha
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: addis 3, 2, .LCPI89_4@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI89_5@toc@l(4)
-; PC64LE-NEXT: xxmrghd 63, 1, 0
-; PC64LE-NEXT: lfs 1, .LCPI89_4@toc@l(3)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI89_7@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT: addis 3, 2, .LCPI89_6@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI89_7@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI89_6@toc@l(3)
-; PC64LE-NEXT: bl fmax
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: vmr 2, 31
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: li 3, 64
-; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: xxmrghd 35, 1, 0
-; PC64LE-NEXT: addi 1, 1, 80
-; PC64LE-NEXT: ld 0, 16(1)
-; PC64LE-NEXT: mtlr 0
+; PC64LE-NEXT: addis 4, 2, .LCPI89_1@toc@ha
+; PC64LE-NEXT: addis 5, 2, .LCPI89_2@toc@ha
+; PC64LE-NEXT: addis 6, 2, .LCPI89_3@toc@ha
+; PC64LE-NEXT: addi 3, 3, .LCPI89_0@toc@l
+; PC64LE-NEXT: addi 4, 4, .LCPI89_1@toc@l
+; PC64LE-NEXT: lxvd2x 0, 0, 3
+; PC64LE-NEXT: lxvd2x 1, 0, 4
+; PC64LE-NEXT: addi 3, 5, .LCPI89_2@toc@l
+; PC64LE-NEXT: addi 4, 6, .LCPI89_3@toc@l
+; PC64LE-NEXT: lxvd2x 2, 0, 3
+; PC64LE-NEXT: lxvd2x 3, 0, 4
+; PC64LE-NEXT: xxswapd 0, 0
+; PC64LE-NEXT: xxswapd 1, 1
+; PC64LE-NEXT: xxswapd 2, 2
+; PC64LE-NEXT: xxswapd 3, 3
+; PC64LE-NEXT: xvmaxdp 34, 1, 0
+; PC64LE-NEXT: xvmaxdp 35, 3, 2
; PC64LE-NEXT: blr
;
; PC64LE9-LABEL: constrained_vector_maxnum_v4f64:
; PC64LE9: # %bb.0: # %entry
-; PC64LE9-NEXT: mflr 0
-; PC64LE9-NEXT: std 0, 16(1)
-; PC64LE9-NEXT: stdu 1, -64(1)
-; PC64LE9-NEXT: .cfi_def_cfa_offset 64
-; PC64LE9-NEXT: .cfi_offset lr, 16
-; PC64LE9-NEXT: .cfi_offset v31, -16
; PC64LE9-NEXT: addis 3, 2, .LCPI89_0@toc@ha
-; PC64LE9-NEXT: lfs 1, .LCPI89_0@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI89_0@toc@l
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI89_1@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI89_1@toc@l(3)
-; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
+; PC64LE9-NEXT: addi 3, 3, .LCPI89_1@toc@l
+; PC64LE9-NEXT: lxvx 1, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI89_2@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI89_2@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI89_2@toc@l
+; PC64LE9-NEXT: xvmaxdp 34, 1, 0
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI89_3@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI89_3@toc@l(3)
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: addis 3, 2, .LCPI89_4@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 63, 1, 0
-; PC64LE9-NEXT: lfs 1, .LCPI89_4@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI89_5@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI89_5@toc@l(3)
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: addis 3, 2, .LCPI89_6@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI89_6@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI89_7@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI89_7@toc@l(3)
-; PC64LE9-NEXT: bl fmax
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: vmr 2, 31
-; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 35, 1, 0
-; PC64LE9-NEXT: addi 1, 1, 64
-; PC64LE9-NEXT: ld 0, 16(1)
-; PC64LE9-NEXT: mtlr 0
+; PC64LE9-NEXT: addi 3, 3, .LCPI89_3@toc@l
+; PC64LE9-NEXT: lxvx 1, 0, 3
+; PC64LE9-NEXT: xvmaxdp 35, 1, 0
; PC64LE9-NEXT: blr
entry:
%max = call <4 x double> @llvm.experimental.constrained.maxnum.v4f64(
; PC64LE9-NEXT: ld 0, 16(1)
; PC64LE9-NEXT: mtlr 0
; PC64LE9-NEXT: blr
-;
entry:
%min = call <1 x float> @llvm.experimental.constrained.minnum.v1f32(
<1 x float> <float 42.0>, <1 x float> <float 41.0>,
define <2 x double> @constrained_vector_minnum_v2f64() {
; PC64LE-LABEL: constrained_vector_minnum_v2f64:
; PC64LE: # %bb.0: # %entry
-; PC64LE-NEXT: mflr 0
-; PC64LE-NEXT: std 0, 16(1)
-; PC64LE-NEXT: stdu 1, -64(1)
-; PC64LE-NEXT: .cfi_def_cfa_offset 64
-; PC64LE-NEXT: .cfi_offset lr, 16
; PC64LE-NEXT: addis 3, 2, .LCPI91_0@toc@ha
; PC64LE-NEXT: addis 4, 2, .LCPI91_1@toc@ha
-; PC64LE-NEXT: lfs 1, .LCPI91_0@toc@l(3)
-; PC64LE-NEXT: lfs 2, .LCPI91_1@toc@l(4)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI91_3@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT: addis 3, 2, .LCPI91_2@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI91_3@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI91_2@toc@l(3)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: xxmrghd 34, 1, 0
-; PC64LE-NEXT: addi 1, 1, 64
-; PC64LE-NEXT: ld 0, 16(1)
-; PC64LE-NEXT: mtlr 0
+; PC64LE-NEXT: addi 3, 3, .LCPI91_0@toc@l
+; PC64LE-NEXT: addi 4, 4, .LCPI91_1@toc@l
+; PC64LE-NEXT: lxvd2x 0, 0, 3
+; PC64LE-NEXT: lxvd2x 1, 0, 4
+; PC64LE-NEXT: xxswapd 0, 0
+; PC64LE-NEXT: xxswapd 1, 1
+; PC64LE-NEXT: xvmindp 34, 1, 0
; PC64LE-NEXT: blr
;
; PC64LE9-LABEL: constrained_vector_minnum_v2f64:
; PC64LE9: # %bb.0: # %entry
-; PC64LE9-NEXT: mflr 0
-; PC64LE9-NEXT: std 0, 16(1)
-; PC64LE9-NEXT: stdu 1, -48(1)
-; PC64LE9-NEXT: .cfi_def_cfa_offset 48
-; PC64LE9-NEXT: .cfi_offset lr, 16
; PC64LE9-NEXT: addis 3, 2, .LCPI91_0@toc@ha
-; PC64LE9-NEXT: lfs 1, .LCPI91_0@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI91_0@toc@l
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI91_1@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI91_1@toc@l(3)
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: addis 3, 2, .LCPI91_2@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI91_2@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI91_3@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI91_3@toc@l(3)
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 34, 1, 0
-; PC64LE9-NEXT: addi 1, 1, 48
-; PC64LE9-NEXT: ld 0, 16(1)
-; PC64LE9-NEXT: mtlr 0
+; PC64LE9-NEXT: addi 3, 3, .LCPI91_1@toc@l
+; PC64LE9-NEXT: lxvx 1, 0, 3
+; PC64LE9-NEXT: xvmindp 34, 1, 0
; PC64LE9-NEXT: blr
entry:
%min = call <2 x double> @llvm.experimental.constrained.minnum.v2f64(
; PC64LE: # %bb.0: # %entry
; PC64LE-NEXT: mflr 0
; PC64LE-NEXT: std 0, 16(1)
-; PC64LE-NEXT: stdu 1, -80(1)
-; PC64LE-NEXT: .cfi_def_cfa_offset 80
+; PC64LE-NEXT: stdu 1, -32(1)
+; PC64LE-NEXT: .cfi_def_cfa_offset 32
; PC64LE-NEXT: .cfi_offset lr, 16
-; PC64LE-NEXT: .cfi_offset v31, -16
-; PC64LE-NEXT: li 3, 64
-; PC64LE-NEXT: addis 4, 2, .LCPI93_1@toc@ha
-; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill
; PC64LE-NEXT: addis 3, 2, .LCPI93_0@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI93_1@toc@l(4)
+; PC64LE-NEXT: addis 4, 2, .LCPI93_1@toc@ha
; PC64LE-NEXT: lfs 1, .LCPI93_0@toc@l(3)
+; PC64LE-NEXT: lfs 2, .LCPI93_1@toc@l(4)
; PC64LE-NEXT: bl fmin
; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI93_3@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
; PC64LE-NEXT: addis 3, 2, .LCPI93_2@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI93_3@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI93_2@toc@l(3)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: addis 4, 2, .LCPI93_5@toc@ha
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: addis 3, 2, .LCPI93_4@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI93_5@toc@l(4)
-; PC64LE-NEXT: xxmrghd 63, 1, 0
-; PC64LE-NEXT: lfs 1, .LCPI93_4@toc@l(3)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 64
+; PC64LE-NEXT: addis 4, 2, .LCPI93_3@toc@ha
; PC64LE-NEXT: fmr 3, 1
-; PC64LE-NEXT: xxlor 1, 63, 63
-; PC64LE-NEXT: xxlor 2, 63, 63
-; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: addi 1, 1, 80
+; PC64LE-NEXT: addi 3, 3, .LCPI93_2@toc@l
+; PC64LE-NEXT: addi 4, 4, .LCPI93_3@toc@l
+; PC64LE-NEXT: lxvd2x 0, 0, 3
+; PC64LE-NEXT: lxvd2x 2, 0, 4
+; PC64LE-NEXT: xxswapd 0, 0
+; PC64LE-NEXT: xxswapd 2, 2
+; PC64LE-NEXT: xvmindp 2, 2, 0
+; PC64LE-NEXT: xxswapd 0, 2
+; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2
+; PC64LE-NEXT: fmr 1, 0
+; PC64LE-NEXT: addi 1, 1, 32
; PC64LE-NEXT: ld 0, 16(1)
; PC64LE-NEXT: mtlr 0
; PC64LE-NEXT: blr
; PC64LE9: # %bb.0: # %entry
; PC64LE9-NEXT: mflr 0
; PC64LE9-NEXT: std 0, 16(1)
-; PC64LE9-NEXT: stdu 1, -64(1)
-; PC64LE9-NEXT: .cfi_def_cfa_offset 64
+; PC64LE9-NEXT: stdu 1, -32(1)
+; PC64LE9-NEXT: .cfi_def_cfa_offset 32
; PC64LE9-NEXT: .cfi_offset lr, 16
-; PC64LE9-NEXT: .cfi_offset v31, -16
; PC64LE9-NEXT: addis 3, 2, .LCPI93_0@toc@ha
; PC64LE9-NEXT: lfs 1, .LCPI93_0@toc@l(3)
; PC64LE9-NEXT: addis 3, 2, .LCPI93_1@toc@ha
; PC64LE9-NEXT: lfs 2, .LCPI93_1@toc@l(3)
-; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill
; PC64LE9-NEXT: bl fmin
; PC64LE9-NEXT: nop
; PC64LE9-NEXT: addis 3, 2, .LCPI93_2@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI93_2@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI93_2@toc@l
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI93_3@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI93_3@toc@l(3)
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: addis 3, 2, .LCPI93_4@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 63, 1, 0
-; PC64LE9-NEXT: lfs 1, .LCPI93_4@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI93_5@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI93_5@toc@l(3)
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
+; PC64LE9-NEXT: addi 3, 3, .LCPI93_3@toc@l
; PC64LE9-NEXT: fmr 3, 1
-; PC64LE9-NEXT: xscpsgndp 1, 63, 63
-; PC64LE9-NEXT: xscpsgndp 2, 63, 63
-; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: addi 1, 1, 64
+; PC64LE9-NEXT: lxvx 1, 0, 3
+; PC64LE9-NEXT: xvmindp 2, 1, 0
+; PC64LE9-NEXT: xxswapd 1, 2
+; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1
+; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2
+; PC64LE9-NEXT: addi 1, 1, 32
; PC64LE9-NEXT: ld 0, 16(1)
; PC64LE9-NEXT: mtlr 0
; PC64LE9-NEXT: blr
define <4 x double> @constrained_vector_minnum_v4f64() {
; PC64LE-LABEL: constrained_vector_minnum_v4f64:
; PC64LE: # %bb.0: # %entry
-; PC64LE-NEXT: mflr 0
-; PC64LE-NEXT: std 0, 16(1)
-; PC64LE-NEXT: stdu 1, -80(1)
-; PC64LE-NEXT: .cfi_def_cfa_offset 80
-; PC64LE-NEXT: .cfi_offset lr, 16
-; PC64LE-NEXT: .cfi_offset v31, -16
-; PC64LE-NEXT: li 3, 64
-; PC64LE-NEXT: addis 4, 2, .LCPI94_1@toc@ha
-; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill
; PC64LE-NEXT: addis 3, 2, .LCPI94_0@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI94_1@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI94_0@toc@l(3)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI94_3@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT: addis 3, 2, .LCPI94_2@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI94_3@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI94_2@toc@l(3)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: addis 4, 2, .LCPI94_5@toc@ha
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: addis 3, 2, .LCPI94_4@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI94_5@toc@l(4)
-; PC64LE-NEXT: xxmrghd 63, 1, 0
-; PC64LE-NEXT: lfs 1, .LCPI94_4@toc@l(3)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: addis 4, 2, .LCPI94_7@toc@ha
-; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT: addis 3, 2, .LCPI94_6@toc@ha
-; PC64LE-NEXT: lfs 2, .LCPI94_7@toc@l(4)
-; PC64LE-NEXT: lfs 1, .LCPI94_6@toc@l(3)
-; PC64LE-NEXT: bl fmin
-; PC64LE-NEXT: nop
-; PC64LE-NEXT: li 3, 48
-; PC64LE-NEXT: vmr 2, 31
-; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: li 3, 64
-; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT: xxmrghd 35, 1, 0
-; PC64LE-NEXT: addi 1, 1, 80
-; PC64LE-NEXT: ld 0, 16(1)
-; PC64LE-NEXT: mtlr 0
+; PC64LE-NEXT: addis 4, 2, .LCPI94_1@toc@ha
+; PC64LE-NEXT: addis 5, 2, .LCPI94_2@toc@ha
+; PC64LE-NEXT: addis 6, 2, .LCPI94_3@toc@ha
+; PC64LE-NEXT: addi 3, 3, .LCPI94_0@toc@l
+; PC64LE-NEXT: addi 4, 4, .LCPI94_1@toc@l
+; PC64LE-NEXT: lxvd2x 0, 0, 3
+; PC64LE-NEXT: lxvd2x 1, 0, 4
+; PC64LE-NEXT: addi 3, 5, .LCPI94_2@toc@l
+; PC64LE-NEXT: addi 4, 6, .LCPI94_3@toc@l
+; PC64LE-NEXT: lxvd2x 2, 0, 3
+; PC64LE-NEXT: lxvd2x 3, 0, 4
+; PC64LE-NEXT: xxswapd 0, 0
+; PC64LE-NEXT: xxswapd 1, 1
+; PC64LE-NEXT: xxswapd 2, 2
+; PC64LE-NEXT: xxswapd 3, 3
+; PC64LE-NEXT: xvmindp 34, 1, 0
+; PC64LE-NEXT: xvmindp 35, 3, 2
; PC64LE-NEXT: blr
;
; PC64LE9-LABEL: constrained_vector_minnum_v4f64:
; PC64LE9: # %bb.0: # %entry
-; PC64LE9-NEXT: mflr 0
-; PC64LE9-NEXT: std 0, 16(1)
-; PC64LE9-NEXT: stdu 1, -64(1)
-; PC64LE9-NEXT: .cfi_def_cfa_offset 64
-; PC64LE9-NEXT: .cfi_offset lr, 16
-; PC64LE9-NEXT: .cfi_offset v31, -16
; PC64LE9-NEXT: addis 3, 2, .LCPI94_0@toc@ha
-; PC64LE9-NEXT: lfs 1, .LCPI94_0@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI94_0@toc@l
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI94_1@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI94_1@toc@l(3)
-; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
+; PC64LE9-NEXT: addi 3, 3, .LCPI94_1@toc@l
+; PC64LE9-NEXT: lxvx 1, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI94_2@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI94_2@toc@l(3)
+; PC64LE9-NEXT: addi 3, 3, .LCPI94_2@toc@l
+; PC64LE9-NEXT: xvmindp 34, 1, 0
+; PC64LE9-NEXT: lxvx 0, 0, 3
; PC64LE9-NEXT: addis 3, 2, .LCPI94_3@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI94_3@toc@l(3)
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: addis 3, 2, .LCPI94_4@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 63, 1, 0
-; PC64LE9-NEXT: lfs 1, .LCPI94_4@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI94_5@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI94_5@toc@l(3)
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: addis 3, 2, .LCPI94_6@toc@ha
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT: lfs 1, .LCPI94_6@toc@l(3)
-; PC64LE9-NEXT: addis 3, 2, .LCPI94_7@toc@ha
-; PC64LE9-NEXT: lfs 2, .LCPI94_7@toc@l(3)
-; PC64LE9-NEXT: bl fmin
-; PC64LE9-NEXT: nop
-; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: vmr 2, 31
-; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT: xxmrghd 35, 1, 0
-; PC64LE9-NEXT: addi 1, 1, 64
-; PC64LE9-NEXT: ld 0, 16(1)
-; PC64LE9-NEXT: mtlr 0
+; PC64LE9-NEXT: addi 3, 3, .LCPI94_3@toc@l
+; PC64LE9-NEXT: lxvx 1, 0, 3
+; PC64LE9-NEXT: xvmindp 35, 1, 0
; PC64LE9-NEXT: blr
entry:
%min = call <4 x double> @llvm.experimental.constrained.minnum.v4f64(