blob: 5ab7e5ebbb4e5360306078daa4ed2faf645c073e [file] [log] [blame] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=powerpc64-- | FileCheck %s --check-prefixes=CHECK,BE
; RUN: llc < %s -mtriple=powerpc64le-- | FileCheck %s --check-prefixes=CHECK,LE
define <16 x i8> @clmul_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
; BE-LABEL: clmul_v16i8:
; BE: # %bb.0:
; BE-NEXT: addis 3, 2, .LCPI0_0@toc@ha
; BE-NEXT: vspltisb 4, 2
; BE-NEXT: addi 3, 3, .LCPI0_0@toc@l
; BE-NEXT: vand 4, 3, 4
; BE-NEXT: lvx 10, 0, 3
; BE-NEXT: addis 3, 2, .LCPI0_1@toc@ha
; BE-NEXT: vspltisb 5, 1
; BE-NEXT: addi 3, 3, .LCPI0_1@toc@l
; BE-NEXT: vspltisb 0, 4
; BE-NEXT: vand 5, 3, 5
; BE-NEXT: vspltisb 6, 8
; BE-NEXT: vspltisb 8, -1
; BE-NEXT: vmuloub 9, 2, 4
; BE-NEXT: vmuleub 4, 2, 4
; BE-NEXT: vand 1, 3, 0
; BE-NEXT: vperm 4, 4, 9, 10
; BE-NEXT: vmuloub 9, 2, 5
; BE-NEXT: vmuleub 5, 2, 5
; BE-NEXT: vand 7, 3, 6
; BE-NEXT: vaddubm 6, 6, 6
; BE-NEXT: vperm 5, 5, 9, 10
; BE-NEXT: vmuloub 9, 2, 1
; BE-NEXT: vmuleub 1, 2, 1
; BE-NEXT: vperm 1, 1, 9, 10
; BE-NEXT: vmuloub 9, 2, 7
; BE-NEXT: vmuleub 7, 2, 7
; BE-NEXT: vand 6, 3, 6
; BE-NEXT: vperm 7, 7, 9, 10
; BE-NEXT: vmuloub 9, 2, 6
; BE-NEXT: vmuleub 6, 2, 6
; BE-NEXT: vperm 6, 6, 9, 10
; BE-NEXT: lvx 9, 0, 3
; BE-NEXT: vslb 0, 0, 0
; BE-NEXT: vslb 8, 8, 8
; BE-NEXT: vand 0, 3, 0
; BE-NEXT: vand 8, 3, 8
; BE-NEXT: vand 3, 3, 9
; BE-NEXT: vmuloub 9, 2, 0
; BE-NEXT: vmuleub 0, 2, 0
; BE-NEXT: vxor 4, 5, 4
; BE-NEXT: vperm 0, 0, 9, 10
; BE-NEXT: vmuloub 9, 2, 8
; BE-NEXT: vmuleub 8, 2, 8
; BE-NEXT: vmuloub 5, 2, 3
; BE-NEXT: vmuleub 2, 2, 3
; BE-NEXT: vxor 3, 4, 1
; BE-NEXT: vxor 3, 3, 7
; BE-NEXT: vperm 2, 2, 5, 10
; BE-NEXT: vxor 3, 3, 6
; BE-NEXT: vxor 2, 3, 2
; BE-NEXT: vperm 8, 8, 9, 10
; BE-NEXT: vxor 2, 2, 0
; BE-NEXT: vxor 2, 2, 8
; BE-NEXT: blr
;
; LE-LABEL: clmul_v16i8:
; LE: # %bb.0:
; LE-NEXT: vspltisb 4, 2
; LE-NEXT: addis 3, 2, .LCPI0_0@toc@ha
; LE-NEXT: vspltisb 5, 1
; LE-NEXT: addi 3, 3, .LCPI0_0@toc@l
; LE-NEXT: xxland 36, 35, 36
; LE-NEXT: xxland 37, 35, 37
; LE-NEXT: vspltisb 0, 4
; LE-NEXT: vspltisb 1, 8
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: vmuloub 7, 2, 4
; LE-NEXT: vmuleub 4, 2, 4
; LE-NEXT: addis 3, 2, .LCPI0_1@toc@ha
; LE-NEXT: addi 3, 3, .LCPI0_1@toc@l
; LE-NEXT: xxswapd 38, 0
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: vperm 4, 4, 7, 6
; LE-NEXT: vmuloub 7, 2, 5
; LE-NEXT: vmuleub 5, 2, 5
; LE-NEXT: vperm 5, 5, 7, 6
; LE-NEXT: xxland 39, 35, 32
; LE-NEXT: vslb 0, 0, 0
; LE-NEXT: vmuloub 8, 2, 7
; LE-NEXT: vmuleub 7, 2, 7
; LE-NEXT: xxland 32, 35, 32
; LE-NEXT: vperm 7, 7, 8, 6
; LE-NEXT: xxland 40, 35, 33
; LE-NEXT: vaddubm 1, 1, 1
; LE-NEXT: vmuloub 9, 2, 8
; LE-NEXT: vmuleub 8, 2, 8
; LE-NEXT: xxland 33, 35, 33
; LE-NEXT: vperm 8, 8, 9, 6
; LE-NEXT: vmuloub 9, 2, 1
; LE-NEXT: vmuleub 1, 2, 1
; LE-NEXT: vperm 1, 1, 9, 6
; LE-NEXT: xxland 41, 35, 0
; LE-NEXT: xxlxor 0, 37, 36
; LE-NEXT: vmuloub 10, 2, 9
; LE-NEXT: vmuleub 9, 2, 9
; LE-NEXT: xxlxor 0, 0, 39
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: xxlxor 0, 0, 33
; LE-NEXT: vperm 9, 9, 10, 6
; LE-NEXT: vmuloub 10, 2, 0
; LE-NEXT: vmuleub 0, 2, 0
; LE-NEXT: xxlxor 0, 0, 41
; LE-NEXT: vperm 0, 0, 10, 6
; LE-NEXT: xxleqv 42, 42, 42
; LE-NEXT: vslb 10, 10, 10
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxland 35, 35, 42
; LE-NEXT: vmuloub 10, 2, 3
; LE-NEXT: vmuleub 2, 2, 3
; LE-NEXT: vperm 2, 2, 10, 6
; LE-NEXT: xxlxor 34, 0, 34
; LE-NEXT: blr
%res = call <16 x i8> @llvm.clmul.v16i8(<16 x i8> %a, <16 x i8> %b)
ret <16 x i8> %res
}
define <8 x i16> @clmul_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
; BE-LABEL: clmul_v8i16:
; BE: # %bb.0:
; BE-NEXT: addis 3, 2, .LCPI1_0@toc@ha
; BE-NEXT: vspltish 6, 2
; BE-NEXT: addi 3, 3, .LCPI1_0@toc@l
; BE-NEXT: vand 4, 3, 6
; BE-NEXT: lvx 13, 0, 3
; BE-NEXT: addis 3, 2, .LCPI1_1@toc@ha
; BE-NEXT: addi 3, 3, .LCPI1_1@toc@l
; BE-NEXT: vspltish 7, 1
; BE-NEXT: lvx 14, 0, 3
; BE-NEXT: addis 3, 2, .LCPI1_2@toc@ha
; BE-NEXT: addi 3, 3, .LCPI1_2@toc@l
; BE-NEXT: vspltish 8, 4
; BE-NEXT: lvx 15, 0, 3
; BE-NEXT: addis 3, 2, .LCPI1_3@toc@ha
; BE-NEXT: addi 3, 3, .LCPI1_3@toc@l
; BE-NEXT: vspltish 9, 8
; BE-NEXT: vand 5, 3, 7
; BE-NEXT: lvx 16, 0, 3
; BE-NEXT: addis 3, 2, .LCPI1_4@toc@ha
; BE-NEXT: addi 3, 3, .LCPI1_4@toc@l
; BE-NEXT: vspltisb 12, -1
; BE-NEXT: lvx 17, 0, 3
; BE-NEXT: vand 0, 3, 8
; BE-NEXT: vand 1, 3, 9
; BE-NEXT: vslh 10, 8, 8
; BE-NEXT: vsldoi 7, 7, 7, 1
; BE-NEXT: vsldoi 6, 6, 6, 1
; BE-NEXT: vsldoi 8, 8, 8, 1
; BE-NEXT: vslh 11, 9, 9
; BE-NEXT: vadduhm 9, 9, 9
; BE-NEXT: vslh 12, 12, 12
; BE-NEXT: vand 9, 3, 9
; BE-NEXT: vand 10, 3, 10
; BE-NEXT: vand 7, 3, 7
; BE-NEXT: vand 6, 3, 6
; BE-NEXT: vand 8, 3, 8
; BE-NEXT: vand 11, 3, 11
; BE-NEXT: vand 12, 3, 12
; BE-NEXT: vand 13, 3, 13
; BE-NEXT: vand 14, 3, 14
; BE-NEXT: vand 15, 3, 15
; BE-NEXT: vand 16, 3, 16
; BE-NEXT: vand 3, 3, 17
; BE-NEXT: vxor 17, 17, 17
; BE-NEXT: vmladduhm 4, 2, 4, 17
; BE-NEXT: vmladduhm 5, 2, 5, 17
; BE-NEXT: vmladduhm 0, 2, 0, 17
; BE-NEXT: vmladduhm 1, 2, 1, 17
; BE-NEXT: vmladduhm 9, 2, 9, 17
; BE-NEXT: vmladduhm 10, 2, 10, 17
; BE-NEXT: vmladduhm 7, 2, 7, 17
; BE-NEXT: vmladduhm 6, 2, 6, 17
; BE-NEXT: vmladduhm 8, 2, 8, 17
; BE-NEXT: vmladduhm 11, 2, 11, 17
; BE-NEXT: vmladduhm 12, 2, 12, 17
; BE-NEXT: vmladduhm 13, 2, 13, 17
; BE-NEXT: vmladduhm 14, 2, 14, 17
; BE-NEXT: vmladduhm 15, 2, 15, 17
; BE-NEXT: vmladduhm 16, 2, 16, 17
; BE-NEXT: vmladduhm 2, 2, 3, 17
; BE-NEXT: vxor 3, 5, 4
; BE-NEXT: vxor 3, 3, 0
; BE-NEXT: vxor 3, 3, 1
; BE-NEXT: vxor 3, 3, 9
; BE-NEXT: vxor 3, 3, 13
; BE-NEXT: vxor 3, 3, 10
; BE-NEXT: vxor 3, 3, 14
; BE-NEXT: vxor 3, 3, 7
; BE-NEXT: vxor 3, 3, 6
; BE-NEXT: vxor 3, 3, 8
; BE-NEXT: vxor 3, 3, 11
; BE-NEXT: vxor 3, 3, 15
; BE-NEXT: vxor 3, 3, 16
; BE-NEXT: vxor 2, 3, 2
; BE-NEXT: vxor 2, 2, 12
; BE-NEXT: blr
;
; LE-LABEL: clmul_v8i16:
; LE: # %bb.0:
; LE-NEXT: vspltish 5, 2
; LE-NEXT: vspltish 0, 1
; LE-NEXT: addis 3, 2, .LCPI1_0@toc@ha
; LE-NEXT: xxland 41, 35, 37
; LE-NEXT: vspltish 1, 4
; LE-NEXT: vspltish 4, 8
; LE-NEXT: addi 3, 3, .LCPI1_0@toc@l
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: vsldoi 6, 0, 0, 1
; LE-NEXT: xxland 32, 35, 32
; LE-NEXT: vsldoi 7, 5, 5, 1
; LE-NEXT: vxor 5, 5, 5
; LE-NEXT: vmladduhm 9, 2, 9, 5
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: addis 3, 2, .LCPI1_1@toc@ha
; LE-NEXT: addi 3, 3, .LCPI1_1@toc@l
; LE-NEXT: vsldoi 8, 1, 1, 1
; LE-NEXT: xxlxor 0, 32, 41
; LE-NEXT: xxland 32, 35, 33
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxland 32, 35, 36
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: vadduhm 0, 4, 4
; LE-NEXT: vslh 4, 4, 4
; LE-NEXT: xxland 32, 35, 32
; LE-NEXT: xxland 36, 35, 36
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: vmladduhm 4, 2, 4, 5
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI1_2@toc@ha
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: addi 3, 3, .LCPI1_2@toc@l
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: vslh 0, 1, 1
; LE-NEXT: xxland 32, 35, 32
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI1_3@toc@ha
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: addi 3, 3, .LCPI1_3@toc@l
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxland 32, 35, 38
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxland 32, 35, 39
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxland 32, 35, 40
; LE-NEXT: vmladduhm 0, 2, 0, 5
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxland 36, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI1_4@toc@ha
; LE-NEXT: vmladduhm 4, 2, 4, 5
; LE-NEXT: addi 3, 3, .LCPI1_4@toc@l
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxland 36, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: vmladduhm 4, 2, 4, 5
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxland 36, 35, 1
; LE-NEXT: vmladduhm 4, 2, 4, 5
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxleqv 36, 36, 36
; LE-NEXT: vslh 4, 4, 4
; LE-NEXT: xxland 35, 35, 36
; LE-NEXT: vmladduhm 2, 2, 3, 5
; LE-NEXT: xxlxor 34, 0, 34
; LE-NEXT: blr
%res = call <8 x i16> @llvm.clmul.v8i16(<8 x i16> %a, <8 x i16> %b)
ret <8 x i16> %res
}
define <4 x i32> @clmul_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
; BE-LABEL: clmul_v4i32:
; BE: # %bb.0:
; BE-NEXT: stdu 1, -1184(1)
; BE-NEXT: li 3, 992
; BE-NEXT: vspltisw 9, 4
; BE-NEXT: stvx 20, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1008
; BE-NEXT: vand 4, 3, 9
; BE-NEXT: vspltisw 6, 8
; BE-NEXT: stvx 21, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1024
; BE-NEXT: vspltisw 11, 1
; BE-NEXT: stvx 22, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1040
; BE-NEXT: vand 1, 3, 11
; BE-NEXT: vspltisw 8, 2
; BE-NEXT: stvx 23, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1056
; BE-NEXT: vspltisb 17, -1
; BE-NEXT: stvx 24, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1072
; BE-NEXT: stvx 25, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1088
; BE-NEXT: vsldoi 15, 11, 11, 1
; BE-NEXT: stvx 26, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1104
; BE-NEXT: stvx 27, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1120
; BE-NEXT: stvx 28, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1136
; BE-NEXT: vslw 18, 6, 6
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1152
; BE-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1168
; BE-NEXT: vsldoi 5, 11, 11, 2
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 976
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 960
; BE-NEXT: vand 4, 3, 6
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 624
; BE-NEXT: vsldoi 13, 6, 6, 2
; BE-NEXT: vsldoi 4, 11, 11, 3
; BE-NEXT: vsldoi 11, 6, 6, 3
; BE-NEXT: vadduwm 6, 6, 6
; BE-NEXT: vand 12, 3, 6
; BE-NEXT: stvx 12, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 752
; BE-NEXT: vand 6, 3, 18
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 864
; BE-NEXT: vsldoi 19, 8, 8, 2
; BE-NEXT: vand 5, 3, 5
; BE-NEXT: stvx 5, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 592
; BE-NEXT: vsldoi 0, 9, 9, 2
; BE-NEXT: vand 5, 3, 19
; BE-NEXT: stvx 5, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 896
; BE-NEXT: vslw 10, 9, 9
; BE-NEXT: vsldoi 31, 9, 9, 1
; BE-NEXT: vsldoi 9, 9, 9, 3
; BE-NEXT: vand 0, 3, 0
; BE-NEXT: stvx 0, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 944
; BE-NEXT: vand 23, 3, 13
; BE-NEXT: vand 13, 3, 4
; BE-NEXT: vand 4, 3, 9
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI2_0@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_0@toc@l
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: addis 3, 2, .LCPI2_1@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_1@toc@l
; BE-NEXT: vand 25, 3, 4
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: li 3, 928
; BE-NEXT: vand 4, 3, 4
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI2_2@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_2@toc@l
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: addis 3, 2, .LCPI2_3@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_3@toc@l
; BE-NEXT: vand 16, 3, 10
; BE-NEXT: vand 10, 3, 4
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: addis 3, 2, .LCPI2_4@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_4@toc@l
; BE-NEXT: vand 30, 3, 4
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: li 3, 768
; BE-NEXT: vand 4, 3, 4
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI2_5@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_5@toc@l
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: li 3, 704
; BE-NEXT: vand 4, 3, 4
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI2_6@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_6@toc@l
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: addis 3, 2, .LCPI2_7@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_7@toc@l
; BE-NEXT: vand 27, 3, 4
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: addis 3, 2, .LCPI2_8@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_8@toc@l
; BE-NEXT: vand 22, 3, 4
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: addis 3, 2, .LCPI2_9@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_9@toc@l
; BE-NEXT: vand 21, 3, 4
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: addis 3, 2, .LCPI2_10@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_10@toc@l
; BE-NEXT: vand 20, 3, 4
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: li 3, 496
; BE-NEXT: vand 4, 3, 4
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI2_11@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_11@toc@l
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: li 3, 448
; BE-NEXT: vand 4, 3, 4
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI2_12@toc@ha
; BE-NEXT: addi 3, 3, .LCPI2_12@toc@l
; BE-NEXT: lvx 4, 0, 3
; BE-NEXT: li 3, 368
; BE-NEXT: vand 7, 3, 8
; BE-NEXT: vsldoi 14, 8, 8, 1
; BE-NEXT: vsldoi 8, 8, 8, 3
; BE-NEXT: vslw 17, 17, 17
; BE-NEXT: vand 15, 3, 15
; BE-NEXT: vand 14, 3, 14
; BE-NEXT: vand 24, 3, 31
; BE-NEXT: vand 26, 3, 8
; BE-NEXT: vand 11, 3, 11
; BE-NEXT: vand 9, 3, 17
; BE-NEXT: vand 3, 3, 4
; BE-NEXT: stvx 3, 1, 3 # 16-byte Folded Spill
; BE-NEXT: vspltisw 3, -16
; BE-NEXT: li 3, 912
; BE-NEXT: vmulouh 6, 2, 7
; BE-NEXT: vrlw 7, 7, 3
; BE-NEXT: vmulouh 8, 2, 1
; BE-NEXT: vrlw 1, 1, 3
; BE-NEXT: vxor 0, 0, 0
; BE-NEXT: vmsumuhm 7, 2, 7, 0
; BE-NEXT: vmsumuhm 1, 2, 1, 0
; BE-NEXT: vslw 7, 7, 3
; BE-NEXT: vadduwm 6, 6, 7
; BE-NEXT: vslw 1, 1, 3
; BE-NEXT: vadduwm 1, 8, 1
; BE-NEXT: vxor 4, 1, 6
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 976
; BE-NEXT: lvx 28, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 816
; BE-NEXT: vrlw 1, 28, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 960
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 848
; BE-NEXT: vrlw 1, 29, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 880
; BE-NEXT: vrlw 1, 12, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 832
; BE-NEXT: vrlw 1, 16, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 800
; BE-NEXT: vrlw 1, 15, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 784
; BE-NEXT: vrlw 1, 14, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 736
; BE-NEXT: vrlw 1, 24, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 752
; BE-NEXT: lvx 17, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 720
; BE-NEXT: vrlw 1, 17, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 864
; BE-NEXT: vmr 31, 16
; BE-NEXT: lvx 16, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 688
; BE-NEXT: vrlw 1, 16, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 672
; BE-NEXT: vrlw 1, 5, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 896
; BE-NEXT: vmr 19, 15
; BE-NEXT: lvx 15, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 656
; BE-NEXT: vrlw 1, 15, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 640
; BE-NEXT: vrlw 1, 23, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 608
; BE-NEXT: vrlw 1, 13, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 576
; BE-NEXT: vrlw 1, 26, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 944
; BE-NEXT: lvx 12, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 544
; BE-NEXT: vrlw 1, 12, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 528
; BE-NEXT: vrlw 1, 11, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 512
; BE-NEXT: vrlw 1, 9, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 480
; BE-NEXT: vrlw 1, 25, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 928
; BE-NEXT: lvx 7, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 464
; BE-NEXT: vrlw 1, 7, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 432
; BE-NEXT: vrlw 1, 10, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 400
; BE-NEXT: vrlw 1, 30, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 768
; BE-NEXT: vmr 18, 14
; BE-NEXT: vmr 14, 23
; BE-NEXT: vmr 23, 26
; BE-NEXT: vmr 26, 30
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 352
; BE-NEXT: vrlw 1, 30, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 704
; BE-NEXT: vmr 6, 25
; BE-NEXT: vmr 25, 10
; BE-NEXT: lvx 10, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 320
; BE-NEXT: vrlw 1, 10, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 288
; BE-NEXT: vrlw 1, 27, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 256
; BE-NEXT: vrlw 1, 22, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 224
; BE-NEXT: vrlw 1, 21, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 208
; BE-NEXT: vrlw 1, 20, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 496
; BE-NEXT: lvx 5, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 192
; BE-NEXT: vrlw 1, 5, 3
; BE-NEXT: vmsumuhm 4, 2, 1, 0
; BE-NEXT: stvx 4, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 448
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 160
; BE-NEXT: vrlw 1, 4, 3
; BE-NEXT: vmsumuhm 1, 2, 1, 0
; BE-NEXT: stvx 1, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 368
; BE-NEXT: lvx 1, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 128
; BE-NEXT: vrlw 8, 1, 3
; BE-NEXT: vmsumuhm 0, 2, 8, 0
; BE-NEXT: stvx 0, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 624
; BE-NEXT: vmulouh 8, 2, 29
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 96
; BE-NEXT: vmulouh 29, 2, 29
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 176
; BE-NEXT: vmulouh 31, 2, 31
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 240
; BE-NEXT: vmulouh 19, 2, 19
; BE-NEXT: stvx 19, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 272
; BE-NEXT: vmulouh 18, 2, 18
; BE-NEXT: stvx 18, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 304
; BE-NEXT: vmulouh 18, 2, 24
; BE-NEXT: stvx 18, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 336
; BE-NEXT: vmulouh 17, 2, 17
; BE-NEXT: stvx 17, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 560
; BE-NEXT: vmulouh 16, 2, 16
; BE-NEXT: stvx 16, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 592
; BE-NEXT: lvx 16, 1, 3 # 16-byte Folded Reload
; BE-NEXT: vmulouh 16, 2, 16
; BE-NEXT: stvx 16, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 624
; BE-NEXT: vmulouh 15, 2, 15
; BE-NEXT: stvx 15, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 752
; BE-NEXT: vmulouh 14, 2, 14
; BE-NEXT: stvx 14, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 864
; BE-NEXT: vmulouh 13, 2, 13
; BE-NEXT: stvx 13, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 896
; BE-NEXT: vmulouh 13, 2, 23
; BE-NEXT: stvx 13, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 944
; BE-NEXT: vmulouh 12, 2, 12
; BE-NEXT: stvx 12, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 960
; BE-NEXT: vmulouh 11, 2, 11
; BE-NEXT: stvx 11, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 976
; BE-NEXT: vmulouh 9, 2, 9
; BE-NEXT: stvx 9, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 64
; BE-NEXT: vmulouh 23, 2, 6
; BE-NEXT: vmulouh 6, 2, 25
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 80
; BE-NEXT: vmulouh 6, 2, 26
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 112
; BE-NEXT: vmulouh 6, 2, 30
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 144
; BE-NEXT: vmulouh 6, 2, 10
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 384
; BE-NEXT: vmulouh 6, 2, 27
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 416
; BE-NEXT: vmulouh 6, 2, 22
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 704
; BE-NEXT: vmulouh 6, 2, 21
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 768
; BE-NEXT: vmulouh 6, 2, 20
; BE-NEXT: stvx 6, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 928
; BE-NEXT: vmulouh 5, 2, 5
; BE-NEXT: stvx 5, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 496
; BE-NEXT: vmulouh 0, 2, 28
; BE-NEXT: vmulouh 24, 2, 7
; BE-NEXT: vmulouh 20, 2, 4
; BE-NEXT: vmulouh 2, 2, 1
; BE-NEXT: stvx 2, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 816
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 912
; BE-NEXT: vslw 9, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 848
; BE-NEXT: vadduwm 4, 0, 9
; BE-NEXT: vxor 4, 2, 4
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 880
; BE-NEXT: vslw 9, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 832
; BE-NEXT: vadduwm 5, 8, 9
; BE-NEXT: vslw 9, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 800
; BE-NEXT: vslw 8, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 784
; BE-NEXT: vslw 10, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 736
; BE-NEXT: vslw 11, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 720
; BE-NEXT: vslw 12, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 688
; BE-NEXT: vslw 13, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 672
; BE-NEXT: vslw 18, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 656
; BE-NEXT: vslw 19, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 640
; BE-NEXT: vslw 31, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 608
; BE-NEXT: vslw 29, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 576
; BE-NEXT: vslw 22, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 544
; BE-NEXT: vslw 27, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 528
; BE-NEXT: vslw 25, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 512
; BE-NEXT: vslw 30, 2, 3
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 912
; BE-NEXT: vslw 2, 2, 3
; BE-NEXT: stvx 2, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 480
; BE-NEXT: lvx 2, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 464
; BE-NEXT: vxor 6, 4, 5
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 432
; BE-NEXT: lvx 5, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 400
; BE-NEXT: lvx 0, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 352
; BE-NEXT: vslw 2, 2, 3
; BE-NEXT: lvx 1, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 320
; BE-NEXT: vadduwm 2, 23, 2
; BE-NEXT: lvx 7, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 288
; BE-NEXT: lvx 14, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 256
; BE-NEXT: vslw 4, 4, 3
; BE-NEXT: vadduwm 4, 24, 4
; BE-NEXT: lvx 15, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 224
; BE-NEXT: lvx 16, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 208
; BE-NEXT: lvx 17, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 192
; BE-NEXT: vslw 5, 5, 3
; BE-NEXT: lvx 28, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 160
; BE-NEXT: lvx 26, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 128
; BE-NEXT: vslw 0, 0, 3
; BE-NEXT: lvx 21, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 96
; BE-NEXT: vslw 1, 1, 3
; BE-NEXT: vslw 7, 7, 3
; BE-NEXT: vslw 14, 14, 3
; BE-NEXT: vslw 15, 15, 3
; BE-NEXT: vslw 16, 16, 3
; BE-NEXT: vslw 17, 17, 3
; BE-NEXT: vslw 28, 28, 3
; BE-NEXT: vslw 26, 26, 3
; BE-NEXT: vslw 3, 21, 3
; BE-NEXT: lvx 21, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 176
; BE-NEXT: vadduwm 9, 21, 9
; BE-NEXT: vxor 6, 6, 9
; BE-NEXT: vxor 2, 6, 2
; BE-NEXT: lvx 6, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 240
; BE-NEXT: vadduwm 6, 6, 8
; BE-NEXT: vxor 2, 2, 6
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 272
; BE-NEXT: vadduwm 4, 4, 10
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 304
; BE-NEXT: vadduwm 4, 4, 11
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 336
; BE-NEXT: vadduwm 4, 4, 12
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 64
; BE-NEXT: vadduwm 4, 4, 13
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 80
; BE-NEXT: vadduwm 4, 4, 5
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 112
; BE-NEXT: vadduwm 4, 4, 0
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 144
; BE-NEXT: vadduwm 4, 4, 1
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 560
; BE-NEXT: vadduwm 4, 4, 7
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 592
; BE-NEXT: vadduwm 4, 4, 18
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 624
; BE-NEXT: vadduwm 4, 4, 19
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 752
; BE-NEXT: vadduwm 4, 4, 31
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 384
; BE-NEXT: vadduwm 4, 4, 29
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 416
; BE-NEXT: vadduwm 4, 4, 14
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 704
; BE-NEXT: vadduwm 4, 4, 15
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 768
; BE-NEXT: vadduwm 4, 4, 16
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 864
; BE-NEXT: vadduwm 4, 4, 17
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 896
; BE-NEXT: vadduwm 4, 4, 22
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 944
; BE-NEXT: vadduwm 4, 4, 27
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 960
; BE-NEXT: vadduwm 4, 4, 25
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 928
; BE-NEXT: vadduwm 4, 4, 30
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 496
; BE-NEXT: vadduwm 4, 4, 28
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: vadduwm 4, 20, 26
; BE-NEXT: vxor 2, 2, 4
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 976
; BE-NEXT: vadduwm 3, 4, 3
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 912
; BE-NEXT: lvx 4, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1168
; BE-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1152
; BE-NEXT: vadduwm 3, 3, 4
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1136
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1120
; BE-NEXT: lvx 28, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1104
; BE-NEXT: lvx 27, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1088
; BE-NEXT: lvx 26, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1072
; BE-NEXT: lvx 25, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1056
; BE-NEXT: lvx 24, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1040
; BE-NEXT: lvx 23, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1024
; BE-NEXT: lvx 22, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1008
; BE-NEXT: lvx 21, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 992
; BE-NEXT: lvx 20, 1, 3 # 16-byte Folded Reload
; BE-NEXT: addi 1, 1, 1184
; BE-NEXT: blr
;
; LE-LABEL: clmul_v4i32:
; LE: # %bb.0:
; LE-NEXT: vspltisw 0, 2
; LE-NEXT: vspltisw 1, 1
; LE-NEXT: addis 3, 2, .LCPI2_0@toc@ha
; LE-NEXT: xxland 45, 35, 32
; LE-NEXT: xxland 46, 35, 33
; LE-NEXT: vspltisw 5, 4
; LE-NEXT: vspltisw 4, 8
; LE-NEXT: addi 3, 3, .LCPI2_0@toc@l
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: vmuluwm 14, 2, 14
; LE-NEXT: addis 3, 2, .LCPI2_1@toc@ha
; LE-NEXT: vsldoi 12, 1, 1, 1
; LE-NEXT: vsldoi 8, 0, 0, 1
; LE-NEXT: addi 3, 3, .LCPI2_1@toc@l
; LE-NEXT: xxland 44, 35, 44
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: xxland 40, 35, 40
; LE-NEXT: vmuluwm 8, 2, 8
; LE-NEXT: vsldoi 10, 5, 5, 1
; LE-NEXT: vsldoi 6, 1, 1, 2
; LE-NEXT: xxland 38, 35, 38
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: vsldoi 7, 0, 0, 2
; LE-NEXT: vsldoi 9, 5, 5, 2
; LE-NEXT: vsldoi 11, 4, 4, 2
; LE-NEXT: vsldoi 1, 1, 1, 3
; LE-NEXT: vsldoi 0, 0, 0, 3
; LE-NEXT: xxland 33, 35, 33
; LE-NEXT: vmuluwm 1, 2, 1
; LE-NEXT: xxland 32, 35, 32
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: xxlxor 0, 46, 45
; LE-NEXT: xxland 45, 35, 37
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: xxlxor 0, 0, 45
; LE-NEXT: xxland 45, 35, 36
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: xxlxor 0, 0, 45
; LE-NEXT: vadduwm 13, 4, 4
; LE-NEXT: xxland 45, 35, 45
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: xxlxor 0, 0, 45
; LE-NEXT: xxland 45, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_2@toc@ha
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: addi 3, 3, .LCPI2_2@toc@l
; LE-NEXT: xxlxor 0, 0, 45
; LE-NEXT: vslw 13, 5, 5
; LE-NEXT: xxland 45, 35, 45
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: xxlxor 0, 0, 45
; LE-NEXT: xxland 45, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_3@toc@ha
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: addi 3, 3, .LCPI2_3@toc@l
; LE-NEXT: xxlxor 0, 0, 45
; LE-NEXT: xxlxor 0, 0, 44
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: xxland 40, 35, 42
; LE-NEXT: vmuluwm 8, 2, 8
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: vslw 8, 4, 4
; LE-NEXT: xxland 40, 35, 40
; LE-NEXT: vmuluwm 8, 2, 8
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: xxland 40, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_4@toc@ha
; LE-NEXT: vmuluwm 8, 2, 8
; LE-NEXT: addi 3, 3, .LCPI2_4@toc@l
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: xxland 40, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_5@toc@ha
; LE-NEXT: vmuluwm 8, 2, 8
; LE-NEXT: addi 3, 3, .LCPI2_5@toc@l
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: xxland 40, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_6@toc@ha
; LE-NEXT: vmuluwm 8, 2, 8
; LE-NEXT: addi 3, 3, .LCPI2_6@toc@l
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: xxland 40, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_7@toc@ha
; LE-NEXT: vmuluwm 8, 2, 8
; LE-NEXT: addi 3, 3, .LCPI2_7@toc@l
; LE-NEXT: xxlxor 0, 0, 40
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxland 38, 35, 39
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxland 38, 35, 41
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxland 38, 35, 43
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_8@toc@ha
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: addi 3, 3, .LCPI2_8@toc@l
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_9@toc@ha
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: addi 3, 3, .LCPI2_9@toc@l
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_10@toc@ha
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: addi 3, 3, .LCPI2_10@toc@l
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_11@toc@ha
; LE-NEXT: vmuluwm 6, 2, 6
; LE-NEXT: addi 3, 3, .LCPI2_11@toc@l
; LE-NEXT: xxlxor 0, 0, 38
; LE-NEXT: xxlxor 0, 0, 33
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: vsldoi 5, 5, 5, 3
; LE-NEXT: xxland 37, 35, 37
; LE-NEXT: vmuluwm 5, 2, 5
; LE-NEXT: xxlxor 0, 0, 37
; LE-NEXT: vsldoi 4, 4, 4, 3
; LE-NEXT: xxland 36, 35, 36
; LE-NEXT: vmuluwm 4, 2, 4
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxland 36, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI2_12@toc@ha
; LE-NEXT: vmuluwm 4, 2, 4
; LE-NEXT: addi 3, 3, .LCPI2_12@toc@l
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxland 36, 35, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: vmuluwm 4, 2, 4
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxland 36, 35, 1
; LE-NEXT: vmuluwm 4, 2, 4
; LE-NEXT: xxlxor 0, 0, 36
; LE-NEXT: xxleqv 36, 36, 36
; LE-NEXT: vslw 4, 4, 4
; LE-NEXT: xxland 35, 35, 36
; LE-NEXT: vmuluwm 2, 2, 3
; LE-NEXT: xxlxor 34, 0, 34
; LE-NEXT: blr
%res = call <4 x i32> @llvm.clmul.v4i32(<4 x i32> %a, <4 x i32> %b)
ret <4 x i32> %res
}
define <2 x i64> @clmul_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
; BE-LABEL: clmul_v2i64:
; BE: # %bb.0:
; BE-NEXT: stdu 1, -1008(1)
; BE-NEXT: rlwinm 7, 5, 0, 30, 30
; BE-NEXT: rlwinm 8, 5, 0, 29, 29
; BE-NEXT: std 2, 856(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 848(1) # 8-byte Folded Spill
; BE-NEXT: clrldi 7, 5, 63
; BE-NEXT: mulld 2, 3, 7
; BE-NEXT: std 31, 1000(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 15, 872(1) # 8-byte Folded Spill
; BE-NEXT: std 7, 840(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 28, 28
; BE-NEXT: rlwinm 8, 5, 0, 27, 27
; BE-NEXT: std 14, 864(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 824(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 832(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 26, 26
; BE-NEXT: std 17, 888(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 25, 25
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 808(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 816(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 24, 24
; BE-NEXT: std 16, 880(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 23, 23
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 792(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 800(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 22, 22
; BE-NEXT: std 19, 904(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 21, 21
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 776(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 784(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 20, 20
; BE-NEXT: std 18, 896(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 19, 19
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 760(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 768(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 18, 18
; BE-NEXT: std 21, 920(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 17, 17
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 744(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 752(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 16, 16
; BE-NEXT: std 20, 912(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 15, 15
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 728(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 736(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 14, 14
; BE-NEXT: std 23, 936(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 13, 13
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 712(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 720(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 12, 12
; BE-NEXT: std 22, 928(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 11, 11
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 696(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 704(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 10, 10
; BE-NEXT: std 25, 952(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 9, 9
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 680(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 688(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 8, 8
; BE-NEXT: std 24, 944(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 7, 7
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 664(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 672(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 6, 6
; BE-NEXT: std 27, 968(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 8, 5, 0, 5, 5
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 648(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 656(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 4, 4
; BE-NEXT: std 26, 960(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: rldicr 8, 5, 0, 0
; BE-NEXT: std 7, 640(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 3, 3
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 632(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 2, 2
; BE-NEXT: std 29, 984(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 624(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 1, 1
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 616(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 7, 5, 0, 0, 0
; BE-NEXT: std 28, 976(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 608(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 32, 32
; BE-NEXT: rldicl 7, 7, 32, 31
; BE-NEXT: std 30, 992(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: mulld 8, 3, 8
; BE-NEXT: std 7, 592(1) # 8-byte Folded Spill
; BE-NEXT: std 8, 600(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 31, 33
; BE-NEXT: rldicl 7, 7, 33, 30
; BE-NEXT: rldicl 8, 5, 30, 34
; BE-NEXT: rldicl 8, 8, 34, 29
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 576(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 584(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 29, 35
; BE-NEXT: rldicl 7, 7, 35, 28
; BE-NEXT: rldicl 8, 5, 28, 36
; BE-NEXT: rldicl 8, 8, 36, 27
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 560(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 568(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 27, 37
; BE-NEXT: rldicl 7, 7, 37, 26
; BE-NEXT: rldicl 8, 5, 26, 38
; BE-NEXT: rldicl 8, 8, 38, 25
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 544(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 552(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 25, 39
; BE-NEXT: rldicl 7, 7, 39, 24
; BE-NEXT: rldicl 8, 5, 24, 40
; BE-NEXT: rldicl 8, 8, 40, 23
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 528(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 536(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 23, 41
; BE-NEXT: rldicl 7, 7, 41, 22
; BE-NEXT: rldicl 8, 5, 22, 42
; BE-NEXT: rldicl 8, 8, 42, 21
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 512(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 520(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 21, 43
; BE-NEXT: rldicl 7, 7, 43, 20
; BE-NEXT: rldicl 8, 5, 20, 44
; BE-NEXT: rldicl 8, 8, 44, 19
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 496(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 504(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 19, 45
; BE-NEXT: rldicl 7, 7, 45, 18
; BE-NEXT: rldicl 8, 5, 18, 46
; BE-NEXT: rldicl 8, 8, 46, 17
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 480(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 488(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 17, 47
; BE-NEXT: rldicl 7, 7, 47, 16
; BE-NEXT: rldicl 8, 5, 16, 48
; BE-NEXT: rldicl 8, 8, 48, 15
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 464(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 472(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 15, 49
; BE-NEXT: rldicl 7, 7, 49, 14
; BE-NEXT: rldicl 8, 5, 14, 50
; BE-NEXT: rldicl 8, 8, 50, 13
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 448(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 456(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 13, 51
; BE-NEXT: rldicl 7, 7, 51, 12
; BE-NEXT: rldicl 8, 5, 12, 52
; BE-NEXT: rldicl 8, 8, 52, 11
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 432(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 440(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 11, 53
; BE-NEXT: rldicl 7, 7, 53, 10
; BE-NEXT: rldicl 8, 5, 10, 54
; BE-NEXT: rldicl 8, 8, 54, 9
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 416(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 424(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 9, 55
; BE-NEXT: rldicl 7, 7, 55, 8
; BE-NEXT: rldicl 8, 5, 8, 56
; BE-NEXT: rldicl 8, 8, 56, 7
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 400(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 408(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 7, 57
; BE-NEXT: rldicl 7, 7, 57, 6
; BE-NEXT: rldicl 8, 5, 6, 58
; BE-NEXT: rldicl 8, 8, 58, 5
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 384(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 392(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 5, 59
; BE-NEXT: rldicl 7, 7, 59, 4
; BE-NEXT: rldicl 8, 5, 4, 60
; BE-NEXT: rldicl 8, 8, 60, 3
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: std 7, 368(1) # 8-byte Folded Spill
; BE-NEXT: mulld 7, 3, 8
; BE-NEXT: std 7, 376(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 7, 5, 3, 61
; BE-NEXT: rldicl 5, 5, 2, 62
; BE-NEXT: rldicl 7, 7, 61, 2
; BE-NEXT: rldicl 5, 5, 62, 1
; BE-NEXT: mulld 7, 3, 7
; BE-NEXT: mulld 3, 3, 5
; BE-NEXT: std 7, 352(1) # 8-byte Folded Spill
; BE-NEXT: std 3, 360(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 30, 30
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 344(1) # 8-byte Folded Spill
; BE-NEXT: clrldi 3, 6, 63
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 336(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 29, 29
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 328(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 28, 28
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 320(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 27, 27
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 312(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 26, 26
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 304(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 25, 25
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 296(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 24, 24
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 288(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 23, 23
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 280(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 22, 22
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 272(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 21, 21
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 264(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 20, 20
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 256(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 19, 19
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 248(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 18, 18
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 240(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 17, 17
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 232(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 16, 16
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 224(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 15, 15
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 216(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 14, 14
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 208(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 13, 13
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 200(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 12, 12
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 192(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 11, 11
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 184(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 10, 10
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 176(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 9, 9
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 168(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 8, 8
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 160(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 7, 7
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 152(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 6, 6
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 144(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 5, 5
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 136(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 4, 4
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 128(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 3, 3
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 120(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 2, 2
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 112(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 1, 1
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 104(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 6, 0, 0, 0
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 96(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 6, 32, 32
; BE-NEXT: rldicl 3, 3, 32, 31
; BE-NEXT: rldicr 5, 6, 0, 0
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 3, 80(1) # 8-byte Folded Spill
; BE-NEXT: std 5, 88(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 6, 31, 33
; BE-NEXT: rldicl 5, 6, 30, 34
; BE-NEXT: rldicl 3, 3, 33, 30
; BE-NEXT: rldicl 5, 5, 34, 29
; BE-NEXT: mulld 3, 4, 3
; BE-NEXT: std 3, 64(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 4, 5
; BE-NEXT: std 3, 72(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 6, 29, 35
; BE-NEXT: rldicl 5, 6, 28, 36
; BE-NEXT: rldicl 3, 3, 35, 28
; BE-NEXT: rldicl 5, 5, 36, 27
; BE-NEXT: mulld 31, 4, 3
; BE-NEXT: mulld 3, 4, 5
; BE-NEXT: std 3, 56(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 6, 27, 37
; BE-NEXT: rldicl 3, 3, 37, 26
; BE-NEXT: rldicl 5, 6, 26, 38
; BE-NEXT: mulld 15, 4, 3
; BE-NEXT: rldicl 3, 6, 25, 39
; BE-NEXT: rldicl 5, 5, 38, 25
; BE-NEXT: rldicl 3, 3, 39, 24
; BE-NEXT: mulld 14, 4, 5
; BE-NEXT: rldicl 5, 6, 24, 40
; BE-NEXT: mulld 17, 4, 3
; BE-NEXT: rldicl 3, 6, 23, 41
; BE-NEXT: rldicl 5, 5, 40, 23
; BE-NEXT: rldicl 3, 3, 41, 22
; BE-NEXT: mulld 16, 4, 5
; BE-NEXT: rldicl 5, 6, 22, 42
; BE-NEXT: mulld 19, 4, 3
; BE-NEXT: rldicl 3, 6, 21, 43
; BE-NEXT: rldicl 5, 5, 42, 21
; BE-NEXT: rldicl 3, 3, 43, 20
; BE-NEXT: mulld 18, 4, 5
; BE-NEXT: rldicl 5, 6, 20, 44
; BE-NEXT: mulld 21, 4, 3
; BE-NEXT: rldicl 3, 6, 19, 45
; BE-NEXT: rldicl 5, 5, 44, 19
; BE-NEXT: rldicl 3, 3, 45, 18
; BE-NEXT: mulld 20, 4, 5
; BE-NEXT: rldicl 5, 6, 18, 46
; BE-NEXT: mulld 23, 4, 3
; BE-NEXT: rldicl 3, 6, 17, 47
; BE-NEXT: rldicl 5, 5, 46, 17
; BE-NEXT: rldicl 3, 3, 47, 16
; BE-NEXT: mulld 22, 4, 5
; BE-NEXT: rldicl 5, 6, 16, 48
; BE-NEXT: mulld 25, 4, 3
; BE-NEXT: rldicl 3, 6, 15, 49
; BE-NEXT: rldicl 5, 5, 48, 15
; BE-NEXT: rldicl 3, 3, 49, 14
; BE-NEXT: mulld 24, 4, 5
; BE-NEXT: rldicl 5, 6, 14, 50
; BE-NEXT: mulld 27, 4, 3
; BE-NEXT: rldicl 3, 6, 13, 51
; BE-NEXT: rldicl 5, 5, 50, 13
; BE-NEXT: rldicl 3, 3, 51, 12
; BE-NEXT: mulld 26, 4, 5
; BE-NEXT: rldicl 5, 6, 12, 52
; BE-NEXT: mulld 29, 4, 3
; BE-NEXT: rldicl 3, 6, 11, 53
; BE-NEXT: rldicl 5, 5, 52, 11
; BE-NEXT: rldicl 3, 3, 53, 10
; BE-NEXT: mulld 28, 4, 5
; BE-NEXT: rldicl 5, 6, 10, 54
; BE-NEXT: mulld 0, 4, 3
; BE-NEXT: rldicl 3, 6, 9, 55
; BE-NEXT: rldicl 5, 5, 54, 9
; BE-NEXT: rldicl 3, 3, 55, 8
; BE-NEXT: mulld 30, 4, 5
; BE-NEXT: rldicl 5, 6, 8, 56
; BE-NEXT: mulld 11, 4, 3
; BE-NEXT: rldicl 3, 6, 7, 57
; BE-NEXT: rldicl 5, 5, 56, 7
; BE-NEXT: rldicl 3, 3, 57, 6
; BE-NEXT: mulld 12, 4, 5
; BE-NEXT: rldicl 5, 6, 6, 58
; BE-NEXT: mulld 9, 4, 3
; BE-NEXT: rldicl 3, 6, 5, 59
; BE-NEXT: rldicl 5, 5, 58, 5
; BE-NEXT: rldicl 3, 3, 59, 4
; BE-NEXT: mulld 10, 4, 5
; BE-NEXT: rldicl 5, 6, 4, 60
; BE-NEXT: mulld 7, 4, 3
; BE-NEXT: rldicl 3, 6, 3, 61
; BE-NEXT: rldicl 5, 5, 60, 3
; BE-NEXT: rldicl 6, 6, 2, 62
; BE-NEXT: rldicl 3, 3, 61, 2
; BE-NEXT: mulld 8, 4, 5
; BE-NEXT: rldicl 5, 6, 62, 1
; BE-NEXT: mulld 6, 4, 3
; BE-NEXT: ld 3, 848(1) # 8-byte Folded Reload
; BE-NEXT: mulld 4, 4, 5
; BE-NEXT: ld 5, 344(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 2, 3
; BE-NEXT: ld 2, 336(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 2, 5
; BE-NEXT: ld 2, 840(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 328(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 824(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 320(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 832(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 312(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 808(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 304(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 816(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 296(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 792(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 288(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 800(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 280(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 776(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 272(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 784(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 264(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 760(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 256(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 768(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 248(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 744(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 240(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 752(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 232(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 728(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 224(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 736(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 216(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 712(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 208(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 720(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 200(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 696(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 192(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 704(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 184(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 680(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 176(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 688(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 168(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 664(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 160(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 672(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 152(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 648(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 144(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 656(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 136(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 640(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 128(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 632(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 120(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 624(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 112(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 616(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 104(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 608(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 96(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 592(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 80(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 576(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 64(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 584(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 72(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 2
; BE-NEXT: ld 2, 560(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 31
; BE-NEXT: ld 31, 568(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: xor 3, 3, 31
; BE-NEXT: ld 31, 56(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 31
; BE-NEXT: ld 31, 544(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 15
; BE-NEXT: xor 5, 5, 14
; BE-NEXT: ld 15, 552(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 31
; BE-NEXT: xor 5, 5, 17
; BE-NEXT: xor 5, 5, 16
; BE-NEXT: xor 3, 3, 15
; BE-NEXT: ld 15, 528(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 19
; BE-NEXT: xor 5, 5, 18
; BE-NEXT: ld 17, 536(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 15
; BE-NEXT: xor 5, 5, 21
; BE-NEXT: xor 5, 5, 20
; BE-NEXT: xor 3, 3, 17
; BE-NEXT: ld 17, 512(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 23
; BE-NEXT: xor 5, 5, 22
; BE-NEXT: ld 19, 520(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 17
; BE-NEXT: xor 5, 5, 25
; BE-NEXT: xor 5, 5, 24
; BE-NEXT: xor 3, 3, 19
; BE-NEXT: ld 19, 496(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 27
; BE-NEXT: xor 5, 5, 26
; BE-NEXT: ld 21, 504(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 19
; BE-NEXT: xor 5, 5, 29
; BE-NEXT: xor 5, 5, 28
; BE-NEXT: xor 3, 3, 21
; BE-NEXT: ld 21, 480(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 0
; BE-NEXT: xor 5, 5, 30
; BE-NEXT: ld 23, 488(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 21
; BE-NEXT: xor 5, 5, 11
; BE-NEXT: xor 5, 5, 12
; BE-NEXT: xor 3, 3, 23
; BE-NEXT: ld 23, 464(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 9
; BE-NEXT: xor 5, 5, 10
; BE-NEXT: ld 25, 472(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 23
; BE-NEXT: xor 5, 5, 7
; BE-NEXT: xor 5, 5, 8
; BE-NEXT: xor 3, 3, 25
; BE-NEXT: ld 25, 448(1) # 8-byte Folded Reload
; BE-NEXT: xor 5, 5, 6
; BE-NEXT: xor 4, 5, 4
; BE-NEXT: ld 27, 456(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 25
; BE-NEXT: xor 3, 3, 27
; BE-NEXT: ld 27, 432(1) # 8-byte Folded Reload
; BE-NEXT: ld 29, 440(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 27
; BE-NEXT: xor 3, 3, 29
; BE-NEXT: ld 29, 416(1) # 8-byte Folded Reload
; BE-NEXT: ld 0, 424(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 29
; BE-NEXT: xor 3, 3, 0
; BE-NEXT: ld 0, 400(1) # 8-byte Folded Reload
; BE-NEXT: ld 11, 408(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 0
; BE-NEXT: xor 3, 3, 11
; BE-NEXT: ld 11, 384(1) # 8-byte Folded Reload
; BE-NEXT: ld 9, 392(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 11
; BE-NEXT: xor 3, 3, 9
; BE-NEXT: ld 9, 368(1) # 8-byte Folded Reload
; BE-NEXT: ld 7, 376(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 9
; BE-NEXT: xor 3, 3, 7
; BE-NEXT: ld 7, 352(1) # 8-byte Folded Reload
; BE-NEXT: ld 6, 360(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 7
; BE-NEXT: ld 5, 600(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 6
; BE-NEXT: xor 3, 3, 5
; BE-NEXT: ld 5, 88(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 5
; BE-NEXT: ld 2, 856(1) # 8-byte Folded Reload
; BE-NEXT: ld 31, 1000(1) # 8-byte Folded Reload
; BE-NEXT: ld 30, 992(1) # 8-byte Folded Reload
; BE-NEXT: ld 29, 984(1) # 8-byte Folded Reload
; BE-NEXT: ld 28, 976(1) # 8-byte Folded Reload
; BE-NEXT: ld 27, 968(1) # 8-byte Folded Reload
; BE-NEXT: ld 26, 960(1) # 8-byte Folded Reload
; BE-NEXT: ld 25, 952(1) # 8-byte Folded Reload
; BE-NEXT: ld 24, 944(1) # 8-byte Folded Reload
; BE-NEXT: ld 23, 936(1) # 8-byte Folded Reload
; BE-NEXT: ld 22, 928(1) # 8-byte Folded Reload
; BE-NEXT: ld 21, 920(1) # 8-byte Folded Reload
; BE-NEXT: ld 20, 912(1) # 8-byte Folded Reload
; BE-NEXT: ld 19, 904(1) # 8-byte Folded Reload
; BE-NEXT: ld 18, 896(1) # 8-byte Folded Reload
; BE-NEXT: ld 17, 888(1) # 8-byte Folded Reload
; BE-NEXT: ld 16, 880(1) # 8-byte Folded Reload
; BE-NEXT: ld 15, 872(1) # 8-byte Folded Reload
; BE-NEXT: ld 14, 864(1) # 8-byte Folded Reload
; BE-NEXT: addi 1, 1, 1008
; BE-NEXT: blr
;
; LE-LABEL: clmul_v2i64:
; LE: # %bb.0:
; LE-NEXT: vspltisw 4, 2
; LE-NEXT: vspltisw 0, 1
; LE-NEXT: vaddudm 8, 2, 2
; LE-NEXT: addis 3, 2, .LCPI3_0@toc@ha
; LE-NEXT: vspltisw 6, 8
; LE-NEXT: addi 3, 3, .LCPI3_0@toc@l
; LE-NEXT: vspltisw 5, 4
; LE-NEXT: vupklsw 7, 4
; LE-NEXT: vspltisw 4, 3
; LE-NEXT: vupklsw 1, 0
; LE-NEXT: vsld 9, 2, 7
; LE-NEXT: xxland 39, 35, 39
; LE-NEXT: vupklsw 6, 6
; LE-NEXT: vupklsw 5, 5
; LE-NEXT: xxland 42, 35, 37
; LE-NEXT: vupklsw 0, 4
; LE-NEXT: xxlxor 36, 36, 36
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: xxland 33, 35, 33
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: vcmpgtud 10, 10, 4
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 2, 39, 40
; LE-NEXT: xxland 39, 35, 38
; LE-NEXT: xxland 0, 42, 41
; LE-NEXT: xxland 10, 33, 34
; LE-NEXT: vsld 6, 2, 6
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: xxlxor 2, 10, 2
; LE-NEXT: xxland 1, 39, 32
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_1@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_1@toc@l
; LE-NEXT: vspltisw 8, 5
; LE-NEXT: vspltisw 10, 7
; LE-NEXT: xxlxor 0, 2, 0
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: xxland 41, 35, 32
; LE-NEXT: vupklsw 8, 8
; LE-NEXT: vsld 8, 2, 8
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: vupklsw 10, 10
; LE-NEXT: xxland 3, 41, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_2@toc@ha
; LE-NEXT: vspltisw 7, 6
; LE-NEXT: addi 3, 3, .LCPI3_2@toc@l
; LE-NEXT: xxlxor 0, 0, 3
; LE-NEXT: lxvd2x 5, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_3@toc@ha
; LE-NEXT: xxland 41, 35, 37
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_3@toc@l
; LE-NEXT: vupklsw 7, 7
; LE-NEXT: vsld 7, 2, 7
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: lxvd2x 6, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_4@toc@ha
; LE-NEXT: xxland 4, 41, 40
; LE-NEXT: xxland 40, 35, 5
; LE-NEXT: addi 3, 3, .LCPI3_4@toc@l
; LE-NEXT: vcmpgtud 8, 8, 4
; LE-NEXT: xxlxor 0, 0, 4
; LE-NEXT: lxvd2x 7, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_5@toc@ha
; LE-NEXT: xxland 41, 35, 6
; LE-NEXT: xxland 5, 40, 39
; LE-NEXT: vsld 7, 2, 10
; LE-NEXT: addi 3, 3, .LCPI3_5@toc@l
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxlxor 0, 0, 5
; LE-NEXT: lxvd2x 8, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_6@toc@ha
; LE-NEXT: xxland 6, 41, 39
; LE-NEXT: xxland 41, 35, 7
; LE-NEXT: addi 3, 3, .LCPI3_6@toc@l
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxlxor 0, 0, 6
; LE-NEXT: lxvd2x 9, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_7@toc@ha
; LE-NEXT: xxland 7, 41, 38
; LE-NEXT: addi 3, 3, .LCPI3_7@toc@l
; LE-NEXT: xxlxor 0, 0, 7
; LE-NEXT: lxvd2x 10, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_8@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_8@toc@l
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_9@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_9@toc@l
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_10@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_10@toc@l
; LE-NEXT: vspltisw 8, 9
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: vsld 6, 2, 7
; LE-NEXT: xxland 39, 35, 8
; LE-NEXT: vspltisw 8, 10
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: xxland 8, 39, 38
; LE-NEXT: xxland 39, 35, 9
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: vupklsw 8, 8
; LE-NEXT: vsld 6, 2, 8
; LE-NEXT: xxland 9, 39, 38
; LE-NEXT: xxland 39, 35, 10
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: xxlxor 0, 0, 8
; LE-NEXT: xxlxor 0, 0, 9
; LE-NEXT: vspltisw 9, 11
; LE-NEXT: vupklsw 8, 9
; LE-NEXT: vsld 1, 2, 8
; LE-NEXT: xxland 10, 39, 33
; LE-NEXT: xxland 39, 35, 1
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: xxlxor 0, 0, 10
; LE-NEXT: vspltisw 6, 12
; LE-NEXT: vupklsw 6, 6
; LE-NEXT: vsld 6, 2, 6
; LE-NEXT: xxland 1, 39, 38
; LE-NEXT: xxland 39, 35, 2
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: addis 3, 2, .LCPI3_11@toc@ha
; LE-NEXT: vspltisw 1, 13
; LE-NEXT: addi 3, 3, .LCPI3_11@toc@l
; LE-NEXT: vupklsw 1, 1
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: xxland 2, 39, 33
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_12@toc@ha
; LE-NEXT: xxland 39, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_12@toc@l
; LE-NEXT: vspltisw 6, 14
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: vupklsw 6, 6
; LE-NEXT: vsld 6, 2, 6
; LE-NEXT: xxland 1, 39, 38
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_13@toc@ha
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: vspltisw 1, 15
; LE-NEXT: addi 3, 3, .LCPI3_13@toc@l
; LE-NEXT: vupklsw 1, 1
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_14@toc@ha
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_14@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_15@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_15@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_16@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_16@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_17@toc@ha
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_17@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_18@toc@ha
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_18@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_19@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_19@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_20@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_20@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_21@toc@ha
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_21@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_22@toc@ha
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_22@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_23@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_23@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_24@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_24@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_25@toc@ha
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_25@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_26@toc@ha
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_26@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_27@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_27@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_28@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_28@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_29@toc@ha
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_29@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_30@toc@ha
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_30@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_31@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_31@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_32@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_32@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_33@toc@ha
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_33@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_34@toc@ha
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_34@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_35@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_35@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_36@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_36@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_37@toc@ha
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_37@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_38@toc@ha
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_38@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_39@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_39@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_40@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_40@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_41@toc@ha
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_41@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_42@toc@ha
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_42@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_43@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_43@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_44@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_44@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_45@toc@ha
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_45@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_46@toc@ha
; LE-NEXT: xxland 1, 38, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_46@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_47@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_47@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_48@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_48@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_49@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_49@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_50@toc@ha
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_50@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_51@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_51@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_52@toc@ha
; LE-NEXT: xxland 1, 38, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_52@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_53@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_53@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_54@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_54@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_55@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_55@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_56@toc@ha
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_56@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_57@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_57@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_58@toc@ha
; LE-NEXT: xxland 1, 38, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_58@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_59@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_59@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_60@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_60@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_61@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_61@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_62@toc@ha
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_62@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_63@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_63@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_64@toc@ha
; LE-NEXT: xxland 1, 38, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_64@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_65@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_65@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_66@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_66@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_67@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_67@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_68@toc@ha
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_68@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_69@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_69@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_70@toc@ha
; LE-NEXT: xxland 1, 38, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_70@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_71@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_71@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_72@toc@ha
; LE-NEXT: xxland 1, 38, 32
; LE-NEXT: vsld 1, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_72@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_73@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_73@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_74@toc@ha
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_74@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_75@toc@ha
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_75@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_76@toc@ha
; LE-NEXT: xxland 1, 38, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_76@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 33, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_77@toc@ha
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addi 3, 3, .LCPI3_77@toc@l
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_78@toc@ha
; LE-NEXT: xxland 2, 38, 32
; LE-NEXT: vsld 0, 2, 1
; LE-NEXT: addi 3, 3, .LCPI3_78@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_79@toc@ha
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_79@toc@l
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_80@toc@ha
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_80@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_81@toc@ha
; LE-NEXT: xxland 33, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_81@toc@l
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_82@toc@ha
; LE-NEXT: xxland 2, 33, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: addi 3, 3, .LCPI3_82@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_83@toc@ha
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_83@toc@l
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: lxvd2x 2, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_84@toc@ha
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_84@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_85@toc@ha
; LE-NEXT: xxland 33, 35, 2
; LE-NEXT: addi 3, 3, .LCPI3_85@toc@l
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 37
; LE-NEXT: vsld 0, 2, 0
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_86@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_86@toc@l
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_87@toc@ha
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_87@toc@l
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_88@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_88@toc@l
; LE-NEXT: lxvd2x 32, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_89@toc@ha
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: addi 3, 3, .LCPI3_89@toc@l
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 37
; LE-NEXT: vsld 5, 2, 0
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_90@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_90@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_91@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_91@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_92@toc@ha
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_92@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_93@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_93@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_94@toc@ha
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_94@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_95@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_95@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_96@toc@ha
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_96@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_97@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_97@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_98@toc@ha
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_98@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_99@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_99@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_100@toc@ha
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_100@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_101@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_101@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_102@toc@ha
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_102@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_103@toc@ha
; LE-NEXT: addi 3, 3, .LCPI3_103@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI3_104@toc@ha
; LE-NEXT: vsld 5, 2, 5
; LE-NEXT: addi 3, 3, .LCPI3_104@toc@l
; LE-NEXT: xxland 32, 35, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: xxleqv 37, 37, 37
; LE-NEXT: vsld 2, 2, 5
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: xxland 35, 35, 1
; LE-NEXT: vcmpgtud 3, 3, 4
; LE-NEXT: xxland 1, 35, 34
; LE-NEXT: xxlxor 34, 0, 1
; LE-NEXT: blr
%res = call <2 x i64> @llvm.clmul.v2i64(<2 x i64> %a, <2 x i64> %b)
ret <2 x i64> %res
}
define <16 x i8> @clmulr_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
; BE-LABEL: clmulr_v16i8:
; BE: # %bb.0:
; BE-NEXT: li 3, -48
; BE-NEXT: vspltisb 4, 4
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -32
; BE-NEXT: vsrb 1, 3, 4
; BE-NEXT: vspltisb 5, 15
; BE-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -16
; BE-NEXT: vspltisb 7, -1
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI4_0@toc@ha
; BE-NEXT: addi 3, 3, .LCPI4_0@toc@l
; BE-NEXT: vand 3, 3, 5
; BE-NEXT: vspltisb 13, 8
; BE-NEXT: vslb 3, 3, 4
; BE-NEXT: vsrb 0, 2, 4
; BE-NEXT: vand 2, 2, 5
; BE-NEXT: vor 1, 1, 3
; BE-NEXT: lvx 3, 0, 3
; BE-NEXT: addis 3, 2, .LCPI4_1@toc@ha
; BE-NEXT: addi 3, 3, .LCPI4_1@toc@l
; BE-NEXT: vslb 2, 2, 4
; BE-NEXT: vor 0, 0, 2
; BE-NEXT: vspltisb 2, 2
; BE-NEXT: vsrb 9, 1, 2
; BE-NEXT: vand 1, 1, 3
; BE-NEXT: vand 9, 9, 3
; BE-NEXT: vslb 1, 1, 2
; BE-NEXT: vsrb 8, 0, 2
; BE-NEXT: vand 0, 0, 3
; BE-NEXT: vor 9, 9, 1
; BE-NEXT: lvx 1, 0, 3
; BE-NEXT: addis 3, 2, .LCPI4_3@toc@ha
; BE-NEXT: addi 3, 3, .LCPI4_3@toc@l
; BE-NEXT: lvx 15, 0, 3
; BE-NEXT: addis 3, 2, .LCPI4_2@toc@ha
; BE-NEXT: addi 3, 3, .LCPI4_2@toc@l
; BE-NEXT: vand 8, 8, 3
; BE-NEXT: vslb 0, 0, 2
; BE-NEXT: vor 8, 8, 0
; BE-NEXT: vspltisb 0, 1
; BE-NEXT: vsrb 11, 9, 0
; BE-NEXT: vand 9, 9, 1
; BE-NEXT: vaddubm 9, 9, 9
; BE-NEXT: vand 11, 11, 1
; BE-NEXT: vsrb 10, 8, 0
; BE-NEXT: vand 8, 8, 1
; BE-NEXT: vaddubm 8, 8, 8
; BE-NEXT: vor 9, 11, 9
; BE-NEXT: vslb 6, 4, 4
; BE-NEXT: vslb 7, 7, 7
; BE-NEXT: vand 10, 10, 1
; BE-NEXT: vand 14, 9, 13
; BE-NEXT: vaddubm 13, 13, 13
; BE-NEXT: vor 8, 10, 8
; BE-NEXT: vand 10, 9, 2
; BE-NEXT: vand 11, 9, 0
; BE-NEXT: vand 12, 9, 4
; BE-NEXT: vand 13, 9, 13
; BE-NEXT: vand 15, 9, 15
; BE-NEXT: vand 6, 9, 6
; BE-NEXT: vand 7, 9, 7
; BE-NEXT: vmuloub 9, 8, 10
; BE-NEXT: vmuleub 10, 8, 10
; BE-NEXT: vmuloub 16, 8, 11
; BE-NEXT: vmuleub 11, 8, 11
; BE-NEXT: vmuloub 17, 8, 12
; BE-NEXT: vmuleub 12, 8, 12
; BE-NEXT: vmuloub 18, 8, 14
; BE-NEXT: vmuleub 14, 8, 14
; BE-NEXT: vmuloub 19, 8, 13
; BE-NEXT: vmuleub 13, 8, 13
; BE-NEXT: vmuloub 31, 8, 15
; BE-NEXT: vmuleub 15, 8, 15
; BE-NEXT: vmuloub 30, 8, 6
; BE-NEXT: vmuleub 6, 8, 6
; BE-NEXT: vmuloub 29, 8, 7
; BE-NEXT: vmuleub 7, 8, 7
; BE-NEXT: lvx 8, 0, 3
; BE-NEXT: li 3, -16
; BE-NEXT: vperm 9, 10, 9, 8
; BE-NEXT: vperm 10, 11, 16, 8
; BE-NEXT: vperm 11, 12, 17, 8
; BE-NEXT: vperm 12, 14, 18, 8
; BE-NEXT: vperm 13, 13, 19, 8
; BE-NEXT: vperm 14, 15, 31, 8
; BE-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -32
; BE-NEXT: vperm 6, 6, 30, 8
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -48
; BE-NEXT: vperm 7, 7, 29, 8
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: vxor 8, 10, 9
; BE-NEXT: vxor 8, 8, 11
; BE-NEXT: vxor 8, 8, 12
; BE-NEXT: vxor 8, 8, 13
; BE-NEXT: vxor 8, 8, 14
; BE-NEXT: vxor 6, 8, 6
; BE-NEXT: vxor 6, 6, 7
; BE-NEXT: vand 5, 6, 5
; BE-NEXT: vsrb 7, 6, 4
; BE-NEXT: vslb 4, 5, 4
; BE-NEXT: vor 4, 7, 4
; BE-NEXT: vand 5, 4, 3
; BE-NEXT: vsrb 4, 4, 2
; BE-NEXT: vslb 2, 5, 2
; BE-NEXT: vand 3, 4, 3
; BE-NEXT: vor 2, 3, 2
; BE-NEXT: vsrb 3, 2, 0
; BE-NEXT: vand 2, 2, 1
; BE-NEXT: vaddubm 2, 2, 2
; BE-NEXT: vand 3, 3, 1
; BE-NEXT: vor 2, 3, 2
; BE-NEXT: blr
;
; LE-LABEL: clmulr_v16i8:
; LE: # %bb.0:
; LE-NEXT: addis 3, 2, .LCPI4_0@toc@ha
; LE-NEXT: vspltisb 4, 4
; LE-NEXT: vspltisb 5, 2
; LE-NEXT: addi 3, 3, .LCPI4_0@toc@l
; LE-NEXT: vslb 1, 3, 4
; LE-NEXT: vsrb 3, 3, 4
; LE-NEXT: vslb 6, 2, 4
; LE-NEXT: vsrb 2, 2, 4
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: addis 3, 2, .LCPI4_1@toc@ha
; LE-NEXT: xxlor 35, 35, 33
; LE-NEXT: xxlor 34, 34, 38
; LE-NEXT: vspltisb 0, 1
; LE-NEXT: addi 3, 3, .LCPI4_1@toc@l
; LE-NEXT: vsrb 1, 3, 5
; LE-NEXT: vsrb 7, 2, 5
; LE-NEXT: vspltisb 6, 8
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI4_2@toc@ha
; LE-NEXT: xxland 35, 35, 0
; LE-NEXT: xxland 34, 34, 0
; LE-NEXT: xxland 2, 33, 0
; LE-NEXT: xxland 3, 39, 0
; LE-NEXT: addi 3, 3, .LCPI4_2@toc@l
; LE-NEXT: vslb 3, 3, 5
; LE-NEXT: vslb 2, 2, 5
; LE-NEXT: xxlor 35, 2, 35
; LE-NEXT: xxlor 34, 3, 34
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI4_3@toc@ha
; LE-NEXT: vsrb 1, 3, 0
; LE-NEXT: xxland 35, 35, 1
; LE-NEXT: vsrb 7, 2, 0
; LE-NEXT: xxland 34, 34, 1
; LE-NEXT: addi 3, 3, .LCPI4_3@toc@l
; LE-NEXT: xxland 2, 33, 1
; LE-NEXT: vaddubm 3, 3, 3
; LE-NEXT: vaddubm 2, 2, 2
; LE-NEXT: xxlor 2, 2, 35
; LE-NEXT: xxland 35, 2, 37
; LE-NEXT: xxswapd 33, 3
; LE-NEXT: xxland 3, 39, 1
; LE-NEXT: xxlor 34, 3, 34
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: vmuloub 7, 2, 3
; LE-NEXT: vmuleub 3, 2, 3
; LE-NEXT: vperm 3, 3, 7, 1
; LE-NEXT: xxland 39, 2, 32
; LE-NEXT: vmuloub 8, 2, 7
; LE-NEXT: vmuleub 7, 2, 7
; LE-NEXT: vperm 7, 7, 8, 1
; LE-NEXT: xxland 40, 2, 36
; LE-NEXT: vmuloub 9, 2, 8
; LE-NEXT: vmuleub 8, 2, 8
; LE-NEXT: vperm 8, 8, 9, 1
; LE-NEXT: xxland 41, 2, 38
; LE-NEXT: vaddubm 6, 6, 6
; LE-NEXT: vmuloub 10, 2, 9
; LE-NEXT: vmuleub 9, 2, 9
; LE-NEXT: xxland 38, 2, 38
; LE-NEXT: vperm 9, 9, 10, 1
; LE-NEXT: vmuloub 10, 2, 6
; LE-NEXT: vmuleub 6, 2, 6
; LE-NEXT: vperm 6, 6, 10, 1
; LE-NEXT: xxland 42, 2, 3
; LE-NEXT: vmuloub 11, 2, 10
; LE-NEXT: vmuleub 10, 2, 10
; LE-NEXT: vperm 10, 10, 11, 1
; LE-NEXT: vslb 11, 4, 4
; LE-NEXT: xxland 43, 2, 43
; LE-NEXT: vmuloub 12, 2, 11
; LE-NEXT: vmuleub 11, 2, 11
; LE-NEXT: vperm 11, 11, 12, 1
; LE-NEXT: xxleqv 44, 44, 44
; LE-NEXT: vslb 12, 12, 12
; LE-NEXT: xxland 44, 2, 44
; LE-NEXT: xxlxor 2, 39, 35
; LE-NEXT: xxlxor 2, 2, 40
; LE-NEXT: vmuloub 13, 2, 12
; LE-NEXT: vmuleub 2, 2, 12
; LE-NEXT: xxlxor 2, 2, 41
; LE-NEXT: xxlxor 2, 2, 38
; LE-NEXT: xxlxor 2, 2, 42
; LE-NEXT: xxlxor 2, 2, 43
; LE-NEXT: vperm 2, 2, 13, 1
; LE-NEXT: xxlxor 34, 2, 34
; LE-NEXT: vslb 3, 2, 4
; LE-NEXT: vsrb 2, 2, 4
; LE-NEXT: xxlor 34, 34, 35
; LE-NEXT: xxland 35, 34, 0
; LE-NEXT: vsrb 2, 2, 5
; LE-NEXT: vslb 3, 3, 5
; LE-NEXT: xxland 0, 34, 0
; LE-NEXT: xxlor 34, 0, 35
; LE-NEXT: vsrb 3, 2, 0
; LE-NEXT: xxland 34, 34, 1
; LE-NEXT: xxland 0, 35, 1
; LE-NEXT: vaddubm 2, 2, 2
; LE-NEXT: xxlor 34, 0, 34
; LE-NEXT: blr
%a.ext = zext <16 x i8> %a to <16 x i16>
%b.ext = zext <16 x i8> %b to <16 x i16>
%clmul = call <16 x i16> @llvm.clmul.v16i16(<16 x i16> %a.ext, <16 x i16> %b.ext)
%res.ext = lshr <16 x i16> %clmul, splat (i16 7)
%res = trunc <16 x i16> %res.ext to <16 x i8>
ret <16 x i8> %res
}
define <8 x i16> @clmulr_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
; BE-LABEL: clmulr_v8i16:
; BE: # %bb.0:
; BE-NEXT: li 3, -80
; BE-NEXT: vspltisb 5, -1
; BE-NEXT: stvx 27, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -64
; BE-NEXT: vslh 16, 5, 5
; BE-NEXT: vspltish 4, 4
; BE-NEXT: stvx 28, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -48
; BE-NEXT: vspltish 8, 1
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -32
; BE-NEXT: vspltish 14, 2
; BE-NEXT: vslh 0, 4, 4
; BE-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -16
; BE-NEXT: vspltish 15, 8
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI5_0@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_0@toc@l
; BE-NEXT: lvx 5, 0, 3
; BE-NEXT: addis 3, 2, .LCPI5_1@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_1@toc@l
; BE-NEXT: vsldoi 7, 8, 8, 1
; BE-NEXT: vperm 1, 2, 2, 5
; BE-NEXT: vspltisb 2, 4
; BE-NEXT: vperm 6, 3, 3, 5
; BE-NEXT: vspltisb 3, 15
; BE-NEXT: vsrb 10, 1, 2
; BE-NEXT: vand 1, 1, 3
; BE-NEXT: vslb 1, 1, 2
; BE-NEXT: vsrb 12, 6, 2
; BE-NEXT: vand 6, 6, 3
; BE-NEXT: vor 10, 10, 1
; BE-NEXT: lvx 1, 0, 3
; BE-NEXT: addis 3, 2, .LCPI5_2@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_2@toc@l
; BE-NEXT: vslb 6, 6, 2
; BE-NEXT: vor 12, 12, 6
; BE-NEXT: vspltisb 6, 2
; BE-NEXT: vand 18, 12, 1
; BE-NEXT: vsrb 12, 12, 6
; BE-NEXT: vslb 18, 18, 6
; BE-NEXT: vand 12, 12, 1
; BE-NEXT: vand 17, 10, 1
; BE-NEXT: vsrb 10, 10, 6
; BE-NEXT: vor 18, 12, 18
; BE-NEXT: lvx 12, 0, 3
; BE-NEXT: addis 3, 2, .LCPI5_3@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_3@toc@l
; BE-NEXT: vslb 17, 17, 6
; BE-NEXT: vand 10, 10, 1
; BE-NEXT: vor 17, 10, 17
; BE-NEXT: vspltisb 10, 1
; BE-NEXT: vsrb 31, 18, 10
; BE-NEXT: vand 18, 18, 12
; BE-NEXT: vaddubm 18, 18, 18
; BE-NEXT: vand 31, 31, 12
; BE-NEXT: vor 18, 31, 18
; BE-NEXT: lvx 31, 0, 3
; BE-NEXT: addis 3, 2, .LCPI5_4@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_4@toc@l
; BE-NEXT: lvx 30, 0, 3
; BE-NEXT: addis 3, 2, .LCPI5_5@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_5@toc@l
; BE-NEXT: lvx 29, 0, 3
; BE-NEXT: addis 3, 2, .LCPI5_6@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_6@toc@l
; BE-NEXT: vsrb 19, 17, 10
; BE-NEXT: lvx 28, 0, 3
; BE-NEXT: addis 3, 2, .LCPI5_7@toc@ha
; BE-NEXT: addi 3, 3, .LCPI5_7@toc@l
; BE-NEXT: lvx 27, 0, 3
; BE-NEXT: li 3, -16
; BE-NEXT: vand 17, 17, 12
; BE-NEXT: vaddubm 17, 17, 17
; BE-NEXT: vand 19, 19, 12
; BE-NEXT: vsldoi 9, 14, 14, 1
; BE-NEXT: vsldoi 11, 4, 4, 1
; BE-NEXT: vslh 13, 15, 15
; BE-NEXT: vor 17, 19, 17
; BE-NEXT: vand 19, 18, 15
; BE-NEXT: vadduhm 15, 15, 15
; BE-NEXT: vand 14, 18, 14
; BE-NEXT: vand 8, 18, 8
; BE-NEXT: vand 4, 18, 4
; BE-NEXT: vand 15, 18, 15
; BE-NEXT: vand 31, 18, 31
; BE-NEXT: vand 0, 18, 0
; BE-NEXT: vand 30, 18, 30
; BE-NEXT: vand 7, 18, 7
; BE-NEXT: vand 9, 18, 9
; BE-NEXT: vand 11, 18, 11
; BE-NEXT: vand 13, 18, 13
; BE-NEXT: vand 29, 18, 29
; BE-NEXT: vand 28, 18, 28
; BE-NEXT: vand 27, 18, 27
; BE-NEXT: vand 16, 18, 16
; BE-NEXT: vxor 18, 18, 18
; BE-NEXT: vmladduhm 14, 17, 14, 18
; BE-NEXT: vmladduhm 8, 17, 8, 18
; BE-NEXT: vmladduhm 4, 17, 4, 18
; BE-NEXT: vxor 8, 8, 14
; BE-NEXT: vmladduhm 19, 17, 19, 18
; BE-NEXT: vxor 4, 8, 4
; BE-NEXT: vmladduhm 15, 17, 15, 18
; BE-NEXT: vxor 4, 4, 19
; BE-NEXT: vmladduhm 31, 17, 31, 18
; BE-NEXT: vxor 4, 4, 15
; BE-NEXT: vmladduhm 0, 17, 0, 18
; BE-NEXT: vxor 4, 4, 31
; BE-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -32
; BE-NEXT: vmladduhm 30, 17, 30, 18
; BE-NEXT: vxor 4, 4, 0
; BE-NEXT: vmladduhm 7, 17, 7, 18
; BE-NEXT: vxor 4, 4, 30
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -48
; BE-NEXT: vmladduhm 9, 17, 9, 18
; BE-NEXT: vxor 4, 4, 7
; BE-NEXT: vmladduhm 11, 17, 11, 18
; BE-NEXT: vxor 4, 4, 9
; BE-NEXT: vmladduhm 13, 17, 13, 18
; BE-NEXT: vxor 4, 4, 11
; BE-NEXT: vmladduhm 29, 17, 29, 18
; BE-NEXT: vxor 4, 4, 13
; BE-NEXT: vmladduhm 28, 17, 28, 18
; BE-NEXT: vxor 4, 4, 29
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -64
; BE-NEXT: vmladduhm 27, 17, 27, 18
; BE-NEXT: vxor 4, 4, 28
; BE-NEXT: lvx 28, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -80
; BE-NEXT: vmladduhm 16, 17, 16, 18
; BE-NEXT: vxor 4, 4, 27
; BE-NEXT: lvx 27, 1, 3 # 16-byte Folded Reload
; BE-NEXT: vxor 4, 4, 16
; BE-NEXT: vperm 4, 4, 4, 5
; BE-NEXT: vand 3, 4, 3
; BE-NEXT: vsrb 5, 4, 2
; BE-NEXT: vslb 2, 3, 2
; BE-NEXT: vor 2, 5, 2
; BE-NEXT: vand 3, 2, 1
; BE-NEXT: vsrb 2, 2, 6
; BE-NEXT: vslb 3, 3, 6
; BE-NEXT: vand 2, 2, 1
; BE-NEXT: vor 2, 2, 3
; BE-NEXT: vsrb 3, 2, 10
; BE-NEXT: vand 2, 2, 12
; BE-NEXT: vaddubm 2, 2, 2
; BE-NEXT: vand 3, 3, 12
; BE-NEXT: vor 2, 3, 2
; BE-NEXT: blr
;
; LE-LABEL: clmulr_v8i16:
; LE: # %bb.0:
; LE-NEXT: addis 3, 2, .LCPI5_0@toc@ha
; LE-NEXT: vspltisb 5, 4
; LE-NEXT: vspltish 7, 2
; LE-NEXT: addi 3, 3, .LCPI5_0@toc@l
; LE-NEXT: vspltish 8, 1
; LE-NEXT: vspltish 1, 4
; LE-NEXT: vspltish 0, 8
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: addis 3, 2, .LCPI5_1@toc@ha
; LE-NEXT: addi 3, 3, .LCPI5_1@toc@l
; LE-NEXT: vsldoi 9, 8, 8, 1
; LE-NEXT: vsldoi 13, 1, 1, 1
; LE-NEXT: xxswapd 36, 0
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: addis 3, 2, .LCPI5_2@toc@ha
; LE-NEXT: addi 3, 3, .LCPI5_2@toc@l
; LE-NEXT: vperm 10, 2, 2, 4
; LE-NEXT: vperm 6, 3, 3, 4
; LE-NEXT: vspltisb 3, 2
; LE-NEXT: vspltisb 2, 1
; LE-NEXT: vslb 11, 10, 5
; LE-NEXT: vsrb 12, 10, 5
; LE-NEXT: xxlor 43, 44, 43
; LE-NEXT: xxland 44, 43, 0
; LE-NEXT: vsrb 11, 11, 3
; LE-NEXT: vsldoi 10, 7, 7, 1
; LE-NEXT: vslb 12, 12, 3
; LE-NEXT: xxland 1, 43, 0
; LE-NEXT: xxlor 43, 1, 44
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI5_3@toc@ha
; LE-NEXT: vsrb 12, 11, 2
; LE-NEXT: addi 3, 3, .LCPI5_3@toc@l
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI5_4@toc@ha
; LE-NEXT: xxland 2, 44, 1
; LE-NEXT: vslb 12, 6, 5
; LE-NEXT: vsrb 6, 6, 5
; LE-NEXT: addi 3, 3, .LCPI5_4@toc@l
; LE-NEXT: xxlor 38, 38, 44
; LE-NEXT: xxland 44, 38, 0
; LE-NEXT: vsrb 6, 6, 3
; LE-NEXT: vslb 12, 12, 3
; LE-NEXT: xxland 3, 38, 0
; LE-NEXT: xxlor 44, 3, 44
; LE-NEXT: vsrb 6, 12, 2
; LE-NEXT: xxland 3, 38, 1
; LE-NEXT: xxland 38, 43, 1
; LE-NEXT: xxland 43, 44, 1
; LE-NEXT: vaddubm 6, 6, 6
; LE-NEXT: vaddubm 11, 11, 11
; LE-NEXT: xxlor 38, 2, 38
; LE-NEXT: xxlor 2, 3, 43
; LE-NEXT: xxland 43, 2, 39
; LE-NEXT: xxland 40, 2, 40
; LE-NEXT: vxor 7, 7, 7
; LE-NEXT: vmladduhm 11, 6, 11, 7
; LE-NEXT: vmladduhm 8, 6, 8, 7
; LE-NEXT: xxlxor 3, 40, 43
; LE-NEXT: xxland 40, 2, 33
; LE-NEXT: vslh 1, 1, 1
; LE-NEXT: vmladduhm 8, 6, 8, 7
; LE-NEXT: xxland 33, 2, 33
; LE-NEXT: vmladduhm 1, 6, 1, 7
; LE-NEXT: xxlxor 3, 3, 40
; LE-NEXT: xxland 40, 2, 32
; LE-NEXT: vmladduhm 8, 6, 8, 7
; LE-NEXT: xxlxor 3, 3, 40
; LE-NEXT: vadduhm 8, 0, 0
; LE-NEXT: vslh 0, 0, 0
; LE-NEXT: xxland 40, 2, 40
; LE-NEXT: xxland 32, 2, 32
; LE-NEXT: vmladduhm 8, 6, 8, 7
; LE-NEXT: vmladduhm 0, 6, 0, 7
; LE-NEXT: xxlxor 3, 3, 40
; LE-NEXT: xxland 40, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI5_5@toc@ha
; LE-NEXT: vmladduhm 8, 6, 8, 7
; LE-NEXT: addi 3, 3, .LCPI5_5@toc@l
; LE-NEXT: xxlxor 3, 3, 40
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxland 33, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI5_6@toc@ha
; LE-NEXT: vmladduhm 1, 6, 1, 7
; LE-NEXT: addi 3, 3, .LCPI5_6@toc@l
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxland 33, 2, 41
; LE-NEXT: vmladduhm 1, 6, 1, 7
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxland 33, 2, 42
; LE-NEXT: vmladduhm 1, 6, 1, 7
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxland 33, 2, 45
; LE-NEXT: vmladduhm 1, 6, 1, 7
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxlxor 3, 3, 32
; LE-NEXT: xxland 32, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI5_7@toc@ha
; LE-NEXT: vmladduhm 0, 6, 0, 7
; LE-NEXT: addi 3, 3, .LCPI5_7@toc@l
; LE-NEXT: xxlxor 3, 3, 32
; LE-NEXT: xxland 32, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: vmladduhm 0, 6, 0, 7
; LE-NEXT: xxlxor 3, 3, 32
; LE-NEXT: xxland 32, 2, 4
; LE-NEXT: vmladduhm 0, 6, 0, 7
; LE-NEXT: xxlxor 3, 3, 32
; LE-NEXT: xxleqv 32, 32, 32
; LE-NEXT: vslh 0, 0, 0
; LE-NEXT: xxland 32, 2, 32
; LE-NEXT: vmladduhm 0, 6, 0, 7
; LE-NEXT: xxlxor 32, 3, 32
; LE-NEXT: vperm 4, 0, 0, 4
; LE-NEXT: vslb 0, 4, 5
; LE-NEXT: vsrb 4, 4, 5
; LE-NEXT: xxlor 36, 36, 32
; LE-NEXT: xxland 37, 36, 0
; LE-NEXT: vslb 5, 5, 3
; LE-NEXT: vsrb 3, 4, 3
; LE-NEXT: xxland 0, 35, 0
; LE-NEXT: xxlor 35, 0, 37
; LE-NEXT: vsrb 2, 3, 2
; LE-NEXT: xxland 0, 34, 1
; LE-NEXT: xxland 34, 35, 1
; LE-NEXT: vaddubm 2, 2, 2
; LE-NEXT: xxlor 34, 0, 34
; LE-NEXT: blr
%a.ext = zext <8 x i16> %a to <8 x i32>
%b.ext = zext <8 x i16> %b to <8 x i32>
%clmul = call <8 x i32> @llvm.clmul.v8i32(<8 x i32> %a.ext, <8 x i32> %b.ext)
%res.ext = lshr <8 x i32> %clmul, splat (i32 15)
%res = trunc <8 x i32> %res.ext to <8 x i16>
ret <8 x i16> %res
}
define <4 x i32> @clmulr_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
; BE-LABEL: clmulr_v4i32:
; BE: # %bb.0:
; BE-NEXT: stdu 1, -1440(1)
; BE-NEXT: li 3, 1248
; BE-NEXT: addi 4, 1, 1152
; BE-NEXT: vspltisw 1, 2
; BE-NEXT: stvx 20, 1, 3 # 16-byte Folded Spill
; BE-NEXT: vsldoi 10, 1, 1, 2
; BE-NEXT: li 3, 1264
; BE-NEXT: lis 5, -21846
; BE-NEXT: vspltisw 4, 1
; BE-NEXT: stvx 21, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1280
; BE-NEXT: lis 9, -13108
; BE-NEXT: ori 7, 5, 43690
; BE-NEXT: ori 5, 9, 52428
; BE-NEXT: vspltisb 6, -1
; BE-NEXT: stvx 22, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1296
; BE-NEXT: lis 6, 21845
; BE-NEXT: vsldoi 22, 1, 1, 3
; BE-NEXT: vspltisw 8, 8
; BE-NEXT: stvx 23, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1312
; BE-NEXT: lis 10, 13107
; BE-NEXT: ori 8, 6, 21845
; BE-NEXT: ori 6, 10, 13107
; BE-NEXT: stvx 24, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1328
; BE-NEXT: lis 11, 3855
; BE-NEXT: stvx 25, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1344
; BE-NEXT: vslw 5, 6, 6
; BE-NEXT: stvx 26, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1360
; BE-NEXT: stvx 27, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1376
; BE-NEXT: stvx 28, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1392
; BE-NEXT: vslw 7, 8, 8
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1408
; BE-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1424
; BE-NEXT: vsldoi 19, 8, 8, 2
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addi 3, 1, 1168
; BE-NEXT: stvx 3, 0, 3
; BE-NEXT: lis 3, -3856
; BE-NEXT: ori 3, 3, 61680
; BE-NEXT: stvx 2, 0, 4
; BE-NEXT: ori 4, 11, 3855
; BE-NEXT: vspltisw 2, 4
; BE-NEXT: vsldoi 31, 1, 1, 1
; BE-NEXT: lwz 9, 1180(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: vslw 14, 2, 2
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: vsldoi 17, 2, 2, 1
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: vsldoi 11, 2, 2, 2
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1212(1)
; BE-NEXT: lwz 9, 1176(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: vsldoi 21, 2, 2, 3
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: vsldoi 20, 8, 8, 3
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: vsldoi 0, 4, 4, 1
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1208(1)
; BE-NEXT: lwz 9, 1172(1)
; BE-NEXT: vsldoi 27, 4, 4, 3
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: vsldoi 9, 4, 4, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1204(1)
; BE-NEXT: lwz 9, 1168(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1200(1)
; BE-NEXT: lwz 9, 1164(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1196(1)
; BE-NEXT: lwz 9, 1160(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1192(1)
; BE-NEXT: lwz 9, 1156(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1188(1)
; BE-NEXT: lwz 9, 1152(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1184(1)
; BE-NEXT: addi 9, 1, 1200
; BE-NEXT: lvx 18, 0, 9
; BE-NEXT: li 9, 864
; BE-NEXT: vand 12, 18, 1
; BE-NEXT: stvx 12, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 832
; BE-NEXT: vand 1, 18, 4
; BE-NEXT: stvx 1, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 800
; BE-NEXT: vand 6, 18, 2
; BE-NEXT: vadduwm 2, 8, 8
; BE-NEXT: stvx 6, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI6_0@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_0@toc@l
; BE-NEXT: vand 24, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: addis 9, 2, .LCPI6_1@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_1@toc@l
; BE-NEXT: vand 25, 18, 8
; BE-NEXT: vand 8, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: addis 9, 2, .LCPI6_2@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_2@toc@l
; BE-NEXT: vand 15, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: addis 9, 2, .LCPI6_3@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_3@toc@l
; BE-NEXT: vand 30, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: addis 9, 2, .LCPI6_4@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_4@toc@l
; BE-NEXT: vand 23, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: addis 9, 2, .LCPI6_5@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_5@toc@l
; BE-NEXT: vand 13, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 768
; BE-NEXT: vand 26, 18, 14
; BE-NEXT: vand 14, 18, 7
; BE-NEXT: vand 7, 18, 2
; BE-NEXT: stvx 7, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1088
; BE-NEXT: vand 2, 18, 10
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI6_6@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_6@toc@l
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: addis 9, 2, .LCPI6_7@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_7@toc@l
; BE-NEXT: vand 3, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 1056
; BE-NEXT: vand 2, 18, 2
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI6_8@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_8@toc@l
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: addis 9, 2, .LCPI6_9@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_9@toc@l
; BE-NEXT: vand 28, 18, 0
; BE-NEXT: vand 0, 18, 2
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 896
; BE-NEXT: vand 2, 18, 2
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 928
; BE-NEXT: vand 2, 18, 27
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 960
; BE-NEXT: vand 2, 18, 22
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 992
; BE-NEXT: vand 2, 18, 21
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1024
; BE-NEXT: vand 2, 18, 20
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI6_10@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_10@toc@l
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 304
; BE-NEXT: vand 2, 18, 2
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI6_11@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_11@toc@l
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 224
; BE-NEXT: vand 2, 18, 2
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI6_12@toc@ha
; BE-NEXT: addi 9, 9, .LCPI6_12@toc@l
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 128
; BE-NEXT: vand 2, 18, 2
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 208
; BE-NEXT: vand 2, 18, 5
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addi 9, 1, 1184
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 1136
; BE-NEXT: vand 29, 18, 31
; BE-NEXT: vand 31, 18, 17
; BE-NEXT: vand 17, 18, 9
; BE-NEXT: vspltisw 9, -16
; BE-NEXT: vxor 4, 4, 4
; BE-NEXT: vrlw 5, 12, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1120
; BE-NEXT: vrlw 5, 1, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1104
; BE-NEXT: vrlw 5, 6, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1072
; BE-NEXT: vrlw 5, 25, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1040
; BE-NEXT: vrlw 5, 24, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1008
; BE-NEXT: vrlw 5, 8, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 976
; BE-NEXT: vrlw 5, 26, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 944
; BE-NEXT: vrlw 5, 15, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 912
; BE-NEXT: vrlw 5, 28, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 880
; BE-NEXT: vrlw 5, 29, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 848
; BE-NEXT: vrlw 5, 31, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 816
; BE-NEXT: vrlw 5, 14, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 784
; BE-NEXT: vrlw 5, 30, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 752
; BE-NEXT: vrlw 5, 23, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 720
; BE-NEXT: vrlw 5, 13, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 688
; BE-NEXT: vrlw 5, 7, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 656
; BE-NEXT: vrlw 5, 17, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1088
; BE-NEXT: lvx 16, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 608
; BE-NEXT: vrlw 5, 16, 9
; BE-NEXT: vand 11, 18, 11
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 576
; BE-NEXT: vrlw 5, 11, 9
; BE-NEXT: vand 10, 18, 19
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 544
; BE-NEXT: vrlw 5, 10, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 512
; BE-NEXT: vrlw 5, 3, 9
; BE-NEXT: vmr 20, 3
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1056
; BE-NEXT: vmr 18, 13
; BE-NEXT: lvx 13, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 480
; BE-NEXT: vrlw 5, 13, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 448
; BE-NEXT: vrlw 5, 0, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 896
; BE-NEXT: lvx 12, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 416
; BE-NEXT: vrlw 5, 12, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 928
; BE-NEXT: vmr 22, 25
; BE-NEXT: vmr 25, 15
; BE-NEXT: vmr 15, 11
; BE-NEXT: lvx 11, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 384
; BE-NEXT: vrlw 5, 11, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 960
; BE-NEXT: vmr 19, 14
; BE-NEXT: vmr 14, 10
; BE-NEXT: lvx 10, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 352
; BE-NEXT: vrlw 5, 10, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 992
; BE-NEXT: vmr 27, 8
; BE-NEXT: lvx 8, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 320
; BE-NEXT: vrlw 5, 8, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1024
; BE-NEXT: lvx 7, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 272
; BE-NEXT: vrlw 5, 7, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 304
; BE-NEXT: lvx 6, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 240
; BE-NEXT: vrlw 5, 6, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 224
; BE-NEXT: lvx 1, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 176
; BE-NEXT: vrlw 5, 1, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 128
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 144
; BE-NEXT: vrlw 5, 3, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 208
; BE-NEXT: lvx 5, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 64
; BE-NEXT: vmr 21, 0
; BE-NEXT: vrlw 0, 5, 9
; BE-NEXT: vmsumuhm 4, 2, 0, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 864
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 96
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 832
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 80
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 800
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 112
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 160
; BE-NEXT: vmulouh 4, 2, 22
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 192
; BE-NEXT: vmulouh 4, 2, 24
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 256
; BE-NEXT: vmulouh 4, 2, 27
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 288
; BE-NEXT: vmulouh 4, 2, 26
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 336
; BE-NEXT: vmulouh 4, 2, 25
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 368
; BE-NEXT: vmulouh 4, 2, 28
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 400
; BE-NEXT: vmulouh 4, 2, 29
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 432
; BE-NEXT: vmulouh 4, 2, 31
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 464
; BE-NEXT: vmulouh 4, 2, 19
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 496
; BE-NEXT: vmulouh 4, 2, 30
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 528
; BE-NEXT: vmulouh 4, 2, 23
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 560
; BE-NEXT: vmulouh 4, 2, 18
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 768
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 592
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 624
; BE-NEXT: vmulouh 4, 2, 17
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 640
; BE-NEXT: vmulouh 4, 2, 16
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 672
; BE-NEXT: vmulouh 4, 2, 15
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 704
; BE-NEXT: vmulouh 4, 2, 14
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 736
; BE-NEXT: vmulouh 4, 2, 20
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 768
; BE-NEXT: vmulouh 4, 2, 13
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 800
; BE-NEXT: vmulouh 4, 2, 21
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 832
; BE-NEXT: vmulouh 4, 2, 12
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 864
; BE-NEXT: vmulouh 4, 2, 11
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 896
; BE-NEXT: vmulouh 4, 2, 10
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 928
; BE-NEXT: vmulouh 4, 2, 8
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 960
; BE-NEXT: vmulouh 4, 2, 7
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 992
; BE-NEXT: vmulouh 4, 2, 6
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1024
; BE-NEXT: vmulouh 4, 2, 1
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1056
; BE-NEXT: vmulouh 3, 2, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1088
; BE-NEXT: vmulouh 2, 2, 5
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1136
; BE-NEXT: lvx 2, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1120
; BE-NEXT: vslw 3, 2, 9
; BE-NEXT: lvx 2, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1104
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1072
; BE-NEXT: lvx 5, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1040
; BE-NEXT: vslw 2, 2, 9
; BE-NEXT: lvx 0, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1008
; BE-NEXT: lvx 1, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 976
; BE-NEXT: lvx 6, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 944
; BE-NEXT: vslw 4, 4, 9
; BE-NEXT: lvx 7, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 912
; BE-NEXT: lvx 8, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 880
; BE-NEXT: lvx 10, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 848
; BE-NEXT: vslw 5, 5, 9
; BE-NEXT: lvx 11, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 816
; BE-NEXT: lvx 12, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 784
; BE-NEXT: vslw 0, 0, 9
; BE-NEXT: lvx 13, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 752
; BE-NEXT: lvx 14, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 720
; BE-NEXT: lvx 15, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 688
; BE-NEXT: vslw 1, 1, 9
; BE-NEXT: lvx 16, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 656
; BE-NEXT: lvx 17, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 608
; BE-NEXT: lvx 18, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 576
; BE-NEXT: vslw 6, 6, 9
; BE-NEXT: lvx 19, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 544
; BE-NEXT: lvx 31, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 512
; BE-NEXT: vslw 7, 7, 9
; BE-NEXT: lvx 30, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 480
; BE-NEXT: lvx 29, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 448
; BE-NEXT: lvx 28, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 416
; BE-NEXT: vslw 8, 8, 9
; BE-NEXT: lvx 27, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 384
; BE-NEXT: lvx 26, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 352
; BE-NEXT: lvx 25, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 320
; BE-NEXT: vslw 10, 10, 9
; BE-NEXT: lvx 24, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 272
; BE-NEXT: lvx 23, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 240
; BE-NEXT: vslw 11, 11, 9
; BE-NEXT: lvx 22, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 176
; BE-NEXT: lvx 21, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 144
; BE-NEXT: lvx 20, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1136
; BE-NEXT: vslw 12, 12, 9
; BE-NEXT: vslw 20, 20, 9
; BE-NEXT: stvx 20, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 64
; BE-NEXT: lvx 20, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 96
; BE-NEXT: vslw 13, 13, 9
; BE-NEXT: vslw 14, 14, 9
; BE-NEXT: vslw 15, 15, 9
; BE-NEXT: vslw 16, 16, 9
; BE-NEXT: vslw 17, 17, 9
; BE-NEXT: vslw 18, 18, 9
; BE-NEXT: vslw 19, 19, 9
; BE-NEXT: vslw 31, 31, 9
; BE-NEXT: vslw 30, 30, 9
; BE-NEXT: vslw 29, 29, 9
; BE-NEXT: vslw 28, 28, 9
; BE-NEXT: vslw 27, 27, 9
; BE-NEXT: vslw 26, 26, 9
; BE-NEXT: vslw 25, 25, 9
; BE-NEXT: vslw 24, 24, 9
; BE-NEXT: vslw 23, 23, 9
; BE-NEXT: vslw 22, 22, 9
; BE-NEXT: vslw 21, 21, 9
; BE-NEXT: vslw 20, 20, 9
; BE-NEXT: lvx 9, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 80
; BE-NEXT: vadduwm 3, 9, 3
; BE-NEXT: lvx 9, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 112
; BE-NEXT: vadduwm 2, 9, 2
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 160
; BE-NEXT: vadduwm 3, 3, 4
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 192
; BE-NEXT: vadduwm 3, 3, 5
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 256
; BE-NEXT: vadduwm 3, 3, 0
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 288
; BE-NEXT: vadduwm 3, 3, 1
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 336
; BE-NEXT: vadduwm 3, 3, 6
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 368
; BE-NEXT: vadduwm 3, 3, 7
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 400
; BE-NEXT: vadduwm 3, 3, 8
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 432
; BE-NEXT: vadduwm 3, 3, 10
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 464
; BE-NEXT: vadduwm 3, 3, 11
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 496
; BE-NEXT: vadduwm 3, 3, 12
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 528
; BE-NEXT: vadduwm 3, 3, 13
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 560
; BE-NEXT: vadduwm 3, 3, 14
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 592
; BE-NEXT: vadduwm 3, 3, 15
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 624
; BE-NEXT: vadduwm 3, 3, 16
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 640
; BE-NEXT: vadduwm 3, 3, 17
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 672
; BE-NEXT: vadduwm 3, 3, 18
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 704
; BE-NEXT: vadduwm 3, 3, 19
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 736
; BE-NEXT: vadduwm 3, 3, 31
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 768
; BE-NEXT: vadduwm 3, 3, 30
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 800
; BE-NEXT: vadduwm 3, 3, 29
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 832
; BE-NEXT: vadduwm 3, 3, 28
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 864
; BE-NEXT: vadduwm 3, 3, 27
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 896
; BE-NEXT: vadduwm 3, 3, 26
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 928
; BE-NEXT: vadduwm 3, 3, 25
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 960
; BE-NEXT: vadduwm 3, 3, 24
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 992
; BE-NEXT: vadduwm 3, 3, 23
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1024
; BE-NEXT: vadduwm 3, 3, 22
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1056
; BE-NEXT: vadduwm 3, 3, 21
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1136
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1088
; BE-NEXT: vadduwm 3, 3, 4
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: addi 9, 1, 1216
; BE-NEXT: vadduwm 3, 3, 20
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: stvx 2, 0, 9
; BE-NEXT: lwz 9, 1228(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1244(1)
; BE-NEXT: lwz 9, 1224(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1240(1)
; BE-NEXT: lwz 9, 1220(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1236(1)
; BE-NEXT: lwz 9, 1216(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 7, 10, 7
; BE-NEXT: and 8, 9, 8
; BE-NEXT: or 7, 8, 7
; BE-NEXT: slwi 8, 7, 2
; BE-NEXT: srwi 7, 7, 2
; BE-NEXT: and 5, 8, 5
; BE-NEXT: and 6, 7, 6
; BE-NEXT: or 5, 6, 5
; BE-NEXT: slwi 6, 5, 4
; BE-NEXT: srwi 5, 5, 4
; BE-NEXT: and 3, 6, 3
; BE-NEXT: and 4, 5, 4
; BE-NEXT: or 3, 4, 3
; BE-NEXT: rotlwi 4, 3, 24
; BE-NEXT: rlwimi 4, 3, 8, 8, 15
; BE-NEXT: rlwimi 4, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 4, 0, 32
; BE-NEXT: stw 3, 1232(1)
; BE-NEXT: addi 3, 1, 1232
; BE-NEXT: lvx 2, 0, 3
; BE-NEXT: li 3, 1424
; BE-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1408
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1392
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1376
; BE-NEXT: lvx 28, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1360
; BE-NEXT: lvx 27, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1344
; BE-NEXT: lvx 26, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1328
; BE-NEXT: lvx 25, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1312
; BE-NEXT: lvx 24, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1296
; BE-NEXT: lvx 23, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1280
; BE-NEXT: lvx 22, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1264
; BE-NEXT: lvx 21, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1248
; BE-NEXT: lvx 20, 1, 3 # 16-byte Folded Reload
; BE-NEXT: addi 1, 1, 1440
; BE-NEXT: blr
;
; LE-LABEL: clmulr_v4i32:
; LE: # %bb.0:
; LE-NEXT: xxsldwi 0, 34, 34, 1
; LE-NEXT: lis 5, -13108
; LE-NEXT: lis 9, 13107
; LE-NEXT: xxswapd 1, 34
; LE-NEXT: lis 4, 21845
; LE-NEXT: lis 10, -3856
; LE-NEXT: lis 3, -21846
; LE-NEXT: xxsldwi 2, 35, 35, 1
; LE-NEXT: ori 6, 5, 52428
; LE-NEXT: ori 5, 9, 13107
; LE-NEXT: mffprwz 9, 0
; LE-NEXT: ori 7, 4, 21845
; LE-NEXT: ori 4, 10, 61680
; LE-NEXT: mffprwz 10, 1
; LE-NEXT: ori 8, 3, 43690
; LE-NEXT: lis 11, 3855
; LE-NEXT: ori 3, 11, 3855
; LE-NEXT: mffprwz 11, 2
; LE-NEXT: xxswapd 3, 35
; LE-NEXT: mffprwz 12, 3
; LE-NEXT: xxsldwi 4, 35, 35, 3
; LE-NEXT: xxsldwi 5, 34, 34, 3
; LE-NEXT: vspltisw 4, 1
; LE-NEXT: vspltisw 0, 4
; LE-NEXT: vspltisw 5, 8
; LE-NEXT: slwi 0, 9, 1
; LE-NEXT: srwi 9, 9, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: vsldoi 11, 4, 4, 1
; LE-NEXT: vsldoi 10, 0, 0, 1
; LE-NEXT: vsldoi 7, 0, 0, 2
; LE-NEXT: vsldoi 1, 4, 4, 2
; LE-NEXT: vsldoi 8, 5, 5, 2
; LE-NEXT: or 9, 9, 0
; LE-NEXT: slwi 0, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 0
; LE-NEXT: slwi 0, 11, 1
; LE-NEXT: srwi 11, 11, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 11, 11, 7
; LE-NEXT: or 11, 11, 0
; LE-NEXT: slwi 0, 12, 1
; LE-NEXT: srwi 12, 12, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 12, 12, 7
; LE-NEXT: or 12, 12, 0
; LE-NEXT: slwi 0, 9, 2
; LE-NEXT: srwi 9, 9, 2
; LE-NEXT: and 0, 0, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 0
; LE-NEXT: slwi 0, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 0, 0, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 0
; LE-NEXT: slwi 0, 11, 2
; LE-NEXT: srwi 11, 11, 2
; LE-NEXT: and 0, 0, 6
; LE-NEXT: and 11, 11, 5
; LE-NEXT: or 11, 11, 0
; LE-NEXT: slwi 0, 9, 4
; LE-NEXT: srwi 9, 9, 4
; LE-NEXT: and 0, 0, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 0
; LE-NEXT: slwi 0, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 0, 0, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 0
; LE-NEXT: slwi 0, 11, 4
; LE-NEXT: srwi 11, 11, 4
; LE-NEXT: and 0, 0, 4
; LE-NEXT: and 11, 11, 3
; LE-NEXT: or 11, 11, 0
; LE-NEXT: rotlwi 0, 9, 24
; LE-NEXT: rlwimi 0, 9, 8, 8, 15
; LE-NEXT: rlwimi 0, 9, 8, 24, 31
; LE-NEXT: rotlwi 9, 10, 24
; LE-NEXT: rlwimi 9, 10, 8, 8, 15
; LE-NEXT: rlwimi 9, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 11, 24
; LE-NEXT: rlwimi 10, 11, 8, 8, 15
; LE-NEXT: rlwimi 10, 11, 8, 24, 31
; LE-NEXT: rldicl 11, 0, 0, 32
; LE-NEXT: rldicl 0, 9, 0, 32
; LE-NEXT: mffprwz 9, 5
; LE-NEXT: rldicl 10, 10, 0, 32
; LE-NEXT: rldimi 0, 11, 32, 0
; LE-NEXT: slwi 11, 12, 2
; LE-NEXT: srwi 12, 12, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 12, 12, 5
; LE-NEXT: mtfprd 1, 0
; LE-NEXT: or 11, 12, 11
; LE-NEXT: slwi 12, 11, 4
; LE-NEXT: srwi 11, 11, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 11, 11, 3
; LE-NEXT: or 11, 11, 12
; LE-NEXT: rotlwi 12, 11, 24
; LE-NEXT: rlwimi 12, 11, 8, 8, 15
; LE-NEXT: rlwimi 12, 11, 8, 24, 31
; LE-NEXT: rldicl 11, 12, 0, 32
; LE-NEXT: rldimi 11, 10, 32, 0
; LE-NEXT: mffprwz 10, 4
; LE-NEXT: mtfprd 0, 11
; LE-NEXT: mfvsrwz 11, 35
; LE-NEXT: slwi 12, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 12
; LE-NEXT: rotlwi 12, 10, 24
; LE-NEXT: rlwimi 12, 10, 8, 8, 15
; LE-NEXT: rlwimi 12, 10, 8, 24, 31
; LE-NEXT: slwi 10, 11, 1
; LE-NEXT: srwi 11, 11, 1
; LE-NEXT: rldicl 12, 12, 0, 32
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 11, 11, 7
; LE-NEXT: or 10, 11, 10
; LE-NEXT: slwi 11, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 11
; LE-NEXT: slwi 11, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 11
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: mfvsrwz 10, 34
; LE-NEXT: rldicl 11, 11, 0, 32
; LE-NEXT: rldimi 11, 12, 32, 0
; LE-NEXT: mtfprd 2, 11
; LE-NEXT: slwi 11, 9, 1
; LE-NEXT: srwi 9, 9, 1
; LE-NEXT: and 11, 11, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 11
; LE-NEXT: slwi 11, 9, 2
; LE-NEXT: srwi 9, 9, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 11
; LE-NEXT: slwi 11, 9, 4
; LE-NEXT: srwi 9, 9, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 11
; LE-NEXT: rotlwi 11, 9, 24
; LE-NEXT: rlwimi 11, 9, 8, 8, 15
; LE-NEXT: rlwimi 11, 9, 8, 24, 31
; LE-NEXT: rldicl 9, 11, 0, 32
; LE-NEXT: slwi 11, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 11, 11, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 11
; LE-NEXT: slwi 11, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 11
; LE-NEXT: slwi 11, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 11
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rldicl 10, 11, 0, 32
; LE-NEXT: addis 11, 2, .LCPI6_12@toc@ha
; LE-NEXT: rldimi 10, 9, 32, 0
; LE-NEXT: addis 9, 2, .LCPI6_0@toc@ha
; LE-NEXT: addi 9, 9, .LCPI6_0@toc@l
; LE-NEXT: vspltisw 3, 2
; LE-NEXT: vsldoi 9, 3, 3, 1
; LE-NEXT: vsldoi 6, 3, 3, 2
; LE-NEXT: xxmrghd 0, 2, 0
; LE-NEXT: mtfprd 2, 10
; LE-NEXT: xxland 44, 0, 35
; LE-NEXT: xxland 45, 0, 36
; LE-NEXT: xxland 43, 0, 43
; LE-NEXT: xxland 41, 0, 41
; LE-NEXT: addis 10, 2, .LCPI6_11@toc@ha
; LE-NEXT: addi 10, 10, .LCPI6_11@toc@l
; LE-NEXT: vsldoi 4, 4, 4, 3
; LE-NEXT: xxland 36, 0, 36
; LE-NEXT: lxvd2x 3, 0, 10
; LE-NEXT: xxmrghd 34, 2, 1
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_1@toc@ha
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: vmuluwm 13, 2, 13
; LE-NEXT: addi 9, 9, .LCPI6_1@toc@l
; LE-NEXT: vmuluwm 11, 2, 11
; LE-NEXT: vmuluwm 9, 2, 9
; LE-NEXT: vmuluwm 4, 2, 4
; LE-NEXT: xxlxor 1, 45, 44
; LE-NEXT: xxland 44, 0, 32
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxland 44, 0, 37
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: vadduwm 12, 5, 5
; LE-NEXT: xxland 44, 0, 44
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxland 44, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_2@toc@ha
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: addi 9, 9, .LCPI6_2@toc@l
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: vslw 12, 0, 0
; LE-NEXT: xxland 44, 0, 44
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxland 44, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_3@toc@ha
; LE-NEXT: vmuluwm 12, 2, 12
; LE-NEXT: addi 9, 9, .LCPI6_3@toc@l
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxlxor 1, 1, 43
; LE-NEXT: xxlxor 1, 1, 41
; LE-NEXT: xxland 41, 0, 42
; LE-NEXT: vslw 10, 5, 5
; LE-NEXT: vmuluwm 9, 2, 9
; LE-NEXT: xxlxor 1, 1, 41
; LE-NEXT: vsldoi 5, 5, 5, 3
; LE-NEXT: vsldoi 9, 3, 3, 3
; LE-NEXT: xxland 35, 0, 42
; LE-NEXT: vmuluwm 3, 2, 3
; LE-NEXT: xxlxor 1, 1, 35
; LE-NEXT: vsldoi 3, 0, 0, 3
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_4@toc@ha
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: addi 9, 9, .LCPI6_4@toc@l
; LE-NEXT: xxland 35, 0, 35
; LE-NEXT: vmuluwm 3, 2, 3
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_5@toc@ha
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: addi 9, 9, .LCPI6_5@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_6@toc@ha
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: addi 9, 9, .LCPI6_6@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_7@toc@ha
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: addi 9, 9, .LCPI6_7@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 33
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 38
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 39
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 40
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_8@toc@ha
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: addi 9, 9, .LCPI6_8@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_9@toc@ha
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: addi 9, 9, .LCPI6_9@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI6_10@toc@ha
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: addi 9, 9, .LCPI6_10@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addi 9, 11, .LCPI6_12@toc@l
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: lxvd2x 4, 0, 9
; LE-NEXT: xxland 33, 0, 4
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 3
; LE-NEXT: vmuluwm 1, 2, 1
; LE-NEXT: xxlxor 1, 1, 36
; LE-NEXT: xxland 36, 0, 41
; LE-NEXT: vmuluwm 0, 2, 0
; LE-NEXT: vmuluwm 4, 2, 4
; LE-NEXT: xxlxor 1, 1, 36
; LE-NEXT: xxland 36, 0, 37
; LE-NEXT: xxland 37, 0, 2
; LE-NEXT: vmuluwm 4, 2, 4
; LE-NEXT: vmuluwm 5, 2, 5
; LE-NEXT: xxlxor 1, 1, 35
; LE-NEXT: xxleqv 35, 35, 35
; LE-NEXT: vslw 3, 3, 3
; LE-NEXT: xxland 35, 0, 35
; LE-NEXT: vmuluwm 2, 2, 3
; LE-NEXT: xxlxor 0, 1, 36
; LE-NEXT: xxlxor 0, 0, 37
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxlxor 0, 0, 33
; LE-NEXT: xxlxor 0, 0, 34
; LE-NEXT: xxsldwi 1, 0, 0, 1
; LE-NEXT: xxswapd 2, 0
; LE-NEXT: xxsldwi 3, 0, 0, 3
; LE-NEXT: mffprwz 9, 1
; LE-NEXT: mffprwz 10, 2
; LE-NEXT: mffprwz 11, 3
; LE-NEXT: slwi 12, 9, 1
; LE-NEXT: srwi 9, 9, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 12
; LE-NEXT: slwi 12, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 11, 1
; LE-NEXT: srwi 11, 11, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 11, 11, 7
; LE-NEXT: or 11, 11, 12
; LE-NEXT: slwi 12, 9, 2
; LE-NEXT: srwi 9, 9, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 12
; LE-NEXT: slwi 12, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 11, 2
; LE-NEXT: srwi 11, 11, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 11, 11, 5
; LE-NEXT: or 11, 11, 12
; LE-NEXT: slwi 12, 9, 4
; LE-NEXT: srwi 9, 9, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 12
; LE-NEXT: slwi 12, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 11, 4
; LE-NEXT: srwi 11, 11, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 11, 11, 3
; LE-NEXT: or 11, 11, 12
; LE-NEXT: rotlwi 12, 9, 24
; LE-NEXT: rlwimi 12, 9, 8, 8, 15
; LE-NEXT: rlwimi 12, 9, 8, 24, 31
; LE-NEXT: rotlwi 9, 10, 24
; LE-NEXT: rlwimi 9, 10, 8, 8, 15
; LE-NEXT: rlwimi 9, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 11, 24
; LE-NEXT: rldicl 9, 9, 0, 32
; LE-NEXT: rlwimi 10, 11, 8, 8, 15
; LE-NEXT: rlwimi 10, 11, 8, 24, 31
; LE-NEXT: rldicl 11, 12, 0, 32
; LE-NEXT: rldimi 9, 11, 32, 0
; LE-NEXT: mtfprd 1, 9
; LE-NEXT: rldicl 9, 10, 0, 32
; LE-NEXT: mffprwz 10, 0
; LE-NEXT: slwi 11, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 8, 11, 8
; LE-NEXT: and 7, 10, 7
; LE-NEXT: or 7, 7, 8
; LE-NEXT: slwi 8, 7, 2
; LE-NEXT: srwi 7, 7, 2
; LE-NEXT: and 6, 8, 6
; LE-NEXT: and 5, 7, 5
; LE-NEXT: or 5, 5, 6
; LE-NEXT: slwi 6, 5, 4
; LE-NEXT: srwi 5, 5, 4
; LE-NEXT: and 4, 6, 4
; LE-NEXT: and 3, 5, 3
; LE-NEXT: or 3, 3, 4
; LE-NEXT: rotlwi 4, 3, 24
; LE-NEXT: rlwimi 4, 3, 8, 8, 15
; LE-NEXT: rlwimi 4, 3, 8, 24, 31
; LE-NEXT: rldicl 3, 4, 0, 32
; LE-NEXT: rldimi 3, 9, 32, 0
; LE-NEXT: mtfprd 0, 3
; LE-NEXT: xxmrghd 34, 0, 1
; LE-NEXT: blr
%a.ext = zext <4 x i32> %a to <4 x i64>
%b.ext = zext <4 x i32> %b to <4 x i64>
%clmul = call <4 x i64> @llvm.clmul.v4i64(<4 x i64> %a.ext, <4 x i64> %b.ext)
%res.ext = lshr <4 x i64> %clmul, splat (i64 31)
%res = trunc <4 x i64> %res.ext to <4 x i32>
ret <4 x i32> %res
}
define <2 x i64> @clmulr_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
; BE-LABEL: clmulr_v2i64:
; BE: # %bb.0:
; BE-NEXT: stdu 1, -1056(1)
; BE-NEXT: lis 7, -21846
; BE-NEXT: lis 8, 21845
; BE-NEXT: std 26, 1008(1) # 8-byte Folded Spill
; BE-NEXT: ori 7, 7, 43690
; BE-NEXT: ori 8, 8, 21845
; BE-NEXT: std 27, 1016(1) # 8-byte Folded Spill
; BE-NEXT: sldi 7, 7, 32
; BE-NEXT: sldi 8, 8, 32
; BE-NEXT: lis 9, -13108
; BE-NEXT: lis 10, 13107
; BE-NEXT: std 30, 1040(1) # 8-byte Folded Spill
; BE-NEXT: oris 7, 7, 43690
; BE-NEXT: oris 8, 8, 21845
; BE-NEXT: std 28, 1024(1) # 8-byte Folded Spill
; BE-NEXT: sldi 0, 3, 1
; BE-NEXT: rldicl 3, 3, 63, 1
; BE-NEXT: ori 9, 9, 52428
; BE-NEXT: ori 10, 10, 13107
; BE-NEXT: std 29, 1032(1) # 8-byte Folded Spill
; BE-NEXT: ori 27, 7, 43690
; BE-NEXT: ori 26, 8, 21845
; BE-NEXT: std 2, 904(1) # 8-byte Folded Spill
; BE-NEXT: sldi 9, 9, 32
; BE-NEXT: sldi 10, 10, 32
; BE-NEXT: and 7, 0, 27
; BE-NEXT: and 3, 3, 26
; BE-NEXT: std 31, 1048(1) # 8-byte Folded Spill
; BE-NEXT: lis 11, -3856
; BE-NEXT: lis 12, 3855
; BE-NEXT: std 15, 920(1) # 8-byte Folded Spill
; BE-NEXT: sldi 30, 5, 1
; BE-NEXT: rldicl 5, 5, 63, 1
; BE-NEXT: oris 9, 9, 52428
; BE-NEXT: oris 10, 10, 13107
; BE-NEXT: std 14, 912(1) # 8-byte Folded Spill
; BE-NEXT: or 3, 3, 7
; BE-NEXT: ori 11, 11, 61680
; BE-NEXT: std 17, 936(1) # 8-byte Folded Spill
; BE-NEXT: ori 12, 12, 3855
; BE-NEXT: ori 29, 9, 52428
; BE-NEXT: ori 28, 10, 13107
; BE-NEXT: and 8, 30, 27
; BE-NEXT: std 16, 928(1) # 8-byte Folded Spill
; BE-NEXT: and 5, 5, 26
; BE-NEXT: sldi 7, 3, 2
; BE-NEXT: std 19, 952(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: sldi 11, 11, 32
; BE-NEXT: sldi 12, 12, 32
; BE-NEXT: or 5, 5, 8
; BE-NEXT: std 18, 944(1) # 8-byte Folded Spill
; BE-NEXT: and 7, 7, 29
; BE-NEXT: and 3, 3, 28
; BE-NEXT: std 21, 968(1) # 8-byte Folded Spill
; BE-NEXT: oris 11, 11, 61680
; BE-NEXT: oris 12, 12, 3855
; BE-NEXT: sldi 8, 5, 2
; BE-NEXT: rldicl 5, 5, 62, 2
; BE-NEXT: std 20, 960(1) # 8-byte Folded Spill
; BE-NEXT: or 3, 3, 7
; BE-NEXT: ori 9, 11, 61680
; BE-NEXT: std 23, 984(1) # 8-byte Folded Spill
; BE-NEXT: ori 10, 12, 3855
; BE-NEXT: and 8, 8, 29
; BE-NEXT: and 5, 5, 28
; BE-NEXT: sldi 7, 3, 4
; BE-NEXT: std 22, 976(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: or 5, 5, 8
; BE-NEXT: std 25, 1000(1) # 8-byte Folded Spill
; BE-NEXT: and 7, 7, 9
; BE-NEXT: and 3, 3, 10
; BE-NEXT: sldi 8, 5, 4
; BE-NEXT: rldicl 5, 5, 60, 4
; BE-NEXT: std 24, 992(1) # 8-byte Folded Spill
; BE-NEXT: or 3, 3, 7
; BE-NEXT: and 8, 8, 9
; BE-NEXT: std 27, 360(1) # 8-byte Folded Spill
; BE-NEXT: and 5, 5, 10
; BE-NEXT: rotlwi 7, 3, 24
; BE-NEXT: or 5, 5, 8
; BE-NEXT: rlwimi 7, 3, 8, 8, 15
; BE-NEXT: std 26, 352(1) # 8-byte Folded Spill
; BE-NEXT: mr 30, 9
; BE-NEXT: std 29, 376(1) # 8-byte Folded Spill
; BE-NEXT: rotlwi 8, 5, 24
; BE-NEXT: rldicl 9, 3, 32, 32
; BE-NEXT: rlwimi 7, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 5, 32, 32
; BE-NEXT: std 28, 368(1) # 8-byte Folded Spill
; BE-NEXT: rlwimi 8, 5, 8, 8, 15
; BE-NEXT: std 30, 384(1) # 8-byte Folded Spill
; BE-NEXT: rotlwi 11, 3, 24
; BE-NEXT: mr 0, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: std 0, 392(1) # 8-byte Folded Spill
; BE-NEXT: rlwimi 11, 3, 8, 8, 15
; BE-NEXT: rlwimi 8, 5, 8, 24, 31
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 11, 3, 8, 24, 31
; BE-NEXT: sldi 5, 8, 32
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: sldi 3, 7, 32
; BE-NEXT: or 11, 5, 11
; BE-NEXT: or 12, 3, 10
; BE-NEXT: rlwinm 3, 11, 0, 30, 30
; BE-NEXT: rlwinm 5, 11, 0, 29, 29
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 896(1) # 8-byte Folded Spill
; BE-NEXT: clrldi 3, 11, 63
; BE-NEXT: mulld 2, 12, 3
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 888(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 28, 28
; BE-NEXT: rlwinm 5, 11, 0, 27, 27
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 872(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 880(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 26, 26
; BE-NEXT: rlwinm 5, 11, 0, 25, 25
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 856(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 864(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 24, 24
; BE-NEXT: rlwinm 5, 11, 0, 23, 23
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 840(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 848(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 22, 22
; BE-NEXT: rlwinm 5, 11, 0, 21, 21
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 824(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 832(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 20, 20
; BE-NEXT: rlwinm 5, 11, 0, 19, 19
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 808(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 816(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 18, 18
; BE-NEXT: rlwinm 5, 11, 0, 17, 17
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 792(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 800(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 16, 16
; BE-NEXT: rlwinm 5, 11, 0, 15, 15
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 776(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 784(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 14, 14
; BE-NEXT: rlwinm 5, 11, 0, 13, 13
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 760(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 768(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 12, 12
; BE-NEXT: rlwinm 5, 11, 0, 11, 11
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 744(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 752(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 10, 10
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 736(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 9, 9
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 728(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 8, 8
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 720(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 7, 7
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 712(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 6, 6
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 704(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 5, 5
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 696(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 4, 4
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 688(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 3, 3
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 680(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 2, 2
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 672(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 1, 1
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 664(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 0, 0
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 656(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 32, 32
; BE-NEXT: rldicl 3, 3, 32, 31
; BE-NEXT: rldicr 5, 11, 0, 0
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: mulld 5, 12, 5
; BE-NEXT: std 3, 640(1) # 8-byte Folded Spill
; BE-NEXT: std 5, 648(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 31, 33
; BE-NEXT: rldicl 5, 11, 30, 34
; BE-NEXT: rldicl 3, 3, 33, 30
; BE-NEXT: rldicl 5, 5, 34, 29
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 624(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 632(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 29, 35
; BE-NEXT: rldicl 3, 3, 35, 28
; BE-NEXT: rldicl 5, 11, 28, 36
; BE-NEXT: rldicl 5, 5, 36, 27
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 608(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 616(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 27, 37
; BE-NEXT: rldicl 3, 3, 37, 26
; BE-NEXT: rldicl 5, 11, 26, 38
; BE-NEXT: rldicl 5, 5, 38, 25
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 592(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 600(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 25, 39
; BE-NEXT: rldicl 3, 3, 39, 24
; BE-NEXT: rldicl 5, 11, 24, 40
; BE-NEXT: rldicl 5, 5, 40, 23
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 576(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 584(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 23, 41
; BE-NEXT: rldicl 3, 3, 41, 22
; BE-NEXT: rldicl 5, 11, 22, 42
; BE-NEXT: rldicl 5, 5, 42, 21
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 560(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 568(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 21, 43
; BE-NEXT: rldicl 3, 3, 43, 20
; BE-NEXT: rldicl 5, 11, 20, 44
; BE-NEXT: rldicl 5, 5, 44, 19
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 544(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 552(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 19, 45
; BE-NEXT: rldicl 3, 3, 45, 18
; BE-NEXT: rldicl 5, 11, 18, 46
; BE-NEXT: rldicl 5, 5, 46, 17
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 528(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 536(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 17, 47
; BE-NEXT: rldicl 3, 3, 47, 16
; BE-NEXT: rldicl 5, 11, 16, 48
; BE-NEXT: rldicl 5, 5, 48, 15
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 512(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 520(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 15, 49
; BE-NEXT: rldicl 3, 3, 49, 14
; BE-NEXT: rldicl 5, 11, 14, 50
; BE-NEXT: rldicl 5, 5, 50, 13
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 496(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 504(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 13, 51
; BE-NEXT: rldicl 3, 3, 51, 12
; BE-NEXT: rldicl 5, 11, 12, 52
; BE-NEXT: rldicl 5, 5, 52, 11
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 480(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 488(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 11, 53
; BE-NEXT: rldicl 3, 3, 53, 10
; BE-NEXT: rldicl 5, 11, 10, 54
; BE-NEXT: rldicl 5, 5, 54, 9
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 464(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 472(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 9, 55
; BE-NEXT: rldicl 3, 3, 55, 8
; BE-NEXT: rldicl 5, 11, 8, 56
; BE-NEXT: rldicl 5, 5, 56, 7
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 448(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 456(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 7, 57
; BE-NEXT: rldicl 3, 3, 57, 6
; BE-NEXT: rldicl 5, 11, 6, 58
; BE-NEXT: rldicl 5, 5, 58, 5
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 432(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 440(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 5, 59
; BE-NEXT: rldicl 3, 3, 59, 4
; BE-NEXT: rldicl 5, 11, 4, 60
; BE-NEXT: rldicl 5, 5, 60, 3
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 416(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 424(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 3, 61
; BE-NEXT: rldicl 5, 11, 2, 62
; BE-NEXT: rldicl 3, 3, 61, 2
; BE-NEXT: rldicl 5, 5, 62, 1
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 400(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 408(1) # 8-byte Folded Spill
; BE-NEXT: sldi 3, 4, 1
; BE-NEXT: rldicl 4, 4, 63, 1
; BE-NEXT: and 3, 3, 27
; BE-NEXT: and 4, 4, 26
; BE-NEXT: or 3, 4, 3
; BE-NEXT: sldi 4, 3, 2
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: and 4, 4, 29
; BE-NEXT: and 3, 3, 28
; BE-NEXT: or 3, 3, 4
; BE-NEXT: sldi 4, 3, 4
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: and 4, 4, 30
; BE-NEXT: and 3, 3, 0
; BE-NEXT: or 3, 3, 4
; BE-NEXT: rotlwi 4, 3, 24
; BE-NEXT: rlwimi 4, 3, 8, 8, 15
; BE-NEXT: rlwimi 4, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 3, 32, 32
; BE-NEXT: rotlwi 5, 3, 24
; BE-NEXT: rlwimi 5, 3, 8, 8, 15
; BE-NEXT: rlwimi 5, 3, 8, 24, 31
; BE-NEXT: sldi 3, 6, 1
; BE-NEXT: rldicl 6, 6, 63, 1
; BE-NEXT: and 3, 3, 27
; BE-NEXT: and 6, 6, 26
; BE-NEXT: or 3, 6, 3
; BE-NEXT: sldi 6, 3, 2
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: and 6, 6, 29
; BE-NEXT: and 3, 3, 28
; BE-NEXT: or 3, 3, 6
; BE-NEXT: sldi 6, 3, 4
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: and 6, 6, 30
; BE-NEXT: and 3, 3, 0
; BE-NEXT: or 3, 3, 6
; BE-NEXT: rotlwi 6, 3, 24
; BE-NEXT: rlwimi 6, 3, 8, 8, 15
; BE-NEXT: rlwimi 6, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 3, 32, 32
; BE-NEXT: rotlwi 7, 3, 24
; BE-NEXT: rlwimi 7, 3, 8, 8, 15
; BE-NEXT: rlwimi 7, 3, 8, 24, 31
; BE-NEXT: sldi 3, 4, 32
; BE-NEXT: or 4, 3, 5
; BE-NEXT: sldi 3, 6, 32
; BE-NEXT: or 3, 3, 7
; BE-NEXT: rlwinm 5, 3, 0, 30, 30
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 344(1) # 8-byte Folded Spill
; BE-NEXT: clrldi 5, 3, 63
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 336(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 29, 29
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 328(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 28, 28
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 320(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 27, 27
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 312(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 26, 26
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 304(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 25, 25
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 296(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 24, 24
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 288(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 23, 23
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 280(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 22, 22
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 272(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 21, 21
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 264(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 20, 20
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 256(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 19, 19
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 248(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 18, 18
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 240(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 17, 17
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 232(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 16, 16
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 224(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 15, 15
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 216(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 14, 14
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 208(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 13, 13
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 200(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 12, 12
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 192(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 11, 11
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 184(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 10, 10
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 176(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 9, 9
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 168(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 8, 8
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 160(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 7, 7
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 152(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 6, 6
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 144(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 5, 5
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 136(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 4, 4
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 128(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 3, 3
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 120(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 2, 2
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 112(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 1, 1
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 104(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 0, 0
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 96(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 32, 32
; BE-NEXT: rldicl 5, 5, 32, 31
; BE-NEXT: rldicr 6, 3, 0, 0
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: mulld 6, 4, 6
; BE-NEXT: std 5, 80(1) # 8-byte Folded Spill
; BE-NEXT: std 6, 88(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 31, 33
; BE-NEXT: rldicl 5, 5, 33, 30
; BE-NEXT: rldicl 6, 3, 30, 34
; BE-NEXT: rldicl 6, 6, 34, 29
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 64(1) # 8-byte Folded Spill
; BE-NEXT: mulld 5, 4, 6
; BE-NEXT: std 5, 72(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 29, 35
; BE-NEXT: rldicl 6, 3, 28, 36
; BE-NEXT: rldicl 5, 5, 35, 28
; BE-NEXT: rldicl 6, 6, 36, 27
; BE-NEXT: mulld 31, 4, 5
; BE-NEXT: mulld 5, 4, 6
; BE-NEXT: std 5, 56(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 27, 37
; BE-NEXT: rldicl 5, 5, 37, 26
; BE-NEXT: rldicl 6, 3, 26, 38
; BE-NEXT: mulld 15, 4, 5
; BE-NEXT: rldicl 5, 3, 25, 39
; BE-NEXT: rldicl 6, 6, 38, 25
; BE-NEXT: rldicl 5, 5, 39, 24
; BE-NEXT: mulld 14, 4, 6
; BE-NEXT: rldicl 6, 3, 24, 40
; BE-NEXT: mulld 17, 4, 5
; BE-NEXT: rldicl 5, 3, 23, 41
; BE-NEXT: rldicl 6, 6, 40, 23
; BE-NEXT: rldicl 5, 5, 41, 22
; BE-NEXT: mulld 16, 4, 6
; BE-NEXT: rldicl 6, 3, 22, 42
; BE-NEXT: mulld 19, 4, 5
; BE-NEXT: rldicl 5, 3, 21, 43
; BE-NEXT: rldicl 6, 6, 42, 21
; BE-NEXT: rldicl 5, 5, 43, 20
; BE-NEXT: mulld 18, 4, 6
; BE-NEXT: rldicl 6, 3, 20, 44
; BE-NEXT: mulld 21, 4, 5
; BE-NEXT: rldicl 5, 3, 19, 45
; BE-NEXT: rldicl 6, 6, 44, 19
; BE-NEXT: rldicl 5, 5, 45, 18
; BE-NEXT: mulld 20, 4, 6
; BE-NEXT: rldicl 6, 3, 18, 46
; BE-NEXT: mulld 23, 4, 5
; BE-NEXT: rldicl 5, 3, 17, 47
; BE-NEXT: rldicl 6, 6, 46, 17
; BE-NEXT: rldicl 5, 5, 47, 16
; BE-NEXT: mulld 22, 4, 6
; BE-NEXT: rldicl 6, 3, 16, 48
; BE-NEXT: mulld 25, 4, 5
; BE-NEXT: rldicl 5, 3, 15, 49
; BE-NEXT: rldicl 6, 6, 48, 15
; BE-NEXT: rldicl 5, 5, 49, 14
; BE-NEXT: mulld 24, 4, 6
; BE-NEXT: rldicl 6, 3, 14, 50
; BE-NEXT: mulld 27, 4, 5
; BE-NEXT: rldicl 5, 3, 13, 51
; BE-NEXT: rldicl 6, 6, 50, 13
; BE-NEXT: rldicl 5, 5, 51, 12
; BE-NEXT: mulld 26, 4, 6
; BE-NEXT: rldicl 6, 3, 12, 52
; BE-NEXT: mulld 29, 4, 5
; BE-NEXT: rldicl 5, 3, 11, 53
; BE-NEXT: rldicl 6, 6, 52, 11
; BE-NEXT: rldicl 5, 5, 53, 10
; BE-NEXT: mulld 28, 4, 6
; BE-NEXT: rldicl 6, 3, 10, 54
; BE-NEXT: mulld 0, 4, 5
; BE-NEXT: rldicl 5, 3, 9, 55
; BE-NEXT: rldicl 6, 6, 54, 9
; BE-NEXT: rldicl 5, 5, 55, 8
; BE-NEXT: mulld 30, 4, 6
; BE-NEXT: rldicl 6, 3, 8, 56
; BE-NEXT: mulld 11, 4, 5
; BE-NEXT: rldicl 5, 3, 7, 57
; BE-NEXT: rldicl 6, 6, 56, 7
; BE-NEXT: rldicl 5, 5, 57, 6
; BE-NEXT: mulld 12, 4, 6
; BE-NEXT: rldicl 6, 3, 6, 58
; BE-NEXT: mulld 9, 4, 5
; BE-NEXT: rldicl 5, 3, 5, 59
; BE-NEXT: rldicl 6, 6, 58, 5
; BE-NEXT: rldicl 5, 5, 59, 4
; BE-NEXT: mulld 10, 4, 6
; BE-NEXT: rldicl 6, 3, 4, 60
; BE-NEXT: mulld 7, 4, 5
; BE-NEXT: rldicl 5, 3, 3, 61
; BE-NEXT: rldicl 3, 3, 2, 62
; BE-NEXT: rldicl 6, 6, 60, 3
; BE-NEXT: rldicl 3, 3, 62, 1
; BE-NEXT: mulld 8, 4, 6
; BE-NEXT: mulld 6, 4, 3
; BE-NEXT: ld 3, 896(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 5, 5, 61, 2
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: xor 3, 2, 3
; BE-NEXT: ld 4, 344(1) # 8-byte Folded Reload
; BE-NEXT: ld 2, 336(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 2, 4
; BE-NEXT: ld 2, 888(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 328(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 872(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 320(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 880(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 312(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 856(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 304(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 864(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 296(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 840(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 288(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 848(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 280(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 824(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 272(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 832(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 264(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 808(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 256(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 816(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 248(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 792(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 240(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 800(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 232(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 776(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 224(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 784(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 216(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 760(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 208(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 768(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 200(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 744(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 192(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 752(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 184(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 736(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 176(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 728(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 168(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 720(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 160(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 712(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 152(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 704(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 144(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 696(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 136(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 688(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 128(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 680(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 120(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 672(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 112(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 664(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 104(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 656(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 96(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 640(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 80(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 624(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 64(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 632(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 72(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 608(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 31
; BE-NEXT: ld 31, 616(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: xor 3, 3, 31
; BE-NEXT: ld 31, 56(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 31
; BE-NEXT: ld 31, 592(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 15
; BE-NEXT: xor 4, 4, 14
; BE-NEXT: ld 15, 600(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 31
; BE-NEXT: xor 4, 4, 17
; BE-NEXT: xor 4, 4, 16
; BE-NEXT: xor 3, 3, 15
; BE-NEXT: ld 15, 576(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 19
; BE-NEXT: xor 4, 4, 18
; BE-NEXT: ld 17, 584(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 15
; BE-NEXT: xor 4, 4, 21
; BE-NEXT: xor 4, 4, 20
; BE-NEXT: xor 3, 3, 17
; BE-NEXT: ld 17, 560(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 23
; BE-NEXT: xor 4, 4, 22
; BE-NEXT: ld 19, 568(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 17
; BE-NEXT: xor 4, 4, 25
; BE-NEXT: xor 4, 4, 24
; BE-NEXT: xor 3, 3, 19
; BE-NEXT: ld 19, 544(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 27
; BE-NEXT: xor 4, 4, 26
; BE-NEXT: ld 21, 552(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 19
; BE-NEXT: xor 4, 4, 29
; BE-NEXT: xor 4, 4, 28
; BE-NEXT: xor 3, 3, 21
; BE-NEXT: ld 21, 528(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 0
; BE-NEXT: xor 4, 4, 30
; BE-NEXT: ld 23, 536(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 21
; BE-NEXT: xor 4, 4, 11
; BE-NEXT: xor 4, 4, 12
; BE-NEXT: xor 3, 3, 23
; BE-NEXT: ld 23, 512(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 9
; BE-NEXT: xor 4, 4, 10
; BE-NEXT: ld 25, 520(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 23
; BE-NEXT: xor 4, 4, 7
; BE-NEXT: xor 4, 4, 8
; BE-NEXT: xor 3, 3, 25
; BE-NEXT: ld 25, 496(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 5
; BE-NEXT: xor 4, 4, 6
; BE-NEXT: ld 27, 504(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 25
; BE-NEXT: xor 3, 3, 27
; BE-NEXT: ld 27, 480(1) # 8-byte Folded Reload
; BE-NEXT: ld 29, 488(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 27
; BE-NEXT: xor 3, 3, 29
; BE-NEXT: ld 29, 464(1) # 8-byte Folded Reload
; BE-NEXT: ld 0, 472(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 29
; BE-NEXT: xor 3, 3, 0
; BE-NEXT: ld 0, 448(1) # 8-byte Folded Reload
; BE-NEXT: ld 11, 456(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 0
; BE-NEXT: xor 3, 3, 11
; BE-NEXT: ld 11, 432(1) # 8-byte Folded Reload
; BE-NEXT: ld 9, 440(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 11
; BE-NEXT: xor 3, 3, 9
; BE-NEXT: ld 9, 416(1) # 8-byte Folded Reload
; BE-NEXT: ld 7, 424(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 9
; BE-NEXT: xor 3, 3, 7
; BE-NEXT: ld 7, 400(1) # 8-byte Folded Reload
; BE-NEXT: ld 5, 408(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 7
; BE-NEXT: xor 3, 3, 5
; BE-NEXT: ld 5, 648(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 5
; BE-NEXT: ld 5, 88(1) # 8-byte Folded Reload
; BE-NEXT: ld 7, 360(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 5
; BE-NEXT: sldi 5, 3, 1
; BE-NEXT: rldicl 3, 3, 63, 1
; BE-NEXT: sldi 6, 4, 1
; BE-NEXT: ld 8, 352(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 4, 4, 63, 1
; BE-NEXT: and 5, 5, 7
; BE-NEXT: and 3, 3, 8
; BE-NEXT: and 6, 6, 7
; BE-NEXT: ld 7, 376(1) # 8-byte Folded Reload
; BE-NEXT: and 4, 4, 8
; BE-NEXT: or 3, 3, 5
; BE-NEXT: ld 8, 368(1) # 8-byte Folded Reload
; BE-NEXT: or 4, 4, 6
; BE-NEXT: sldi 5, 3, 2
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: sldi 6, 4, 2
; BE-NEXT: ld 2, 904(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 4, 4, 62, 2
; BE-NEXT: and 5, 5, 7
; BE-NEXT: ld 31, 1048(1) # 8-byte Folded Reload
; BE-NEXT: and 3, 3, 8
; BE-NEXT: and 6, 6, 7
; BE-NEXT: and 4, 4, 8
; BE-NEXT: ld 8, 384(1) # 8-byte Folded Reload
; BE-NEXT: or 3, 3, 5
; BE-NEXT: sldi 5, 3, 4
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: ld 7, 392(1) # 8-byte Folded Reload
; BE-NEXT: or 4, 4, 6
; BE-NEXT: and 5, 5, 8
; BE-NEXT: and 3, 3, 7
; BE-NEXT: sldi 6, 4, 4
; BE-NEXT: ld 30, 1040(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 4, 4, 60, 4
; BE-NEXT: or 3, 3, 5
; BE-NEXT: ld 29, 1032(1) # 8-byte Folded Reload
; BE-NEXT: and 6, 6, 8
; BE-NEXT: and 4, 4, 7
; BE-NEXT: rotlwi 5, 3, 24
; BE-NEXT: or 4, 4, 6
; BE-NEXT: ld 28, 1024(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 5, 3, 8, 8, 15
; BE-NEXT: rotlwi 6, 4, 24
; BE-NEXT: ld 27, 1016(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 7, 3, 32, 32
; BE-NEXT: rlwimi 5, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 4, 32, 32
; BE-NEXT: ld 26, 1008(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 6, 4, 8, 8, 15
; BE-NEXT: ld 25, 1000(1) # 8-byte Folded Reload
; BE-NEXT: rotlwi 8, 7, 24
; BE-NEXT: rotlwi 9, 3, 24
; BE-NEXT: rlwimi 8, 7, 8, 8, 15
; BE-NEXT: ld 24, 992(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 9, 3, 8, 8, 15
; BE-NEXT: ld 23, 984(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 6, 4, 8, 24, 31
; BE-NEXT: rlwimi 8, 7, 8, 24, 31
; BE-NEXT: ld 22, 976(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 9, 3, 8, 24, 31
; BE-NEXT: ld 21, 968(1) # 8-byte Folded Reload
; BE-NEXT: sldi 3, 5, 32
; BE-NEXT: sldi 4, 6, 32
; BE-NEXT: or 3, 3, 8
; BE-NEXT: ld 20, 960(1) # 8-byte Folded Reload
; BE-NEXT: or 4, 4, 9
; BE-NEXT: ld 19, 952(1) # 8-byte Folded Reload
; BE-NEXT: ld 18, 944(1) # 8-byte Folded Reload
; BE-NEXT: ld 17, 936(1) # 8-byte Folded Reload
; BE-NEXT: ld 16, 928(1) # 8-byte Folded Reload
; BE-NEXT: ld 15, 920(1) # 8-byte Folded Reload
; BE-NEXT: ld 14, 912(1) # 8-byte Folded Reload
; BE-NEXT: addi 1, 1, 1056
; BE-NEXT: blr
;
; LE-LABEL: clmulr_v2i64:
; LE: # %bb.0:
; LE-NEXT: lis 3, -21846
; LE-NEXT: lis 4, 21845
; LE-NEXT: lis 5, -13108
; LE-NEXT: lis 6, 13107
; LE-NEXT: xxswapd 0, 34
; LE-NEXT: lis 7, -3856
; LE-NEXT: lis 8, 3855
; LE-NEXT: xxswapd 1, 35
; LE-NEXT: ori 3, 3, 43690
; LE-NEXT: ori 4, 4, 21845
; LE-NEXT: ori 5, 5, 52428
; LE-NEXT: ori 6, 6, 13107
; LE-NEXT: mffprd 9, 0
; LE-NEXT: ori 7, 7, 61680
; LE-NEXT: ori 8, 8, 3855
; LE-NEXT: mffprd 10, 1
; LE-NEXT: sldi 3, 3, 32
; LE-NEXT: sldi 4, 4, 32
; LE-NEXT: sldi 5, 5, 32
; LE-NEXT: sldi 6, 6, 32
; LE-NEXT: sldi 7, 7, 32
; LE-NEXT: sldi 8, 8, 32
; LE-NEXT: vspltisw 4, 4
; LE-NEXT: vspltisw 0, 8
; LE-NEXT: oris 3, 3, 43690
; LE-NEXT: oris 4, 4, 21845
; LE-NEXT: vspltisw 7, 1
; LE-NEXT: vspltisw 10, 7
; LE-NEXT: oris 5, 5, 52428
; LE-NEXT: oris 11, 6, 13107
; LE-NEXT: vupklsw 1, 4
; LE-NEXT: vspltisw 4, 3
; LE-NEXT: oris 12, 7, 61680
; LE-NEXT: oris 0, 8, 3855
; LE-NEXT: vupklsw 6, 0
; LE-NEXT: vupklsw 10, 10
; LE-NEXT: ori 8, 3, 43690
; LE-NEXT: ori 7, 4, 21845
; LE-NEXT: vupklsw 8, 4
; LE-NEXT: xxlxor 36, 36, 36
; LE-NEXT: ori 6, 5, 52428
; LE-NEXT: ori 5, 11, 13107
; LE-NEXT: sldi 11, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: ori 4, 12, 61680
; LE-NEXT: sldi 12, 10, 1
; LE-NEXT: rldicl 10, 10, 63, 1
; LE-NEXT: and 11, 11, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 9, 9, 11
; LE-NEXT: or 10, 10, 12
; LE-NEXT: ori 3, 0, 3855
; LE-NEXT: sldi 11, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: sldi 12, 10, 2
; LE-NEXT: rldicl 10, 10, 62, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 9, 9, 11
; LE-NEXT: or 10, 10, 12
; LE-NEXT: sldi 11, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: sldi 12, 10, 4
; LE-NEXT: rldicl 10, 10, 60, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 9, 9, 11
; LE-NEXT: or 10, 10, 12
; LE-NEXT: rotlwi 12, 9, 24
; LE-NEXT: rldicl 11, 9, 32, 32
; LE-NEXT: rldicl 0, 10, 32, 32
; LE-NEXT: rlwimi 12, 9, 8, 8, 15
; LE-NEXT: rlwimi 12, 9, 8, 24, 31
; LE-NEXT: rotlwi 9, 10, 24
; LE-NEXT: sldi 12, 12, 32
; LE-NEXT: rlwimi 9, 10, 8, 8, 15
; LE-NEXT: rlwimi 9, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 11, 24
; LE-NEXT: sldi 9, 9, 32
; LE-NEXT: rlwimi 10, 11, 8, 8, 15
; LE-NEXT: rlwimi 10, 11, 8, 24, 31
; LE-NEXT: rotlwi 11, 0, 24
; LE-NEXT: or 10, 12, 10
; LE-NEXT: rlwimi 11, 0, 8, 8, 15
; LE-NEXT: rlwimi 11, 0, 8, 24, 31
; LE-NEXT: mtfprd 0, 10
; LE-NEXT: or 9, 9, 11
; LE-NEXT: mtfprd 1, 9
; LE-NEXT: mfvsrd 9, 35
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: and 10, 10, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: and 10, 10, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 10
; LE-NEXT: rldicl 10, 9, 32, 32
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 9, 24
; LE-NEXT: rlwimi 10, 9, 8, 8, 15
; LE-NEXT: rlwimi 10, 9, 8, 24, 31
; LE-NEXT: mfvsrd 9, 34
; LE-NEXT: sldi 10, 10, 32
; LE-NEXT: or 10, 10, 11
; LE-NEXT: mtfprd 2, 10
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: and 10, 10, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: and 10, 10, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 10
; LE-NEXT: rldicl 10, 9, 32, 32
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 9, 24
; LE-NEXT: rlwimi 10, 9, 8, 8, 15
; LE-NEXT: rlwimi 10, 9, 8, 24, 31
; LE-NEXT: sldi 9, 10, 32
; LE-NEXT: addis 10, 2, .LCPI7_14@toc@ha
; LE-NEXT: or 9, 9, 11
; LE-NEXT: vspltisw 3, 2
; LE-NEXT: vupklsw 5, 3
; LE-NEXT: xxmrghd 34, 2, 1
; LE-NEXT: xxland 41, 34, 37
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: mtfprd 1, 9
; LE-NEXT: addis 9, 2, .LCPI7_0@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_0@toc@l
; LE-NEXT: xxmrghd 35, 1, 0
; LE-NEXT: vaddudm 0, 3, 3
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: xxland 0, 41, 32
; LE-NEXT: vupklsw 0, 7
; LE-NEXT: xxland 39, 34, 33
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: xxland 32, 34, 32
; LE-NEXT: xxland 1, 39, 37
; LE-NEXT: xxland 39, 34, 38
; LE-NEXT: vsld 5, 3, 8
; LE-NEXT: vsld 6, 3, 6
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: xxland 13, 32, 35
; LE-NEXT: xxland 2, 39, 37
; LE-NEXT: vsld 5, 3, 1
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_1@toc@ha
; LE-NEXT: xxlxor 0, 13, 0
; LE-NEXT: vspltisw 8, 5
; LE-NEXT: addi 9, 9, .LCPI7_1@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: xxland 41, 34, 33
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxland 5, 41, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_2@toc@ha
; LE-NEXT: vupklsw 8, 8
; LE-NEXT: vsld 8, 3, 8
; LE-NEXT: addi 9, 9, .LCPI7_2@toc@l
; LE-NEXT: xxlxor 0, 0, 5
; LE-NEXT: lxvd2x 3, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_3@toc@ha
; LE-NEXT: xxland 41, 34, 37
; LE-NEXT: vspltisw 7, 6
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_3@toc@l
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: lxvd2x 6, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_4@toc@ha
; LE-NEXT: xxland 4, 41, 40
; LE-NEXT: xxland 40, 34, 3
; LE-NEXT: vupklsw 7, 7
; LE-NEXT: vsld 7, 3, 7
; LE-NEXT: addi 9, 9, .LCPI7_4@toc@l
; LE-NEXT: vcmpgtud 8, 8, 4
; LE-NEXT: xxlxor 0, 0, 4
; LE-NEXT: lxvd2x 7, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_5@toc@ha
; LE-NEXT: xxland 41, 34, 6
; LE-NEXT: xxland 3, 40, 39
; LE-NEXT: vsld 7, 3, 10
; LE-NEXT: addi 9, 9, .LCPI7_5@toc@l
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxlxor 0, 0, 3
; LE-NEXT: lxvd2x 8, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_6@toc@ha
; LE-NEXT: xxland 6, 41, 39
; LE-NEXT: xxland 41, 34, 7
; LE-NEXT: addi 9, 9, .LCPI7_6@toc@l
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxlxor 0, 0, 6
; LE-NEXT: xxland 7, 41, 38
; LE-NEXT: xxland 41, 34, 8
; LE-NEXT: lxvd2x 8, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_7@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_7@toc@l
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxlxor 0, 0, 7
; LE-NEXT: lxvd2x 10, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_8@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_8@toc@l
; LE-NEXT: lxvd2x 11, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_9@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_9@toc@l
; LE-NEXT: lxvd2x 12, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_10@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_10@toc@l
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_11@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_11@toc@l
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_12@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_12@toc@l
; LE-NEXT: lxvd2x 4, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_13@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_13@toc@l
; LE-NEXT: vspltisw 8, 9
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: vspltisw 8, 10
; LE-NEXT: vsld 6, 3, 7
; LE-NEXT: xxland 9, 41, 38
; LE-NEXT: xxland 41, 34, 10
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxlxor 0, 0, 9
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: vspltisw 8, 11
; LE-NEXT: vsld 6, 3, 7
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: xxland 40, 34, 8
; LE-NEXT: vcmpgtud 8, 8, 4
; LE-NEXT: xxland 8, 40, 38
; LE-NEXT: vsld 6, 3, 7
; LE-NEXT: xxland 10, 41, 38
; LE-NEXT: xxland 41, 34, 11
; LE-NEXT: vcmpgtud 9, 9, 4
; LE-NEXT: xxlxor 0, 0, 8
; LE-NEXT: xxlxor 0, 0, 10
; LE-NEXT: vspltisw 7, 12
; LE-NEXT: vspltisw 8, 13
; LE-NEXT: vupklsw 6, 7
; LE-NEXT: vsld 6, 3, 6
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: xxland 11, 41, 38
; LE-NEXT: xxland 38, 34, 12
; LE-NEXT: vspltisw 8, 14
; LE-NEXT: vsld 7, 3, 7
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: xxland 12, 38, 39
; LE-NEXT: xxland 39, 34, 1
; LE-NEXT: vcmpgtud 7, 7, 4
; LE-NEXT: xxlxor 0, 0, 11
; LE-NEXT: vupklsw 8, 8
; LE-NEXT: vsld 6, 3, 8
; LE-NEXT: xxland 1, 39, 38
; LE-NEXT: xxland 38, 34, 2
; LE-NEXT: vspltisw 9, 15
; LE-NEXT: xxlxor 0, 0, 12
; LE-NEXT: vcmpgtud 6, 6, 4
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: vupklsw 0, 9
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 2, 38, 32
; LE-NEXT: vsld 0, 3, 1
; LE-NEXT: xxland 33, 34, 4
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: xxland 4, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_14@toc@l
; LE-NEXT: addis 10, 2, .LCPI7_16@toc@ha
; LE-NEXT: lxvd2x 3, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_15@toc@ha
; LE-NEXT: xxlxor 0, 0, 4
; LE-NEXT: addi 9, 9, .LCPI7_15@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 3
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 3, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_16@toc@l
; LE-NEXT: addis 10, 2, .LCPI7_18@toc@ha
; LE-NEXT: lxvd2x 5, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_17@toc@ha
; LE-NEXT: xxlxor 0, 0, 3
; LE-NEXT: addi 9, 9, .LCPI7_17@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 5
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 5, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_18@toc@l
; LE-NEXT: addis 10, 2, .LCPI7_20@toc@ha
; LE-NEXT: lxvd2x 6, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_19@toc@ha
; LE-NEXT: xxlxor 0, 0, 5
; LE-NEXT: addi 9, 9, .LCPI7_19@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 6
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 6, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_20@toc@l
; LE-NEXT: addis 10, 2, .LCPI7_22@toc@ha
; LE-NEXT: lxvd2x 7, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_21@toc@ha
; LE-NEXT: xxlxor 0, 0, 6
; LE-NEXT: addi 9, 9, .LCPI7_21@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 7
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 7, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_22@toc@l
; LE-NEXT: addis 10, 2, .LCPI7_24@toc@ha
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_23@toc@ha
; LE-NEXT: xxlxor 0, 0, 7
; LE-NEXT: addi 9, 9, .LCPI7_23@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_24@toc@l
; LE-NEXT: addis 10, 2, .LCPI7_26@toc@ha
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_25@toc@ha
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: addi 9, 9, .LCPI7_25@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 2
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 2, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_26@toc@l
; LE-NEXT: addis 10, 2, .LCPI7_28@toc@ha
; LE-NEXT: lxvd2x 3, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_27@toc@ha
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: addi 9, 9, .LCPI7_27@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 3
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 3, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addi 9, 10, .LCPI7_28@toc@l
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_29@toc@ha
; LE-NEXT: xxlxor 0, 0, 3
; LE-NEXT: addi 9, 9, .LCPI7_29@toc@l
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_30@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_30@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_31@toc@ha
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI7_31@toc@l
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_32@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_32@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_33@toc@ha
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI7_33@toc@l
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_34@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_34@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_35@toc@ha
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI7_35@toc@l
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_36@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_36@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_37@toc@ha
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI7_37@toc@l
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_38@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_38@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_39@toc@ha
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI7_39@toc@l
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_40@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_40@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_41@toc@ha
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI7_41@toc@l
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_42@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_42@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_43@toc@ha
; LE-NEXT: vsld 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI7_43@toc@l
; LE-NEXT: xxland 33, 34, 1
; LE-NEXT: vcmpgtud 1, 1, 4
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_44@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_44@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_45@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_45@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_46@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_46@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_47@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_47@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_48@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_48@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_49@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_49@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_50@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_50@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_51@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_51@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_52@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_52@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_53@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_53@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_54@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_54@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_55@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_55@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_56@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_56@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_57@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_57@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_58@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_58@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_59@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_59@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_60@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_60@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_61@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_61@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_62@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_62@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_63@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_63@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_64@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_64@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_65@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_65@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_66@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_66@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_67@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_67@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_68@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_68@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_69@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_69@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_70@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_70@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_71@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_71@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_72@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_72@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_73@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_73@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_74@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_74@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_75@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_75@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_76@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_76@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_77@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_77@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_78@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_78@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_79@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_79@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_80@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_80@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_81@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_81@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_82@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_82@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_83@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_83@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_84@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_84@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_85@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_85@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_86@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_86@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_87@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_87@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_88@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_88@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_89@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_89@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_90@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_90@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_91@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_91@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_92@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_92@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_93@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_93@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_94@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_94@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_95@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_95@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_96@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_96@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_97@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_97@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_98@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_98@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_99@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_99@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_100@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_100@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_101@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_101@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_102@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_102@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: lxvd2x 37, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_103@toc@ha
; LE-NEXT: addi 9, 9, .LCPI7_103@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI7_104@toc@ha
; LE-NEXT: vsld 5, 3, 5
; LE-NEXT: addi 9, 9, .LCPI7_104@toc@l
; LE-NEXT: xxland 32, 34, 1
; LE-NEXT: vcmpgtud 0, 0, 4
; LE-NEXT: xxland 1, 32, 37
; LE-NEXT: xxleqv 37, 37, 37
; LE-NEXT: vsld 3, 3, 5
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: xxland 34, 34, 1
; LE-NEXT: vcmpgtud 2, 2, 4
; LE-NEXT: xxland 1, 34, 35
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: mffprd 9, 0
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: and 10, 10, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: and 10, 10, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 10
; LE-NEXT: rldicl 10, 9, 32, 32
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 9, 24
; LE-NEXT: rlwimi 10, 9, 8, 8, 15
; LE-NEXT: rlwimi 10, 9, 8, 24, 31
; LE-NEXT: sldi 9, 10, 32
; LE-NEXT: or 9, 9, 11
; LE-NEXT: xxswapd 1, 0
; LE-NEXT: mtfprd 0, 9
; LE-NEXT: mffprd 9, 1
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 8, 10, 8
; LE-NEXT: and 7, 9, 7
; LE-NEXT: or 7, 7, 8
; LE-NEXT: sldi 8, 7, 2
; LE-NEXT: rldicl 7, 7, 62, 2
; LE-NEXT: and 6, 8, 6
; LE-NEXT: and 5, 7, 5
; LE-NEXT: or 5, 5, 6
; LE-NEXT: sldi 6, 5, 4
; LE-NEXT: rldicl 5, 5, 60, 4
; LE-NEXT: and 4, 6, 4
; LE-NEXT: and 3, 5, 3
; LE-NEXT: or 3, 3, 4
; LE-NEXT: rldicl 4, 3, 32, 32
; LE-NEXT: rotlwi 5, 4, 24
; LE-NEXT: rlwimi 5, 4, 8, 8, 15
; LE-NEXT: rlwimi 5, 4, 8, 24, 31
; LE-NEXT: rotlwi 4, 3, 24
; LE-NEXT: rlwimi 4, 3, 8, 8, 15
; LE-NEXT: rlwimi 4, 3, 8, 24, 31
; LE-NEXT: sldi 3, 4, 32
; LE-NEXT: or 3, 3, 5
; LE-NEXT: mtfprd 1, 3
; LE-NEXT: xxmrghd 34, 0, 1
; LE-NEXT: blr
%a.ext = zext <2 x i64> %a to <2 x i128>
%b.ext = zext <2 x i64> %b to <2 x i128>
%clmul = call <2 x i128> @llvm.clmul.v2i128(<2 x i128> %a.ext, <2 x i128> %b.ext)
%res.ext = lshr <2 x i128> %clmul, splat (i128 63)
%res = trunc <2 x i128> %res.ext to <2 x i64>
ret <2 x i64> %res
}
define <16 x i8> @clmulh_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
; BE-LABEL: clmulh_v16i8:
; BE: # %bb.0:
; BE-NEXT: li 3, -48
; BE-NEXT: vspltisb 4, 4
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -32
; BE-NEXT: vsrb 1, 3, 4
; BE-NEXT: vspltisb 5, 15
; BE-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -16
; BE-NEXT: vspltisb 7, -1
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI8_0@toc@ha
; BE-NEXT: addi 3, 3, .LCPI8_0@toc@l
; BE-NEXT: vand 3, 3, 5
; BE-NEXT: vspltisb 13, 8
; BE-NEXT: vslb 3, 3, 4
; BE-NEXT: vsrb 0, 2, 4
; BE-NEXT: vand 2, 2, 5
; BE-NEXT: vor 1, 1, 3
; BE-NEXT: lvx 3, 0, 3
; BE-NEXT: addis 3, 2, .LCPI8_1@toc@ha
; BE-NEXT: addi 3, 3, .LCPI8_1@toc@l
; BE-NEXT: vslb 2, 2, 4
; BE-NEXT: vor 0, 0, 2
; BE-NEXT: vspltisb 2, 2
; BE-NEXT: vsrb 9, 1, 2
; BE-NEXT: vand 1, 1, 3
; BE-NEXT: vand 9, 9, 3
; BE-NEXT: vslb 1, 1, 2
; BE-NEXT: vsrb 8, 0, 2
; BE-NEXT: vand 0, 0, 3
; BE-NEXT: vor 9, 9, 1
; BE-NEXT: lvx 1, 0, 3
; BE-NEXT: addis 3, 2, .LCPI8_3@toc@ha
; BE-NEXT: addi 3, 3, .LCPI8_3@toc@l
; BE-NEXT: lvx 15, 0, 3
; BE-NEXT: addis 3, 2, .LCPI8_2@toc@ha
; BE-NEXT: addi 3, 3, .LCPI8_2@toc@l
; BE-NEXT: vand 8, 8, 3
; BE-NEXT: vslb 0, 0, 2
; BE-NEXT: vor 8, 8, 0
; BE-NEXT: vspltisb 0, 1
; BE-NEXT: vsrb 11, 9, 0
; BE-NEXT: vand 9, 9, 1
; BE-NEXT: vaddubm 9, 9, 9
; BE-NEXT: vand 11, 11, 1
; BE-NEXT: vsrb 10, 8, 0
; BE-NEXT: vand 8, 8, 1
; BE-NEXT: vaddubm 8, 8, 8
; BE-NEXT: vor 9, 11, 9
; BE-NEXT: vslb 6, 4, 4
; BE-NEXT: vslb 7, 7, 7
; BE-NEXT: vand 10, 10, 1
; BE-NEXT: vand 14, 9, 13
; BE-NEXT: vaddubm 13, 13, 13
; BE-NEXT: vor 8, 10, 8
; BE-NEXT: vand 10, 9, 2
; BE-NEXT: vand 11, 9, 0
; BE-NEXT: vand 12, 9, 4
; BE-NEXT: vand 13, 9, 13
; BE-NEXT: vand 15, 9, 15
; BE-NEXT: vand 6, 9, 6
; BE-NEXT: vand 7, 9, 7
; BE-NEXT: vmuloub 9, 8, 10
; BE-NEXT: vmuleub 10, 8, 10
; BE-NEXT: vmuloub 16, 8, 11
; BE-NEXT: vmuleub 11, 8, 11
; BE-NEXT: vmuloub 17, 8, 12
; BE-NEXT: vmuleub 12, 8, 12
; BE-NEXT: vmuloub 18, 8, 14
; BE-NEXT: vmuleub 14, 8, 14
; BE-NEXT: vmuloub 19, 8, 13
; BE-NEXT: vmuleub 13, 8, 13
; BE-NEXT: vmuloub 31, 8, 15
; BE-NEXT: vmuleub 15, 8, 15
; BE-NEXT: vmuloub 30, 8, 6
; BE-NEXT: vmuleub 6, 8, 6
; BE-NEXT: vmuloub 29, 8, 7
; BE-NEXT: vmuleub 7, 8, 7
; BE-NEXT: lvx 8, 0, 3
; BE-NEXT: li 3, -16
; BE-NEXT: vperm 9, 10, 9, 8
; BE-NEXT: vperm 10, 11, 16, 8
; BE-NEXT: vperm 11, 12, 17, 8
; BE-NEXT: vperm 12, 14, 18, 8
; BE-NEXT: vperm 13, 13, 19, 8
; BE-NEXT: vperm 14, 15, 31, 8
; BE-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -32
; BE-NEXT: vperm 6, 6, 30, 8
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -48
; BE-NEXT: vperm 7, 7, 29, 8
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: vxor 8, 10, 9
; BE-NEXT: vxor 8, 8, 11
; BE-NEXT: vxor 8, 8, 12
; BE-NEXT: vxor 8, 8, 13
; BE-NEXT: vxor 8, 8, 14
; BE-NEXT: vxor 6, 8, 6
; BE-NEXT: vxor 6, 6, 7
; BE-NEXT: vand 5, 6, 5
; BE-NEXT: vsrb 7, 6, 4
; BE-NEXT: vslb 4, 5, 4
; BE-NEXT: vor 4, 7, 4
; BE-NEXT: vand 5, 4, 3
; BE-NEXT: vsrb 4, 4, 2
; BE-NEXT: vslb 2, 5, 2
; BE-NEXT: vand 3, 4, 3
; BE-NEXT: vor 2, 3, 2
; BE-NEXT: vsrb 3, 2, 0
; BE-NEXT: vand 2, 2, 1
; BE-NEXT: vaddubm 2, 2, 2
; BE-NEXT: vand 3, 3, 1
; BE-NEXT: vor 2, 3, 2
; BE-NEXT: vsrb 2, 2, 0
; BE-NEXT: blr
;
; LE-LABEL: clmulh_v16i8:
; LE: # %bb.0:
; LE-NEXT: addis 3, 2, .LCPI8_0@toc@ha
; LE-NEXT: vspltisb 4, 4
; LE-NEXT: vspltisb 5, 2
; LE-NEXT: addi 3, 3, .LCPI8_0@toc@l
; LE-NEXT: vslb 1, 3, 4
; LE-NEXT: vsrb 3, 3, 4
; LE-NEXT: vslb 6, 2, 4
; LE-NEXT: vsrb 2, 2, 4
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: addis 3, 2, .LCPI8_1@toc@ha
; LE-NEXT: xxlor 35, 35, 33
; LE-NEXT: xxlor 34, 34, 38
; LE-NEXT: vspltisb 0, 1
; LE-NEXT: addi 3, 3, .LCPI8_1@toc@l
; LE-NEXT: vsrb 1, 3, 5
; LE-NEXT: vsrb 7, 2, 5
; LE-NEXT: vspltisb 6, 8
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI8_2@toc@ha
; LE-NEXT: xxland 35, 35, 0
; LE-NEXT: xxland 34, 34, 0
; LE-NEXT: xxland 2, 33, 0
; LE-NEXT: xxland 3, 39, 0
; LE-NEXT: addi 3, 3, .LCPI8_2@toc@l
; LE-NEXT: vslb 3, 3, 5
; LE-NEXT: vslb 2, 2, 5
; LE-NEXT: xxlor 35, 2, 35
; LE-NEXT: xxlor 34, 3, 34
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: addis 3, 2, .LCPI8_3@toc@ha
; LE-NEXT: vsrb 1, 3, 0
; LE-NEXT: xxland 35, 35, 1
; LE-NEXT: vsrb 7, 2, 0
; LE-NEXT: xxland 34, 34, 1
; LE-NEXT: addi 3, 3, .LCPI8_3@toc@l
; LE-NEXT: xxland 2, 33, 1
; LE-NEXT: vaddubm 3, 3, 3
; LE-NEXT: vaddubm 2, 2, 2
; LE-NEXT: xxlor 2, 2, 35
; LE-NEXT: xxland 35, 2, 37
; LE-NEXT: xxswapd 33, 3
; LE-NEXT: xxland 3, 39, 1
; LE-NEXT: xxlor 34, 3, 34
; LE-NEXT: lxvd2x 3, 0, 3
; LE-NEXT: vmuloub 7, 2, 3
; LE-NEXT: vmuleub 3, 2, 3
; LE-NEXT: vperm 3, 3, 7, 1
; LE-NEXT: xxland 39, 2, 32
; LE-NEXT: vmuloub 8, 2, 7
; LE-NEXT: vmuleub 7, 2, 7
; LE-NEXT: vperm 7, 7, 8, 1
; LE-NEXT: xxland 40, 2, 36
; LE-NEXT: vmuloub 9, 2, 8
; LE-NEXT: vmuleub 8, 2, 8
; LE-NEXT: vperm 8, 8, 9, 1
; LE-NEXT: xxland 41, 2, 38
; LE-NEXT: vaddubm 6, 6, 6
; LE-NEXT: vmuloub 10, 2, 9
; LE-NEXT: vmuleub 9, 2, 9
; LE-NEXT: xxland 38, 2, 38
; LE-NEXT: vperm 9, 9, 10, 1
; LE-NEXT: vmuloub 10, 2, 6
; LE-NEXT: vmuleub 6, 2, 6
; LE-NEXT: vperm 6, 6, 10, 1
; LE-NEXT: xxland 42, 2, 3
; LE-NEXT: vmuloub 11, 2, 10
; LE-NEXT: vmuleub 10, 2, 10
; LE-NEXT: vperm 10, 10, 11, 1
; LE-NEXT: vslb 11, 4, 4
; LE-NEXT: xxland 43, 2, 43
; LE-NEXT: vmuloub 12, 2, 11
; LE-NEXT: vmuleub 11, 2, 11
; LE-NEXT: vperm 11, 11, 12, 1
; LE-NEXT: xxleqv 44, 44, 44
; LE-NEXT: vslb 12, 12, 12
; LE-NEXT: xxland 44, 2, 44
; LE-NEXT: xxlxor 2, 39, 35
; LE-NEXT: xxlxor 2, 2, 40
; LE-NEXT: vmuloub 13, 2, 12
; LE-NEXT: vmuleub 2, 2, 12
; LE-NEXT: xxlxor 2, 2, 41
; LE-NEXT: xxlxor 2, 2, 38
; LE-NEXT: xxlxor 2, 2, 42
; LE-NEXT: xxlxor 2, 2, 43
; LE-NEXT: vperm 2, 2, 13, 1
; LE-NEXT: xxlxor 34, 2, 34
; LE-NEXT: vslb 3, 2, 4
; LE-NEXT: vsrb 2, 2, 4
; LE-NEXT: xxlor 34, 34, 35
; LE-NEXT: xxland 35, 34, 0
; LE-NEXT: vsrb 2, 2, 5
; LE-NEXT: vslb 3, 3, 5
; LE-NEXT: xxland 0, 34, 0
; LE-NEXT: xxlor 34, 0, 35
; LE-NEXT: vsrb 3, 2, 0
; LE-NEXT: xxland 34, 34, 1
; LE-NEXT: xxland 0, 35, 1
; LE-NEXT: vaddubm 2, 2, 2
; LE-NEXT: xxlor 34, 0, 34
; LE-NEXT: vsrb 2, 2, 0
; LE-NEXT: blr
%a.ext = zext <16 x i8> %a to <16 x i16>
%b.ext = zext <16 x i8> %b to <16 x i16>
%clmul = call <16 x i16> @llvm.clmul.v16i16(<16 x i16> %a.ext, <16 x i16> %b.ext)
%res.ext = lshr <16 x i16> %clmul, splat (i16 8)
%res = trunc <16 x i16> %res.ext to <16 x i8>
ret <16 x i8> %res
}
define <8 x i16> @clmulh_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
; BE-LABEL: clmulh_v8i16:
; BE: # %bb.0:
; BE-NEXT: li 3, -96
; BE-NEXT: vspltisb 1, -1
; BE-NEXT: vxor 5, 5, 5
; BE-NEXT: stvx 26, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -80
; BE-NEXT: vspltish 0, 4
; BE-NEXT: stvx 27, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -64
; BE-NEXT: vspltish 4, 1
; BE-NEXT: stvx 28, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -48
; BE-NEXT: vslh 17, 1, 1
; BE-NEXT: vspltish 15, 2
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -32
; BE-NEXT: vspltish 16, 8
; BE-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, -16
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addis 3, 2, .LCPI9_0@toc@ha
; BE-NEXT: vslh 6, 0, 0
; BE-NEXT: addi 3, 3, .LCPI9_0@toc@l
; BE-NEXT: lvx 1, 0, 3
; BE-NEXT: addis 3, 2, .LCPI9_1@toc@ha
; BE-NEXT: addi 3, 3, .LCPI9_1@toc@l
; BE-NEXT: vperm 7, 2, 2, 1
; BE-NEXT: vspltisb 2, 4
; BE-NEXT: vperm 8, 3, 3, 1
; BE-NEXT: vspltisb 3, 15
; BE-NEXT: vsrb 11, 7, 2
; BE-NEXT: vand 7, 7, 3
; BE-NEXT: vslb 7, 7, 2
; BE-NEXT: vsrb 13, 8, 2
; BE-NEXT: vand 8, 8, 3
; BE-NEXT: vor 11, 11, 7
; BE-NEXT: lvx 7, 0, 3
; BE-NEXT: addis 3, 2, .LCPI9_2@toc@ha
; BE-NEXT: addi 3, 3, .LCPI9_2@toc@l
; BE-NEXT: vslb 8, 8, 2
; BE-NEXT: vor 13, 13, 8
; BE-NEXT: vspltisb 8, 2
; BE-NEXT: vand 19, 13, 7
; BE-NEXT: vsrb 13, 13, 8
; BE-NEXT: vslb 19, 19, 8
; BE-NEXT: vand 13, 13, 7
; BE-NEXT: vand 18, 11, 7
; BE-NEXT: vsrb 11, 11, 8
; BE-NEXT: vor 19, 13, 19
; BE-NEXT: lvx 13, 0, 3
; BE-NEXT: addis 3, 2, .LCPI9_3@toc@ha
; BE-NEXT: addi 3, 3, .LCPI9_3@toc@l
; BE-NEXT: vslb 18, 18, 8
; BE-NEXT: vand 11, 11, 7
; BE-NEXT: vor 18, 11, 18
; BE-NEXT: vspltisb 11, 1
; BE-NEXT: vsrb 30, 19, 11
; BE-NEXT: vand 19, 19, 13
; BE-NEXT: vaddubm 19, 19, 19
; BE-NEXT: vand 30, 30, 13
; BE-NEXT: vor 19, 30, 19
; BE-NEXT: lvx 30, 0, 3
; BE-NEXT: addis 3, 2, .LCPI9_4@toc@ha
; BE-NEXT: addi 3, 3, .LCPI9_4@toc@l
; BE-NEXT: lvx 29, 0, 3
; BE-NEXT: addis 3, 2, .LCPI9_5@toc@ha
; BE-NEXT: addi 3, 3, .LCPI9_5@toc@l
; BE-NEXT: lvx 28, 0, 3
; BE-NEXT: addis 3, 2, .LCPI9_6@toc@ha
; BE-NEXT: addi 3, 3, .LCPI9_6@toc@l
; BE-NEXT: vsrb 31, 18, 11
; BE-NEXT: lvx 27, 0, 3
; BE-NEXT: addis 3, 2, .LCPI9_7@toc@ha
; BE-NEXT: addi 3, 3, .LCPI9_7@toc@l
; BE-NEXT: lvx 26, 0, 3
; BE-NEXT: li 3, -16
; BE-NEXT: vand 18, 18, 13
; BE-NEXT: vaddubm 18, 18, 18
; BE-NEXT: vand 31, 31, 13
; BE-NEXT: vsldoi 9, 4, 4, 1
; BE-NEXT: vsldoi 10, 15, 15, 1
; BE-NEXT: vsldoi 12, 0, 0, 1
; BE-NEXT: vslh 14, 16, 16
; BE-NEXT: vor 18, 31, 18
; BE-NEXT: vand 31, 19, 16
; BE-NEXT: vadduhm 16, 16, 16
; BE-NEXT: vand 15, 19, 15
; BE-NEXT: vand 0, 19, 0
; BE-NEXT: vand 16, 19, 16
; BE-NEXT: vand 30, 19, 30
; BE-NEXT: vand 6, 19, 6
; BE-NEXT: vand 29, 19, 29
; BE-NEXT: vand 9, 19, 9
; BE-NEXT: vand 10, 19, 10
; BE-NEXT: vand 12, 19, 12
; BE-NEXT: vand 14, 19, 14
; BE-NEXT: vand 28, 19, 28
; BE-NEXT: vand 27, 19, 27
; BE-NEXT: vand 26, 19, 26
; BE-NEXT: vand 17, 19, 17
; BE-NEXT: vand 19, 19, 4
; BE-NEXT: vmladduhm 15, 18, 15, 5
; BE-NEXT: vmladduhm 19, 18, 19, 5
; BE-NEXT: vmladduhm 0, 18, 0, 5
; BE-NEXT: vxor 15, 19, 15
; BE-NEXT: vmladduhm 31, 18, 31, 5
; BE-NEXT: vxor 0, 15, 0
; BE-NEXT: vmladduhm 16, 18, 16, 5
; BE-NEXT: vxor 0, 0, 31
; BE-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -32
; BE-NEXT: vmladduhm 30, 18, 30, 5
; BE-NEXT: vxor 0, 0, 16
; BE-NEXT: vmladduhm 6, 18, 6, 5
; BE-NEXT: vxor 0, 0, 30
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -48
; BE-NEXT: vmladduhm 29, 18, 29, 5
; BE-NEXT: vxor 0, 0, 6
; BE-NEXT: vmladduhm 9, 18, 9, 5
; BE-NEXT: vxor 0, 0, 29
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -64
; BE-NEXT: vmladduhm 10, 18, 10, 5
; BE-NEXT: vxor 0, 0, 9
; BE-NEXT: vmladduhm 12, 18, 12, 5
; BE-NEXT: vxor 0, 0, 10
; BE-NEXT: vmladduhm 14, 18, 14, 5
; BE-NEXT: vxor 0, 0, 12
; BE-NEXT: vmladduhm 28, 18, 28, 5
; BE-NEXT: vxor 0, 0, 14
; BE-NEXT: vmladduhm 27, 18, 27, 5
; BE-NEXT: vxor 0, 0, 28
; BE-NEXT: lvx 28, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -80
; BE-NEXT: vmladduhm 26, 18, 26, 5
; BE-NEXT: vxor 0, 0, 27
; BE-NEXT: lvx 27, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, -96
; BE-NEXT: vmladduhm 5, 18, 17, 5
; BE-NEXT: vxor 0, 0, 26
; BE-NEXT: lvx 26, 1, 3 # 16-byte Folded Reload
; BE-NEXT: vxor 5, 0, 5
; BE-NEXT: vperm 5, 5, 5, 1
; BE-NEXT: vand 3, 5, 3
; BE-NEXT: vsrb 0, 5, 2
; BE-NEXT: vslb 2, 3, 2
; BE-NEXT: vor 2, 0, 2
; BE-NEXT: vand 3, 2, 7
; BE-NEXT: vsrb 2, 2, 8
; BE-NEXT: vslb 3, 3, 8
; BE-NEXT: vand 2, 2, 7
; BE-NEXT: vor 2, 2, 3
; BE-NEXT: vsrb 3, 2, 11
; BE-NEXT: vand 2, 2, 13
; BE-NEXT: vaddubm 2, 2, 2
; BE-NEXT: vand 3, 3, 13
; BE-NEXT: vor 2, 3, 2
; BE-NEXT: vsrh 2, 2, 4
; BE-NEXT: blr
;
; LE-LABEL: clmulh_v8i16:
; LE: # %bb.0:
; LE-NEXT: addis 3, 2, .LCPI9_0@toc@ha
; LE-NEXT: vspltisb 5, 4
; LE-NEXT: vspltish 9, 2
; LE-NEXT: addi 3, 3, .LCPI9_0@toc@l
; LE-NEXT: vspltish 0, 1
; LE-NEXT: vspltish 6, 4
; LE-NEXT: vspltish 1, 8
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: addis 3, 2, .LCPI9_1@toc@ha
; LE-NEXT: vsldoi 11, 9, 9, 1
; LE-NEXT: addi 3, 3, .LCPI9_1@toc@l
; LE-NEXT: vsldoi 13, 6, 6, 1
; LE-NEXT: vsldoi 10, 0, 0, 1
; LE-NEXT: xxswapd 36, 0
; LE-NEXT: lxvd2x 0, 0, 3
; LE-NEXT: addis 3, 2, .LCPI9_2@toc@ha
; LE-NEXT: addi 3, 3, .LCPI9_2@toc@l
; LE-NEXT: vperm 8, 2, 2, 4
; LE-NEXT: vperm 7, 3, 3, 4
; LE-NEXT: vspltisb 3, 2
; LE-NEXT: vspltisb 2, 1
; LE-NEXT: vslb 12, 8, 5
; LE-NEXT: vsrb 8, 8, 5
; LE-NEXT: xxlor 40, 40, 44
; LE-NEXT: xxland 44, 40, 0
; LE-NEXT: vsrb 8, 8, 3
; LE-NEXT: vslb 12, 12, 3
; LE-NEXT: xxland 1, 40, 0
; LE-NEXT: xxlor 40, 1, 44
; LE-NEXT: lxvd2x 1, 0, 3
; LE-NEXT: addis 3, 2, .LCPI9_3@toc@ha
; LE-NEXT: vsrb 12, 8, 2
; LE-NEXT: addi 3, 3, .LCPI9_3@toc@l
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI9_4@toc@ha
; LE-NEXT: xxland 2, 44, 1
; LE-NEXT: vslb 12, 7, 5
; LE-NEXT: vsrb 7, 7, 5
; LE-NEXT: xxland 40, 40, 1
; LE-NEXT: addi 3, 3, .LCPI9_4@toc@l
; LE-NEXT: xxlor 39, 39, 44
; LE-NEXT: vaddubm 8, 8, 8
; LE-NEXT: xxland 44, 39, 0
; LE-NEXT: vsrb 7, 7, 3
; LE-NEXT: xxlor 40, 2, 40
; LE-NEXT: vslb 12, 12, 3
; LE-NEXT: xxland 2, 39, 0
; LE-NEXT: xxlor 39, 2, 44
; LE-NEXT: vsrb 12, 7, 2
; LE-NEXT: xxland 39, 39, 1
; LE-NEXT: xxland 2, 44, 1
; LE-NEXT: vaddubm 7, 7, 7
; LE-NEXT: xxlor 2, 2, 39
; LE-NEXT: vxor 7, 7, 7
; LE-NEXT: xxland 41, 2, 41
; LE-NEXT: xxland 44, 2, 32
; LE-NEXT: vmladduhm 9, 8, 9, 7
; LE-NEXT: vmladduhm 12, 8, 12, 7
; LE-NEXT: xxlxor 3, 44, 41
; LE-NEXT: xxland 41, 2, 38
; LE-NEXT: vslh 6, 6, 6
; LE-NEXT: vmladduhm 9, 8, 9, 7
; LE-NEXT: xxland 38, 2, 38
; LE-NEXT: vmladduhm 6, 8, 6, 7
; LE-NEXT: xxlxor 3, 3, 41
; LE-NEXT: xxland 41, 2, 33
; LE-NEXT: vmladduhm 9, 8, 9, 7
; LE-NEXT: xxlxor 3, 3, 41
; LE-NEXT: vadduhm 9, 1, 1
; LE-NEXT: vslh 1, 1, 1
; LE-NEXT: xxland 41, 2, 41
; LE-NEXT: xxland 33, 2, 33
; LE-NEXT: vmladduhm 9, 8, 9, 7
; LE-NEXT: vmladduhm 1, 8, 1, 7
; LE-NEXT: xxlxor 3, 3, 41
; LE-NEXT: xxland 41, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI9_5@toc@ha
; LE-NEXT: vmladduhm 9, 8, 9, 7
; LE-NEXT: addi 3, 3, .LCPI9_5@toc@l
; LE-NEXT: xxlxor 3, 3, 41
; LE-NEXT: xxlxor 3, 3, 38
; LE-NEXT: xxland 38, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI9_6@toc@ha
; LE-NEXT: vmladduhm 6, 8, 6, 7
; LE-NEXT: addi 3, 3, .LCPI9_6@toc@l
; LE-NEXT: xxlxor 3, 3, 38
; LE-NEXT: xxland 38, 2, 42
; LE-NEXT: vmladduhm 6, 8, 6, 7
; LE-NEXT: xxlxor 3, 3, 38
; LE-NEXT: xxland 38, 2, 43
; LE-NEXT: vmladduhm 6, 8, 6, 7
; LE-NEXT: xxlxor 3, 3, 38
; LE-NEXT: xxland 38, 2, 45
; LE-NEXT: vmladduhm 6, 8, 6, 7
; LE-NEXT: xxlxor 3, 3, 38
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxland 33, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: addis 3, 2, .LCPI9_7@toc@ha
; LE-NEXT: vmladduhm 1, 8, 1, 7
; LE-NEXT: addi 3, 3, .LCPI9_7@toc@l
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxland 33, 2, 4
; LE-NEXT: lxvd2x 4, 0, 3
; LE-NEXT: vmladduhm 1, 8, 1, 7
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxland 33, 2, 4
; LE-NEXT: vmladduhm 1, 8, 1, 7
; LE-NEXT: xxlxor 3, 3, 33
; LE-NEXT: xxleqv 33, 33, 33
; LE-NEXT: vslh 1, 1, 1
; LE-NEXT: xxland 33, 2, 33
; LE-NEXT: vmladduhm 1, 8, 1, 7
; LE-NEXT: xxlxor 33, 3, 33
; LE-NEXT: vperm 4, 1, 1, 4
; LE-NEXT: vslb 1, 4, 5
; LE-NEXT: vsrb 4, 4, 5
; LE-NEXT: xxlor 36, 36, 33
; LE-NEXT: xxland 37, 36, 0
; LE-NEXT: vslb 5, 5, 3
; LE-NEXT: vsrb 3, 4, 3
; LE-NEXT: xxland 0, 35, 0
; LE-NEXT: xxlor 35, 0, 37
; LE-NEXT: vsrb 2, 3, 2
; LE-NEXT: xxland 0, 34, 1
; LE-NEXT: xxland 34, 35, 1
; LE-NEXT: vaddubm 2, 2, 2
; LE-NEXT: xxlor 34, 0, 34
; LE-NEXT: vsrh 2, 2, 0
; LE-NEXT: blr
%a.ext = zext <8 x i16> %a to <8 x i32>
%b.ext = zext <8 x i16> %b to <8 x i32>
%clmul = call <8 x i32> @llvm.clmul.v8i32(<8 x i32> %a.ext, <8 x i32> %b.ext)
%res.ext = lshr <8 x i32> %clmul, splat (i32 16)
%res = trunc <8x i32> %res.ext to <8 x i16>
ret <8 x i16> %res
}
define <4 x i32> @clmulh_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
; BE-LABEL: clmulh_v4i32:
; BE: # %bb.0:
; BE-NEXT: stdu 1, -1456(1)
; BE-NEXT: li 3, 1264
; BE-NEXT: addi 4, 1, 1168
; BE-NEXT: vspltisw 4, 1
; BE-NEXT: stvx 20, 1, 3 # 16-byte Folded Spill
; BE-NEXT: vsldoi 13, 4, 4, 3
; BE-NEXT: li 3, 1280
; BE-NEXT: lis 5, -21846
; BE-NEXT: vspltisw 1, 2
; BE-NEXT: stvx 21, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1296
; BE-NEXT: lis 9, -13108
; BE-NEXT: ori 7, 5, 43690
; BE-NEXT: ori 5, 9, 52428
; BE-NEXT: vspltisw 8, 8
; BE-NEXT: stvx 22, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1312
; BE-NEXT: lis 6, 21845
; BE-NEXT: vslw 7, 8, 8
; BE-NEXT: stvx 23, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1328
; BE-NEXT: lis 10, 13107
; BE-NEXT: ori 8, 6, 21845
; BE-NEXT: ori 6, 10, 13107
; BE-NEXT: stvx 24, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1344
; BE-NEXT: lis 11, 3855
; BE-NEXT: stvx 25, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1360
; BE-NEXT: vsldoi 12, 8, 8, 2
; BE-NEXT: stvx 26, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1376
; BE-NEXT: stvx 27, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1392
; BE-NEXT: stvx 28, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1408
; BE-NEXT: vsldoi 20, 8, 8, 3
; BE-NEXT: stvx 29, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1424
; BE-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
; BE-NEXT: li 3, 1440
; BE-NEXT: vsldoi 10, 1, 1, 2
; BE-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
; BE-NEXT: addi 3, 1, 1184
; BE-NEXT: stvx 3, 0, 3
; BE-NEXT: lis 3, -3856
; BE-NEXT: vspltisw 3, 4
; BE-NEXT: ori 3, 3, 61680
; BE-NEXT: stvx 2, 0, 4
; BE-NEXT: ori 4, 11, 3855
; BE-NEXT: li 11, 1152
; BE-NEXT: vspltisb 2, -1
; BE-NEXT: vslw 14, 3, 3
; BE-NEXT: lwz 9, 1196(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: vsldoi 16, 3, 3, 1
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: vsldoi 11, 3, 3, 2
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: vsldoi 21, 3, 3, 3
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1228(1)
; BE-NEXT: lwz 9, 1192(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: vsldoi 22, 1, 1, 3
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: vslw 2, 2, 2
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: vsldoi 9, 4, 4, 2
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1224(1)
; BE-NEXT: lwz 9, 1188(1)
; BE-NEXT: vsldoi 5, 4, 4, 1
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: vsldoi 17, 1, 1, 1
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1220(1)
; BE-NEXT: lwz 9, 1184(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1216(1)
; BE-NEXT: lwz 9, 1180(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1212(1)
; BE-NEXT: lwz 9, 1176(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1208(1)
; BE-NEXT: lwz 9, 1172(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: stvx 4, 1, 11 # 16-byte Folded Spill
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1204(1)
; BE-NEXT: lwz 9, 1168(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1200(1)
; BE-NEXT: addi 9, 1, 1216
; BE-NEXT: lvx 15, 0, 9
; BE-NEXT: li 9, 864
; BE-NEXT: vand 6, 15, 1
; BE-NEXT: stvx 6, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 832
; BE-NEXT: vand 0, 15, 3
; BE-NEXT: vadduwm 3, 8, 8
; BE-NEXT: stvx 0, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_0@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_0@toc@l
; BE-NEXT: vand 30, 15, 3
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: addis 9, 2, .LCPI10_1@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_1@toc@l
; BE-NEXT: vand 28, 15, 3
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: addis 9, 2, .LCPI10_2@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_2@toc@l
; BE-NEXT: vand 26, 15, 3
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 800
; BE-NEXT: vand 27, 15, 14
; BE-NEXT: vand 14, 15, 7
; BE-NEXT: vand 7, 15, 3
; BE-NEXT: stvx 7, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_3@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_3@toc@l
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 768
; BE-NEXT: vand 19, 15, 8
; BE-NEXT: vand 8, 15, 3
; BE-NEXT: stvx 8, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_4@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_4@toc@l
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: addis 9, 2, .LCPI10_5@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_5@toc@l
; BE-NEXT: vand 23, 15, 3
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: addis 9, 2, .LCPI10_6@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_6@toc@l
; BE-NEXT: vand 31, 15, 3
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: addis 9, 2, .LCPI10_7@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_7@toc@l
; BE-NEXT: vand 18, 15, 10
; BE-NEXT: vand 10, 15, 12
; BE-NEXT: vand 12, 15, 3
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 1088
; BE-NEXT: vand 3, 15, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_8@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_8@toc@l
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 992
; BE-NEXT: vand 3, 15, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_9@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_9@toc@l
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 896
; BE-NEXT: vand 3, 15, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 928
; BE-NEXT: vand 3, 15, 13
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 960
; BE-NEXT: vand 3, 15, 22
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1024
; BE-NEXT: vand 3, 15, 21
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1056
; BE-NEXT: vand 3, 15, 20
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_10@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_10@toc@l
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 336
; BE-NEXT: vand 3, 15, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_11@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_11@toc@l
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 256
; BE-NEXT: vand 3, 15, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addis 9, 2, .LCPI10_12@toc@ha
; BE-NEXT: addi 9, 9, .LCPI10_12@toc@l
; BE-NEXT: lvx 3, 0, 9
; BE-NEXT: li 9, 160
; BE-NEXT: vand 3, 15, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 240
; BE-NEXT: vand 2, 15, 2
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: addi 9, 1, 1200
; BE-NEXT: lvx 2, 0, 9
; BE-NEXT: li 9, 1136
; BE-NEXT: vand 29, 15, 16
; BE-NEXT: vand 16, 15, 9
; BE-NEXT: vspltisw 9, -16
; BE-NEXT: vand 25, 15, 5
; BE-NEXT: vand 20, 15, 4
; BE-NEXT: vxor 4, 4, 4
; BE-NEXT: vrlw 5, 6, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1120
; BE-NEXT: vrlw 5, 20, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1104
; BE-NEXT: vrlw 5, 0, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1072
; BE-NEXT: vrlw 5, 19, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1040
; BE-NEXT: vrlw 5, 30, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1008
; BE-NEXT: vrlw 5, 28, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 976
; BE-NEXT: vrlw 5, 27, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 944
; BE-NEXT: vrlw 5, 26, 9
; BE-NEXT: vand 24, 15, 17
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 912
; BE-NEXT: vrlw 5, 25, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 880
; BE-NEXT: vrlw 5, 24, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 848
; BE-NEXT: vrlw 5, 29, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 816
; BE-NEXT: vrlw 5, 14, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 784
; BE-NEXT: vrlw 5, 7, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 752
; BE-NEXT: vrlw 5, 8, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 720
; BE-NEXT: vrlw 5, 23, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 688
; BE-NEXT: vrlw 5, 31, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 656
; BE-NEXT: vrlw 5, 16, 9
; BE-NEXT: vand 11, 15, 11
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 608
; BE-NEXT: vrlw 5, 18, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 576
; BE-NEXT: vrlw 5, 11, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 544
; BE-NEXT: vrlw 5, 10, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 512
; BE-NEXT: vrlw 5, 12, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1088
; BE-NEXT: vmr 22, 30
; BE-NEXT: vmr 30, 14
; BE-NEXT: lvx 14, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 480
; BE-NEXT: vrlw 5, 14, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 992
; BE-NEXT: lvx 13, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 448
; BE-NEXT: vrlw 5, 13, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 896
; BE-NEXT: vmr 15, 12
; BE-NEXT: lvx 12, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 416
; BE-NEXT: vrlw 5, 12, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 928
; BE-NEXT: vmr 17, 11
; BE-NEXT: lvx 11, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 384
; BE-NEXT: vrlw 5, 11, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 960
; BE-NEXT: vmr 21, 19
; BE-NEXT: vmr 19, 16
; BE-NEXT: vmr 16, 10
; BE-NEXT: lvx 10, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 352
; BE-NEXT: vrlw 5, 10, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1024
; BE-NEXT: lvx 8, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 304
; BE-NEXT: vrlw 5, 8, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1056
; BE-NEXT: lvx 7, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 272
; BE-NEXT: vrlw 5, 7, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 336
; BE-NEXT: lvx 6, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 208
; BE-NEXT: vrlw 5, 6, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 256
; BE-NEXT: lvx 1, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 176
; BE-NEXT: vrlw 5, 1, 9
; BE-NEXT: vmsumuhm 3, 2, 5, 4
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 160
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 128
; BE-NEXT: vrlw 5, 3, 9
; BE-NEXT: vmsumuhm 5, 2, 5, 4
; BE-NEXT: stvx 5, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 240
; BE-NEXT: lvx 5, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 64
; BE-NEXT: vrlw 0, 5, 9
; BE-NEXT: vmsumuhm 4, 2, 0, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 864
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 96
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 80
; BE-NEXT: vmulouh 4, 2, 20
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 832
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 112
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 144
; BE-NEXT: vmulouh 4, 2, 21
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 192
; BE-NEXT: vmulouh 4, 2, 22
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 224
; BE-NEXT: vmulouh 4, 2, 28
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 288
; BE-NEXT: vmulouh 4, 2, 27
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 320
; BE-NEXT: vmulouh 4, 2, 26
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 368
; BE-NEXT: vmulouh 4, 2, 25
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 400
; BE-NEXT: vmulouh 4, 2, 24
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 432
; BE-NEXT: vmulouh 4, 2, 29
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 464
; BE-NEXT: vmulouh 4, 2, 30
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 800
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 496
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 768
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 528
; BE-NEXT: vmulouh 4, 2, 4
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 560
; BE-NEXT: vmulouh 4, 2, 23
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 592
; BE-NEXT: vmulouh 4, 2, 31
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 624
; BE-NEXT: vmulouh 4, 2, 19
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 640
; BE-NEXT: vmulouh 4, 2, 18
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 672
; BE-NEXT: vmulouh 4, 2, 17
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 704
; BE-NEXT: vmulouh 4, 2, 16
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 736
; BE-NEXT: vmulouh 4, 2, 15
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 768
; BE-NEXT: vmulouh 4, 2, 14
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 800
; BE-NEXT: vmulouh 4, 2, 13
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 832
; BE-NEXT: vmulouh 4, 2, 12
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 864
; BE-NEXT: vmulouh 4, 2, 11
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 896
; BE-NEXT: vmulouh 4, 2, 10
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 928
; BE-NEXT: vmulouh 4, 2, 8
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 960
; BE-NEXT: vmulouh 4, 2, 7
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 992
; BE-NEXT: vmulouh 4, 2, 6
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1024
; BE-NEXT: vmulouh 4, 2, 1
; BE-NEXT: stvx 4, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1056
; BE-NEXT: vmulouh 3, 2, 3
; BE-NEXT: stvx 3, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1088
; BE-NEXT: vmulouh 2, 2, 5
; BE-NEXT: stvx 2, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 1136
; BE-NEXT: lvx 2, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1120
; BE-NEXT: vslw 3, 2, 9
; BE-NEXT: lvx 2, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1104
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1072
; BE-NEXT: lvx 5, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1040
; BE-NEXT: vslw 2, 2, 9
; BE-NEXT: lvx 0, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1008
; BE-NEXT: lvx 1, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 976
; BE-NEXT: lvx 6, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 944
; BE-NEXT: vslw 4, 4, 9
; BE-NEXT: lvx 7, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 912
; BE-NEXT: lvx 8, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 880
; BE-NEXT: lvx 10, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 848
; BE-NEXT: vslw 5, 5, 9
; BE-NEXT: lvx 11, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 816
; BE-NEXT: lvx 12, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 784
; BE-NEXT: vslw 0, 0, 9
; BE-NEXT: lvx 13, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 752
; BE-NEXT: lvx 14, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 720
; BE-NEXT: lvx 15, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 688
; BE-NEXT: vslw 1, 1, 9
; BE-NEXT: lvx 16, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 656
; BE-NEXT: lvx 17, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 608
; BE-NEXT: lvx 18, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 576
; BE-NEXT: vslw 6, 6, 9
; BE-NEXT: lvx 19, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 544
; BE-NEXT: lvx 31, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 512
; BE-NEXT: vslw 7, 7, 9
; BE-NEXT: lvx 30, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 480
; BE-NEXT: lvx 29, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 448
; BE-NEXT: lvx 28, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 416
; BE-NEXT: vslw 8, 8, 9
; BE-NEXT: lvx 27, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 384
; BE-NEXT: lvx 26, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 352
; BE-NEXT: lvx 25, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 304
; BE-NEXT: vslw 10, 10, 9
; BE-NEXT: lvx 24, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 272
; BE-NEXT: lvx 23, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 208
; BE-NEXT: vslw 11, 11, 9
; BE-NEXT: lvx 22, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 176
; BE-NEXT: lvx 21, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 128
; BE-NEXT: lvx 20, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1136
; BE-NEXT: vslw 12, 12, 9
; BE-NEXT: vslw 20, 20, 9
; BE-NEXT: stvx 20, 1, 9 # 16-byte Folded Spill
; BE-NEXT: li 9, 64
; BE-NEXT: lvx 20, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 96
; BE-NEXT: vslw 13, 13, 9
; BE-NEXT: vslw 14, 14, 9
; BE-NEXT: vslw 15, 15, 9
; BE-NEXT: vslw 16, 16, 9
; BE-NEXT: vslw 17, 17, 9
; BE-NEXT: vslw 18, 18, 9
; BE-NEXT: vslw 19, 19, 9
; BE-NEXT: vslw 31, 31, 9
; BE-NEXT: vslw 30, 30, 9
; BE-NEXT: vslw 29, 29, 9
; BE-NEXT: vslw 28, 28, 9
; BE-NEXT: vslw 27, 27, 9
; BE-NEXT: vslw 26, 26, 9
; BE-NEXT: vslw 25, 25, 9
; BE-NEXT: vslw 24, 24, 9
; BE-NEXT: vslw 23, 23, 9
; BE-NEXT: vslw 22, 22, 9
; BE-NEXT: vslw 21, 21, 9
; BE-NEXT: vslw 20, 20, 9
; BE-NEXT: lvx 9, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 80
; BE-NEXT: vadduwm 3, 9, 3
; BE-NEXT: lvx 9, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 112
; BE-NEXT: vadduwm 2, 9, 2
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 144
; BE-NEXT: vadduwm 3, 3, 4
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 192
; BE-NEXT: vadduwm 3, 3, 5
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 224
; BE-NEXT: vadduwm 3, 3, 0
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 288
; BE-NEXT: vadduwm 3, 3, 1
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 320
; BE-NEXT: vadduwm 3, 3, 6
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 368
; BE-NEXT: vadduwm 3, 3, 7
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 400
; BE-NEXT: vadduwm 3, 3, 8
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 432
; BE-NEXT: vadduwm 3, 3, 10
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 464
; BE-NEXT: vadduwm 3, 3, 11
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 496
; BE-NEXT: vadduwm 3, 3, 12
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 528
; BE-NEXT: vadduwm 3, 3, 13
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 560
; BE-NEXT: vadduwm 3, 3, 14
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 592
; BE-NEXT: vadduwm 3, 3, 15
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 624
; BE-NEXT: vadduwm 3, 3, 16
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 640
; BE-NEXT: vadduwm 3, 3, 17
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 672
; BE-NEXT: vadduwm 3, 3, 18
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 704
; BE-NEXT: vadduwm 3, 3, 19
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 736
; BE-NEXT: vadduwm 3, 3, 31
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 768
; BE-NEXT: vadduwm 3, 3, 30
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 800
; BE-NEXT: vadduwm 3, 3, 29
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 832
; BE-NEXT: vadduwm 3, 3, 28
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 864
; BE-NEXT: vadduwm 3, 3, 27
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 896
; BE-NEXT: vadduwm 3, 3, 26
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 928
; BE-NEXT: vadduwm 3, 3, 25
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 960
; BE-NEXT: vadduwm 3, 3, 24
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 992
; BE-NEXT: vadduwm 3, 3, 23
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1024
; BE-NEXT: vadduwm 3, 3, 22
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1056
; BE-NEXT: vadduwm 3, 3, 21
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1136
; BE-NEXT: lvx 4, 1, 9 # 16-byte Folded Reload
; BE-NEXT: li 9, 1088
; BE-NEXT: vadduwm 3, 3, 4
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: lvx 3, 1, 9 # 16-byte Folded Reload
; BE-NEXT: addi 9, 1, 1232
; BE-NEXT: vadduwm 3, 3, 20
; BE-NEXT: vxor 2, 2, 3
; BE-NEXT: stvx 2, 0, 9
; BE-NEXT: lwz 9, 1244(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1260(1)
; BE-NEXT: lwz 9, 1240(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1256(1)
; BE-NEXT: lwz 9, 1236(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 10, 10, 7
; BE-NEXT: and 9, 9, 8
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 2
; BE-NEXT: srwi 9, 9, 2
; BE-NEXT: and 10, 10, 5
; BE-NEXT: and 9, 9, 6
; BE-NEXT: or 9, 9, 10
; BE-NEXT: slwi 10, 9, 4
; BE-NEXT: srwi 9, 9, 4
; BE-NEXT: and 10, 10, 3
; BE-NEXT: and 9, 9, 4
; BE-NEXT: or 9, 9, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: rldicl 9, 10, 0, 32
; BE-NEXT: stw 9, 1252(1)
; BE-NEXT: lwz 9, 1232(1)
; BE-NEXT: slwi 10, 9, 1
; BE-NEXT: srwi 9, 9, 1
; BE-NEXT: and 7, 10, 7
; BE-NEXT: and 8, 9, 8
; BE-NEXT: or 7, 8, 7
; BE-NEXT: slwi 8, 7, 2
; BE-NEXT: srwi 7, 7, 2
; BE-NEXT: and 5, 8, 5
; BE-NEXT: and 6, 7, 6
; BE-NEXT: or 5, 6, 5
; BE-NEXT: slwi 6, 5, 4
; BE-NEXT: srwi 5, 5, 4
; BE-NEXT: and 3, 6, 3
; BE-NEXT: and 4, 5, 4
; BE-NEXT: or 3, 4, 3
; BE-NEXT: rotlwi 4, 3, 24
; BE-NEXT: rlwimi 4, 3, 8, 8, 15
; BE-NEXT: rlwimi 4, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 4, 0, 32
; BE-NEXT: stw 3, 1248(1)
; BE-NEXT: addi 3, 1, 1248
; BE-NEXT: lvx 2, 0, 3
; BE-NEXT: li 3, 1152
; BE-NEXT: lvx 3, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1440
; BE-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1424
; BE-NEXT: vsrw 2, 2, 3
; BE-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1408
; BE-NEXT: lvx 29, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1392
; BE-NEXT: lvx 28, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1376
; BE-NEXT: lvx 27, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1360
; BE-NEXT: lvx 26, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1344
; BE-NEXT: lvx 25, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1328
; BE-NEXT: lvx 24, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1312
; BE-NEXT: lvx 23, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1296
; BE-NEXT: lvx 22, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1280
; BE-NEXT: lvx 21, 1, 3 # 16-byte Folded Reload
; BE-NEXT: li 3, 1264
; BE-NEXT: lvx 20, 1, 3 # 16-byte Folded Reload
; BE-NEXT: addi 1, 1, 1456
; BE-NEXT: blr
;
; LE-LABEL: clmulh_v4i32:
; LE: # %bb.0:
; LE-NEXT: xxsldwi 0, 34, 34, 1
; LE-NEXT: lis 5, -13108
; LE-NEXT: lis 9, 13107
; LE-NEXT: xxswapd 1, 34
; LE-NEXT: lis 4, 21845
; LE-NEXT: lis 10, -3856
; LE-NEXT: lis 3, -21846
; LE-NEXT: xxsldwi 2, 35, 35, 1
; LE-NEXT: ori 6, 5, 52428
; LE-NEXT: ori 5, 9, 13107
; LE-NEXT: mffprwz 9, 0
; LE-NEXT: ori 7, 4, 21845
; LE-NEXT: ori 4, 10, 61680
; LE-NEXT: mffprwz 10, 1
; LE-NEXT: ori 8, 3, 43690
; LE-NEXT: lis 11, 3855
; LE-NEXT: ori 3, 11, 3855
; LE-NEXT: mffprwz 11, 2
; LE-NEXT: xxswapd 3, 35
; LE-NEXT: mffprwz 12, 3
; LE-NEXT: xxsldwi 4, 35, 35, 3
; LE-NEXT: xxsldwi 5, 34, 34, 3
; LE-NEXT: vspltisw 4, 2
; LE-NEXT: vspltisw 0, 4
; LE-NEXT: vspltisw 5, 8
; LE-NEXT: slwi 0, 9, 1
; LE-NEXT: srwi 9, 9, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: vsldoi 9, 4, 4, 1
; LE-NEXT: vsldoi 10, 0, 0, 1
; LE-NEXT: vsldoi 6, 4, 4, 2
; LE-NEXT: vsldoi 7, 0, 0, 2
; LE-NEXT: vsldoi 8, 5, 5, 2
; LE-NEXT: or 9, 9, 0
; LE-NEXT: slwi 0, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 0
; LE-NEXT: slwi 0, 11, 1
; LE-NEXT: srwi 11, 11, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 11, 11, 7
; LE-NEXT: or 11, 11, 0
; LE-NEXT: slwi 0, 12, 1
; LE-NEXT: srwi 12, 12, 1
; LE-NEXT: and 0, 0, 8
; LE-NEXT: and 12, 12, 7
; LE-NEXT: or 12, 12, 0
; LE-NEXT: slwi 0, 9, 2
; LE-NEXT: srwi 9, 9, 2
; LE-NEXT: and 0, 0, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 0
; LE-NEXT: slwi 0, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 0, 0, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 0
; LE-NEXT: slwi 0, 11, 2
; LE-NEXT: srwi 11, 11, 2
; LE-NEXT: and 0, 0, 6
; LE-NEXT: and 11, 11, 5
; LE-NEXT: or 11, 11, 0
; LE-NEXT: slwi 0, 9, 4
; LE-NEXT: srwi 9, 9, 4
; LE-NEXT: and 0, 0, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 0
; LE-NEXT: slwi 0, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 0, 0, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 0
; LE-NEXT: slwi 0, 11, 4
; LE-NEXT: srwi 11, 11, 4
; LE-NEXT: and 0, 0, 4
; LE-NEXT: and 11, 11, 3
; LE-NEXT: or 11, 11, 0
; LE-NEXT: rotlwi 0, 9, 24
; LE-NEXT: rlwimi 0, 9, 8, 8, 15
; LE-NEXT: rlwimi 0, 9, 8, 24, 31
; LE-NEXT: rotlwi 9, 10, 24
; LE-NEXT: rlwimi 9, 10, 8, 8, 15
; LE-NEXT: rlwimi 9, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 11, 24
; LE-NEXT: rlwimi 10, 11, 8, 8, 15
; LE-NEXT: rlwimi 10, 11, 8, 24, 31
; LE-NEXT: rldicl 11, 0, 0, 32
; LE-NEXT: rldicl 0, 9, 0, 32
; LE-NEXT: mffprwz 9, 5
; LE-NEXT: rldicl 10, 10, 0, 32
; LE-NEXT: rldimi 0, 11, 32, 0
; LE-NEXT: slwi 11, 12, 2
; LE-NEXT: srwi 12, 12, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 12, 12, 5
; LE-NEXT: mtfprd 1, 0
; LE-NEXT: or 11, 12, 11
; LE-NEXT: slwi 12, 11, 4
; LE-NEXT: srwi 11, 11, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 11, 11, 3
; LE-NEXT: or 11, 11, 12
; LE-NEXT: rotlwi 12, 11, 24
; LE-NEXT: rlwimi 12, 11, 8, 8, 15
; LE-NEXT: rlwimi 12, 11, 8, 24, 31
; LE-NEXT: rldicl 11, 12, 0, 32
; LE-NEXT: rldimi 11, 10, 32, 0
; LE-NEXT: mffprwz 10, 4
; LE-NEXT: mtfprd 0, 11
; LE-NEXT: mfvsrwz 11, 35
; LE-NEXT: slwi 12, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 12
; LE-NEXT: rotlwi 12, 10, 24
; LE-NEXT: rlwimi 12, 10, 8, 8, 15
; LE-NEXT: rlwimi 12, 10, 8, 24, 31
; LE-NEXT: slwi 10, 11, 1
; LE-NEXT: srwi 11, 11, 1
; LE-NEXT: rldicl 12, 12, 0, 32
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 11, 11, 7
; LE-NEXT: or 10, 11, 10
; LE-NEXT: slwi 11, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 11
; LE-NEXT: slwi 11, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 11
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: mfvsrwz 10, 34
; LE-NEXT: rldicl 11, 11, 0, 32
; LE-NEXT: rldimi 11, 12, 32, 0
; LE-NEXT: mtfprd 2, 11
; LE-NEXT: slwi 11, 9, 1
; LE-NEXT: srwi 9, 9, 1
; LE-NEXT: and 11, 11, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 11
; LE-NEXT: slwi 11, 9, 2
; LE-NEXT: srwi 9, 9, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 11
; LE-NEXT: slwi 11, 9, 4
; LE-NEXT: srwi 9, 9, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 11
; LE-NEXT: rotlwi 11, 9, 24
; LE-NEXT: rlwimi 11, 9, 8, 8, 15
; LE-NEXT: rlwimi 11, 9, 8, 24, 31
; LE-NEXT: rldicl 9, 11, 0, 32
; LE-NEXT: slwi 11, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 11, 11, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 11
; LE-NEXT: slwi 11, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 11
; LE-NEXT: slwi 11, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 11
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rldicl 10, 11, 0, 32
; LE-NEXT: addis 11, 2, .LCPI10_12@toc@ha
; LE-NEXT: rldimi 10, 9, 32, 0
; LE-NEXT: addis 9, 2, .LCPI10_0@toc@ha
; LE-NEXT: addi 9, 9, .LCPI10_0@toc@l
; LE-NEXT: vspltisw 2, 1
; LE-NEXT: vsldoi 11, 2, 2, 1
; LE-NEXT: vsldoi 1, 2, 2, 2
; LE-NEXT: xxmrghd 0, 2, 0
; LE-NEXT: mtfprd 2, 10
; LE-NEXT: xxland 44, 0, 36
; LE-NEXT: xxland 45, 0, 34
; LE-NEXT: xxland 43, 0, 43
; LE-NEXT: xxland 41, 0, 41
; LE-NEXT: addis 10, 2, .LCPI10_11@toc@ha
; LE-NEXT: addi 10, 10, .LCPI10_11@toc@l
; LE-NEXT: lxvd2x 3, 0, 10
; LE-NEXT: xxmrghd 35, 2, 1
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_1@toc@ha
; LE-NEXT: vmuluwm 12, 3, 12
; LE-NEXT: vmuluwm 13, 3, 13
; LE-NEXT: addi 9, 9, .LCPI10_1@toc@l
; LE-NEXT: vmuluwm 11, 3, 11
; LE-NEXT: vmuluwm 9, 3, 9
; LE-NEXT: xxlxor 1, 45, 44
; LE-NEXT: xxland 44, 0, 32
; LE-NEXT: vmuluwm 12, 3, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxland 44, 0, 37
; LE-NEXT: vmuluwm 12, 3, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: vadduwm 12, 5, 5
; LE-NEXT: xxland 44, 0, 44
; LE-NEXT: vmuluwm 12, 3, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxland 44, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_2@toc@ha
; LE-NEXT: vmuluwm 12, 3, 12
; LE-NEXT: addi 9, 9, .LCPI10_2@toc@l
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: vslw 12, 0, 0
; LE-NEXT: xxland 44, 0, 44
; LE-NEXT: vmuluwm 12, 3, 12
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxland 44, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_3@toc@ha
; LE-NEXT: vmuluwm 12, 3, 12
; LE-NEXT: addi 9, 9, .LCPI10_3@toc@l
; LE-NEXT: xxlxor 1, 1, 44
; LE-NEXT: xxlxor 1, 1, 43
; LE-NEXT: xxlxor 1, 1, 41
; LE-NEXT: xxland 41, 0, 42
; LE-NEXT: vslw 10, 5, 5
; LE-NEXT: vmuluwm 9, 3, 9
; LE-NEXT: xxlxor 1, 1, 41
; LE-NEXT: vsldoi 11, 2, 2, 3
; LE-NEXT: vsldoi 5, 5, 5, 3
; LE-NEXT: vsldoi 9, 4, 4, 3
; LE-NEXT: xxland 36, 0, 42
; LE-NEXT: vmuluwm 4, 3, 4
; LE-NEXT: xxlxor 1, 1, 36
; LE-NEXT: vsldoi 4, 0, 0, 3
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_4@toc@ha
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI10_4@toc@l
; LE-NEXT: xxland 36, 0, 36
; LE-NEXT: vmuluwm 4, 3, 4
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_5@toc@ha
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI10_5@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_6@toc@ha
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI10_6@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_7@toc@ha
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI10_7@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 33
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 38
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 39
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 40
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_8@toc@ha
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI10_8@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_9@toc@ha
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI10_9@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI10_10@toc@ha
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: addi 9, 9, .LCPI10_10@toc@l
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addi 9, 11, .LCPI10_12@toc@l
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: lxvd2x 4, 0, 9
; LE-NEXT: xxland 33, 0, 4
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 43
; LE-NEXT: vmuluwm 1, 3, 1
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 41
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: xxlxor 1, 1, 32
; LE-NEXT: xxland 32, 0, 3
; LE-NEXT: xxlxor 1, 1, 36
; LE-NEXT: xxland 36, 0, 37
; LE-NEXT: xxland 37, 0, 2
; LE-NEXT: vmuluwm 0, 3, 0
; LE-NEXT: vmuluwm 4, 3, 4
; LE-NEXT: vmuluwm 5, 3, 5
; LE-NEXT: xxlxor 1, 1, 36
; LE-NEXT: xxleqv 36, 36, 36
; LE-NEXT: vslw 4, 4, 4
; LE-NEXT: xxland 36, 0, 36
; LE-NEXT: xxlxor 0, 1, 37
; LE-NEXT: vmuluwm 3, 3, 4
; LE-NEXT: xxlxor 0, 0, 32
; LE-NEXT: xxlxor 0, 0, 33
; LE-NEXT: xxlxor 0, 0, 35
; LE-NEXT: xxsldwi 1, 0, 0, 1
; LE-NEXT: xxswapd 2, 0
; LE-NEXT: xxsldwi 3, 0, 0, 3
; LE-NEXT: mffprwz 9, 1
; LE-NEXT: mffprwz 10, 2
; LE-NEXT: mffprwz 11, 3
; LE-NEXT: slwi 12, 9, 1
; LE-NEXT: srwi 9, 9, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 12
; LE-NEXT: slwi 12, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 11, 1
; LE-NEXT: srwi 11, 11, 1
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 11, 11, 7
; LE-NEXT: or 11, 11, 12
; LE-NEXT: slwi 12, 9, 2
; LE-NEXT: srwi 9, 9, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 12
; LE-NEXT: slwi 12, 10, 2
; LE-NEXT: srwi 10, 10, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 11, 2
; LE-NEXT: srwi 11, 11, 2
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 11, 11, 5
; LE-NEXT: or 11, 11, 12
; LE-NEXT: slwi 12, 9, 4
; LE-NEXT: srwi 9, 9, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 12
; LE-NEXT: slwi 12, 10, 4
; LE-NEXT: srwi 10, 10, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 10, 10, 12
; LE-NEXT: slwi 12, 11, 4
; LE-NEXT: srwi 11, 11, 4
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 11, 11, 3
; LE-NEXT: or 11, 11, 12
; LE-NEXT: rotlwi 12, 9, 24
; LE-NEXT: rlwimi 12, 9, 8, 8, 15
; LE-NEXT: rlwimi 12, 9, 8, 24, 31
; LE-NEXT: rotlwi 9, 10, 24
; LE-NEXT: rlwimi 9, 10, 8, 8, 15
; LE-NEXT: rlwimi 9, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 11, 24
; LE-NEXT: rldicl 9, 9, 0, 32
; LE-NEXT: rlwimi 10, 11, 8, 8, 15
; LE-NEXT: rlwimi 10, 11, 8, 24, 31
; LE-NEXT: rldicl 11, 12, 0, 32
; LE-NEXT: rldimi 9, 11, 32, 0
; LE-NEXT: mtfprd 1, 9
; LE-NEXT: rldicl 9, 10, 0, 32
; LE-NEXT: mffprwz 10, 0
; LE-NEXT: slwi 11, 10, 1
; LE-NEXT: srwi 10, 10, 1
; LE-NEXT: and 8, 11, 8
; LE-NEXT: and 7, 10, 7
; LE-NEXT: or 7, 7, 8
; LE-NEXT: slwi 8, 7, 2
; LE-NEXT: srwi 7, 7, 2
; LE-NEXT: and 6, 8, 6
; LE-NEXT: and 5, 7, 5
; LE-NEXT: or 5, 5, 6
; LE-NEXT: slwi 6, 5, 4
; LE-NEXT: srwi 5, 5, 4
; LE-NEXT: and 4, 6, 4
; LE-NEXT: and 3, 5, 3
; LE-NEXT: or 3, 3, 4
; LE-NEXT: rotlwi 4, 3, 24
; LE-NEXT: rlwimi 4, 3, 8, 8, 15
; LE-NEXT: rlwimi 4, 3, 8, 24, 31
; LE-NEXT: rldicl 3, 4, 0, 32
; LE-NEXT: rldimi 3, 9, 32, 0
; LE-NEXT: mtfprd 0, 3
; LE-NEXT: xxmrghd 35, 0, 1
; LE-NEXT: vsrw 2, 3, 2
; LE-NEXT: blr
%a.ext = zext <4 x i32> %a to <4 x i64>
%b.ext = zext <4 x i32> %b to <4 x i64>
%clmul = call <4 x i64> @llvm.clmul.v4i64(<4 x i64> %a.ext, <4 x i64> %b.ext)
%res.ext = lshr <4 x i64> %clmul, splat (i64 32)
%res = trunc <4 x i64> %res.ext to <4 x i32>
ret <4 x i32> %res
}
define <2 x i64> @clmulh_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
; BE-LABEL: clmulh_v2i64:
; BE: # %bb.0:
; BE-NEXT: stdu 1, -1040(1)
; BE-NEXT: lis 7, -21846
; BE-NEXT: lis 8, 21845
; BE-NEXT: std 26, 992(1) # 8-byte Folded Spill
; BE-NEXT: ori 7, 7, 43690
; BE-NEXT: ori 8, 8, 21845
; BE-NEXT: std 27, 1000(1) # 8-byte Folded Spill
; BE-NEXT: sldi 7, 7, 32
; BE-NEXT: sldi 8, 8, 32
; BE-NEXT: lis 9, -13108
; BE-NEXT: lis 10, 13107
; BE-NEXT: std 30, 1024(1) # 8-byte Folded Spill
; BE-NEXT: oris 7, 7, 43690
; BE-NEXT: oris 8, 8, 21845
; BE-NEXT: std 28, 1008(1) # 8-byte Folded Spill
; BE-NEXT: sldi 0, 3, 1
; BE-NEXT: rldicl 3, 3, 63, 1
; BE-NEXT: ori 9, 9, 52428
; BE-NEXT: ori 10, 10, 13107
; BE-NEXT: std 29, 1016(1) # 8-byte Folded Spill
; BE-NEXT: ori 27, 7, 43690
; BE-NEXT: ori 26, 8, 21845
; BE-NEXT: std 2, 888(1) # 8-byte Folded Spill
; BE-NEXT: sldi 9, 9, 32
; BE-NEXT: sldi 10, 10, 32
; BE-NEXT: and 7, 0, 27
; BE-NEXT: and 3, 3, 26
; BE-NEXT: std 31, 1032(1) # 8-byte Folded Spill
; BE-NEXT: lis 11, -3856
; BE-NEXT: lis 12, 3855
; BE-NEXT: std 15, 904(1) # 8-byte Folded Spill
; BE-NEXT: sldi 30, 5, 1
; BE-NEXT: rldicl 5, 5, 63, 1
; BE-NEXT: oris 9, 9, 52428
; BE-NEXT: oris 10, 10, 13107
; BE-NEXT: std 14, 896(1) # 8-byte Folded Spill
; BE-NEXT: or 3, 3, 7
; BE-NEXT: ori 11, 11, 61680
; BE-NEXT: std 17, 920(1) # 8-byte Folded Spill
; BE-NEXT: ori 12, 12, 3855
; BE-NEXT: ori 29, 9, 52428
; BE-NEXT: ori 28, 10, 13107
; BE-NEXT: and 8, 30, 27
; BE-NEXT: std 16, 912(1) # 8-byte Folded Spill
; BE-NEXT: and 5, 5, 26
; BE-NEXT: sldi 7, 3, 2
; BE-NEXT: std 19, 936(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: sldi 11, 11, 32
; BE-NEXT: sldi 12, 12, 32
; BE-NEXT: or 5, 5, 8
; BE-NEXT: std 18, 928(1) # 8-byte Folded Spill
; BE-NEXT: and 7, 7, 29
; BE-NEXT: and 3, 3, 28
; BE-NEXT: std 21, 952(1) # 8-byte Folded Spill
; BE-NEXT: oris 11, 11, 61680
; BE-NEXT: oris 12, 12, 3855
; BE-NEXT: sldi 8, 5, 2
; BE-NEXT: rldicl 5, 5, 62, 2
; BE-NEXT: std 20, 944(1) # 8-byte Folded Spill
; BE-NEXT: or 3, 3, 7
; BE-NEXT: ori 9, 11, 61680
; BE-NEXT: std 23, 968(1) # 8-byte Folded Spill
; BE-NEXT: ori 10, 12, 3855
; BE-NEXT: and 8, 8, 29
; BE-NEXT: and 5, 5, 28
; BE-NEXT: sldi 7, 3, 4
; BE-NEXT: std 22, 960(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: or 5, 5, 8
; BE-NEXT: std 25, 984(1) # 8-byte Folded Spill
; BE-NEXT: and 7, 7, 9
; BE-NEXT: and 3, 3, 10
; BE-NEXT: sldi 8, 5, 4
; BE-NEXT: rldicl 5, 5, 60, 4
; BE-NEXT: std 24, 976(1) # 8-byte Folded Spill
; BE-NEXT: or 3, 3, 7
; BE-NEXT: and 8, 8, 9
; BE-NEXT: std 27, 352(1) # 8-byte Folded Spill
; BE-NEXT: and 5, 5, 10
; BE-NEXT: rotlwi 7, 3, 24
; BE-NEXT: or 5, 5, 8
; BE-NEXT: rlwimi 7, 3, 8, 8, 15
; BE-NEXT: std 26, 344(1) # 8-byte Folded Spill
; BE-NEXT: mr 30, 9
; BE-NEXT: std 29, 368(1) # 8-byte Folded Spill
; BE-NEXT: rotlwi 8, 5, 24
; BE-NEXT: rldicl 9, 3, 32, 32
; BE-NEXT: rlwimi 7, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 5, 32, 32
; BE-NEXT: std 28, 360(1) # 8-byte Folded Spill
; BE-NEXT: rlwimi 8, 5, 8, 8, 15
; BE-NEXT: std 30, 376(1) # 8-byte Folded Spill
; BE-NEXT: rotlwi 11, 3, 24
; BE-NEXT: mr 0, 10
; BE-NEXT: rotlwi 10, 9, 24
; BE-NEXT: std 0, 384(1) # 8-byte Folded Spill
; BE-NEXT: rlwimi 11, 3, 8, 8, 15
; BE-NEXT: rlwimi 8, 5, 8, 24, 31
; BE-NEXT: rlwimi 10, 9, 8, 8, 15
; BE-NEXT: rlwimi 11, 3, 8, 24, 31
; BE-NEXT: sldi 5, 8, 32
; BE-NEXT: rlwimi 10, 9, 8, 24, 31
; BE-NEXT: sldi 3, 7, 32
; BE-NEXT: or 11, 5, 11
; BE-NEXT: or 12, 3, 10
; BE-NEXT: rlwinm 3, 11, 0, 30, 30
; BE-NEXT: rlwinm 5, 11, 0, 29, 29
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 880(1) # 8-byte Folded Spill
; BE-NEXT: clrldi 3, 11, 63
; BE-NEXT: mulld 2, 12, 3
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 872(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 28, 28
; BE-NEXT: rlwinm 5, 11, 0, 27, 27
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 856(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 864(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 26, 26
; BE-NEXT: rlwinm 5, 11, 0, 25, 25
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 840(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 848(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 24, 24
; BE-NEXT: rlwinm 5, 11, 0, 23, 23
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 824(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 832(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 22, 22
; BE-NEXT: rlwinm 5, 11, 0, 21, 21
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 808(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 816(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 20, 20
; BE-NEXT: rlwinm 5, 11, 0, 19, 19
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 792(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 800(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 18, 18
; BE-NEXT: rlwinm 5, 11, 0, 17, 17
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 776(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 784(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 16, 16
; BE-NEXT: rlwinm 5, 11, 0, 15, 15
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 760(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 768(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 14, 14
; BE-NEXT: rlwinm 5, 11, 0, 13, 13
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 744(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 752(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 12, 12
; BE-NEXT: rlwinm 5, 11, 0, 11, 11
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 728(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 736(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 10, 10
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 720(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 9, 9
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 712(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 8, 8
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 704(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 7, 7
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 696(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 6, 6
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 688(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 5, 5
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 680(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 4, 4
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 672(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 3, 3
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 664(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 2, 2
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 656(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 1, 1
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 648(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 3, 11, 0, 0, 0
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 640(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 32, 32
; BE-NEXT: rldicl 3, 3, 32, 31
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 632(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 31, 33
; BE-NEXT: rldicl 3, 3, 33, 30
; BE-NEXT: rldicl 5, 11, 30, 34
; BE-NEXT: rldicl 5, 5, 34, 29
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 616(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 624(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 29, 35
; BE-NEXT: rldicl 3, 3, 35, 28
; BE-NEXT: rldicl 5, 11, 28, 36
; BE-NEXT: rldicl 5, 5, 36, 27
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 600(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 608(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 27, 37
; BE-NEXT: rldicl 3, 3, 37, 26
; BE-NEXT: rldicl 5, 11, 26, 38
; BE-NEXT: rldicl 5, 5, 38, 25
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 584(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 592(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 25, 39
; BE-NEXT: rldicl 3, 3, 39, 24
; BE-NEXT: rldicl 5, 11, 24, 40
; BE-NEXT: rldicl 5, 5, 40, 23
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 568(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 576(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 23, 41
; BE-NEXT: rldicl 3, 3, 41, 22
; BE-NEXT: rldicl 5, 11, 22, 42
; BE-NEXT: rldicl 5, 5, 42, 21
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 552(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 560(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 21, 43
; BE-NEXT: rldicl 3, 3, 43, 20
; BE-NEXT: rldicl 5, 11, 20, 44
; BE-NEXT: rldicl 5, 5, 44, 19
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 536(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 544(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 19, 45
; BE-NEXT: rldicl 3, 3, 45, 18
; BE-NEXT: rldicl 5, 11, 18, 46
; BE-NEXT: rldicl 5, 5, 46, 17
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 520(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 528(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 17, 47
; BE-NEXT: rldicl 3, 3, 47, 16
; BE-NEXT: rldicl 5, 11, 16, 48
; BE-NEXT: rldicl 5, 5, 48, 15
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 504(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 512(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 15, 49
; BE-NEXT: rldicl 3, 3, 49, 14
; BE-NEXT: rldicl 5, 11, 14, 50
; BE-NEXT: rldicl 5, 5, 50, 13
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 488(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 496(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 13, 51
; BE-NEXT: rldicl 3, 3, 51, 12
; BE-NEXT: rldicl 5, 11, 12, 52
; BE-NEXT: rldicl 5, 5, 52, 11
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 472(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 480(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 11, 53
; BE-NEXT: rldicl 3, 3, 53, 10
; BE-NEXT: rldicl 5, 11, 10, 54
; BE-NEXT: rldicl 5, 5, 54, 9
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 456(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 464(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 9, 55
; BE-NEXT: rldicl 3, 3, 55, 8
; BE-NEXT: rldicl 5, 11, 8, 56
; BE-NEXT: rldicl 5, 5, 56, 7
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 440(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 448(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 7, 57
; BE-NEXT: rldicl 3, 3, 57, 6
; BE-NEXT: rldicl 5, 11, 6, 58
; BE-NEXT: rldicl 5, 5, 58, 5
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 424(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 432(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 5, 59
; BE-NEXT: rldicl 3, 3, 59, 4
; BE-NEXT: rldicl 5, 11, 4, 60
; BE-NEXT: rldicl 5, 5, 60, 3
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 408(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 416(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 3, 11, 3, 61
; BE-NEXT: rldicl 5, 11, 2, 62
; BE-NEXT: rldicl 3, 3, 61, 2
; BE-NEXT: rldicl 5, 5, 62, 1
; BE-NEXT: mulld 3, 12, 3
; BE-NEXT: std 3, 392(1) # 8-byte Folded Spill
; BE-NEXT: mulld 3, 12, 5
; BE-NEXT: std 3, 400(1) # 8-byte Folded Spill
; BE-NEXT: sldi 3, 4, 1
; BE-NEXT: rldicl 4, 4, 63, 1
; BE-NEXT: and 3, 3, 27
; BE-NEXT: and 4, 4, 26
; BE-NEXT: or 3, 4, 3
; BE-NEXT: sldi 4, 3, 2
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: and 4, 4, 29
; BE-NEXT: and 3, 3, 28
; BE-NEXT: or 3, 3, 4
; BE-NEXT: sldi 4, 3, 4
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: and 4, 4, 30
; BE-NEXT: and 3, 3, 0
; BE-NEXT: or 3, 3, 4
; BE-NEXT: rotlwi 4, 3, 24
; BE-NEXT: rlwimi 4, 3, 8, 8, 15
; BE-NEXT: rlwimi 4, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 3, 32, 32
; BE-NEXT: rotlwi 5, 3, 24
; BE-NEXT: rlwimi 5, 3, 8, 8, 15
; BE-NEXT: rlwimi 5, 3, 8, 24, 31
; BE-NEXT: sldi 3, 6, 1
; BE-NEXT: rldicl 6, 6, 63, 1
; BE-NEXT: and 3, 3, 27
; BE-NEXT: and 6, 6, 26
; BE-NEXT: or 3, 6, 3
; BE-NEXT: sldi 6, 3, 2
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: and 6, 6, 29
; BE-NEXT: and 3, 3, 28
; BE-NEXT: or 3, 3, 6
; BE-NEXT: sldi 6, 3, 4
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: and 6, 6, 30
; BE-NEXT: and 3, 3, 0
; BE-NEXT: or 3, 3, 6
; BE-NEXT: rotlwi 6, 3, 24
; BE-NEXT: rlwimi 6, 3, 8, 8, 15
; BE-NEXT: rlwimi 6, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 3, 32, 32
; BE-NEXT: rotlwi 7, 3, 24
; BE-NEXT: rlwimi 7, 3, 8, 8, 15
; BE-NEXT: rlwimi 7, 3, 8, 24, 31
; BE-NEXT: sldi 3, 4, 32
; BE-NEXT: or 4, 3, 5
; BE-NEXT: sldi 3, 6, 32
; BE-NEXT: or 3, 3, 7
; BE-NEXT: rlwinm 5, 3, 0, 30, 30
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 336(1) # 8-byte Folded Spill
; BE-NEXT: clrldi 5, 3, 63
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 328(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 29, 29
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 320(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 28, 28
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 312(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 27, 27
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 304(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 26, 26
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 296(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 25, 25
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 288(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 24, 24
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 280(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 23, 23
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 272(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 22, 22
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 264(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 21, 21
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 256(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 20, 20
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 248(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 19, 19
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 240(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 18, 18
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 232(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 17, 17
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 224(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 16, 16
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 216(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 15, 15
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 208(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 14, 14
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 200(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 13, 13
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 192(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 12, 12
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 184(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 11, 11
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 176(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 10, 10
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 168(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 9, 9
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 160(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 8, 8
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 152(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 7, 7
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 144(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 6, 6
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 136(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 5, 5
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 128(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 4, 4
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 120(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 3, 3
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 112(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 2, 2
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 104(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 1, 1
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 96(1) # 8-byte Folded Spill
; BE-NEXT: rlwinm 5, 3, 0, 0, 0
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 88(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 32, 32
; BE-NEXT: rldicl 5, 5, 32, 31
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 80(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 31, 33
; BE-NEXT: rldicl 5, 5, 33, 30
; BE-NEXT: rldicl 6, 3, 30, 34
; BE-NEXT: rldicl 6, 6, 34, 29
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: std 5, 64(1) # 8-byte Folded Spill
; BE-NEXT: mulld 5, 4, 6
; BE-NEXT: std 5, 72(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 29, 35
; BE-NEXT: rldicl 6, 3, 28, 36
; BE-NEXT: rldicl 5, 5, 35, 28
; BE-NEXT: rldicl 6, 6, 36, 27
; BE-NEXT: mulld 31, 4, 5
; BE-NEXT: mulld 5, 4, 6
; BE-NEXT: std 5, 56(1) # 8-byte Folded Spill
; BE-NEXT: rldicl 5, 3, 27, 37
; BE-NEXT: rldicl 5, 5, 37, 26
; BE-NEXT: rldicl 6, 3, 26, 38
; BE-NEXT: mulld 15, 4, 5
; BE-NEXT: rldicl 5, 3, 25, 39
; BE-NEXT: rldicl 6, 6, 38, 25
; BE-NEXT: rldicl 5, 5, 39, 24
; BE-NEXT: mulld 14, 4, 6
; BE-NEXT: rldicl 6, 3, 24, 40
; BE-NEXT: mulld 17, 4, 5
; BE-NEXT: rldicl 5, 3, 23, 41
; BE-NEXT: rldicl 6, 6, 40, 23
; BE-NEXT: rldicl 5, 5, 41, 22
; BE-NEXT: mulld 16, 4, 6
; BE-NEXT: rldicl 6, 3, 22, 42
; BE-NEXT: mulld 19, 4, 5
; BE-NEXT: rldicl 5, 3, 21, 43
; BE-NEXT: rldicl 6, 6, 42, 21
; BE-NEXT: rldicl 5, 5, 43, 20
; BE-NEXT: mulld 18, 4, 6
; BE-NEXT: rldicl 6, 3, 20, 44
; BE-NEXT: mulld 21, 4, 5
; BE-NEXT: rldicl 5, 3, 19, 45
; BE-NEXT: rldicl 6, 6, 44, 19
; BE-NEXT: rldicl 5, 5, 45, 18
; BE-NEXT: mulld 20, 4, 6
; BE-NEXT: rldicl 6, 3, 18, 46
; BE-NEXT: mulld 23, 4, 5
; BE-NEXT: rldicl 5, 3, 17, 47
; BE-NEXT: rldicl 6, 6, 46, 17
; BE-NEXT: rldicl 5, 5, 47, 16
; BE-NEXT: mulld 22, 4, 6
; BE-NEXT: rldicl 6, 3, 16, 48
; BE-NEXT: mulld 25, 4, 5
; BE-NEXT: rldicl 5, 3, 15, 49
; BE-NEXT: rldicl 6, 6, 48, 15
; BE-NEXT: rldicl 5, 5, 49, 14
; BE-NEXT: mulld 24, 4, 6
; BE-NEXT: rldicl 6, 3, 14, 50
; BE-NEXT: mulld 27, 4, 5
; BE-NEXT: rldicl 5, 3, 13, 51
; BE-NEXT: rldicl 6, 6, 50, 13
; BE-NEXT: rldicl 5, 5, 51, 12
; BE-NEXT: mulld 26, 4, 6
; BE-NEXT: rldicl 6, 3, 12, 52
; BE-NEXT: mulld 29, 4, 5
; BE-NEXT: rldicl 5, 3, 11, 53
; BE-NEXT: rldicl 6, 6, 52, 11
; BE-NEXT: rldicl 5, 5, 53, 10
; BE-NEXT: mulld 28, 4, 6
; BE-NEXT: rldicl 6, 3, 10, 54
; BE-NEXT: mulld 0, 4, 5
; BE-NEXT: rldicl 5, 3, 9, 55
; BE-NEXT: rldicl 6, 6, 54, 9
; BE-NEXT: rldicl 5, 5, 55, 8
; BE-NEXT: mulld 30, 4, 6
; BE-NEXT: rldicl 6, 3, 8, 56
; BE-NEXT: mulld 11, 4, 5
; BE-NEXT: rldicl 5, 3, 7, 57
; BE-NEXT: rldicl 6, 6, 56, 7
; BE-NEXT: rldicl 5, 5, 57, 6
; BE-NEXT: mulld 12, 4, 6
; BE-NEXT: rldicl 6, 3, 6, 58
; BE-NEXT: mulld 9, 4, 5
; BE-NEXT: rldicl 5, 3, 5, 59
; BE-NEXT: rldicl 6, 6, 58, 5
; BE-NEXT: rldicl 5, 5, 59, 4
; BE-NEXT: mulld 10, 4, 6
; BE-NEXT: rldicl 6, 3, 4, 60
; BE-NEXT: mulld 7, 4, 5
; BE-NEXT: rldicl 5, 3, 3, 61
; BE-NEXT: rldicl 3, 3, 2, 62
; BE-NEXT: rldicl 6, 6, 60, 3
; BE-NEXT: rldicl 3, 3, 62, 1
; BE-NEXT: mulld 8, 4, 6
; BE-NEXT: mulld 6, 4, 3
; BE-NEXT: ld 3, 880(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 5, 5, 61, 2
; BE-NEXT: mulld 5, 4, 5
; BE-NEXT: ld 4, 336(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 2, 3
; BE-NEXT: ld 2, 328(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 2, 4
; BE-NEXT: ld 2, 872(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 320(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 856(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 312(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 864(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 304(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 840(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 296(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 848(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 288(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 824(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 280(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 832(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 272(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 808(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 264(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 816(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 256(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 792(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 248(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 800(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 240(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 776(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 232(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 784(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 224(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 760(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 216(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 768(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 208(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 744(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 200(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 752(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 192(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 728(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 184(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 736(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 176(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 720(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 168(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 712(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 160(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 704(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 152(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 696(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 144(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 688(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 136(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 680(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 128(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 672(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 120(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 664(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 112(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 656(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 104(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 648(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 96(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 640(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 88(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 632(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 80(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 616(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 64(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 624(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: ld 2, 72(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 2
; BE-NEXT: ld 2, 600(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 31
; BE-NEXT: ld 31, 608(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 2
; BE-NEXT: xor 3, 3, 31
; BE-NEXT: ld 31, 56(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 31
; BE-NEXT: ld 31, 584(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 15
; BE-NEXT: xor 4, 4, 14
; BE-NEXT: ld 15, 592(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 31
; BE-NEXT: xor 4, 4, 17
; BE-NEXT: xor 4, 4, 16
; BE-NEXT: xor 3, 3, 15
; BE-NEXT: ld 15, 568(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 19
; BE-NEXT: xor 4, 4, 18
; BE-NEXT: ld 17, 576(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 15
; BE-NEXT: xor 4, 4, 21
; BE-NEXT: xor 4, 4, 20
; BE-NEXT: xor 3, 3, 17
; BE-NEXT: ld 17, 552(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 23
; BE-NEXT: xor 4, 4, 22
; BE-NEXT: ld 19, 560(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 17
; BE-NEXT: xor 4, 4, 25
; BE-NEXT: xor 4, 4, 24
; BE-NEXT: xor 3, 3, 19
; BE-NEXT: ld 19, 536(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 27
; BE-NEXT: xor 4, 4, 26
; BE-NEXT: ld 21, 544(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 19
; BE-NEXT: xor 4, 4, 29
; BE-NEXT: xor 4, 4, 28
; BE-NEXT: xor 3, 3, 21
; BE-NEXT: ld 21, 520(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 0
; BE-NEXT: xor 4, 4, 30
; BE-NEXT: ld 23, 528(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 21
; BE-NEXT: xor 4, 4, 11
; BE-NEXT: xor 4, 4, 12
; BE-NEXT: xor 3, 3, 23
; BE-NEXT: ld 23, 504(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 9
; BE-NEXT: xor 4, 4, 10
; BE-NEXT: ld 25, 512(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 23
; BE-NEXT: xor 4, 4, 7
; BE-NEXT: xor 4, 4, 8
; BE-NEXT: xor 3, 3, 25
; BE-NEXT: ld 25, 488(1) # 8-byte Folded Reload
; BE-NEXT: xor 4, 4, 5
; BE-NEXT: xor 4, 4, 6
; BE-NEXT: ld 27, 496(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 25
; BE-NEXT: sldi 6, 4, 1
; BE-NEXT: rldicl 4, 4, 63, 1
; BE-NEXT: xor 3, 3, 27
; BE-NEXT: ld 27, 472(1) # 8-byte Folded Reload
; BE-NEXT: ld 29, 480(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 27
; BE-NEXT: xor 3, 3, 29
; BE-NEXT: ld 29, 456(1) # 8-byte Folded Reload
; BE-NEXT: ld 0, 464(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 29
; BE-NEXT: xor 3, 3, 0
; BE-NEXT: ld 0, 440(1) # 8-byte Folded Reload
; BE-NEXT: ld 11, 448(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 0
; BE-NEXT: xor 3, 3, 11
; BE-NEXT: ld 11, 424(1) # 8-byte Folded Reload
; BE-NEXT: ld 9, 432(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 11
; BE-NEXT: xor 3, 3, 9
; BE-NEXT: ld 9, 408(1) # 8-byte Folded Reload
; BE-NEXT: ld 7, 416(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 9
; BE-NEXT: xor 3, 3, 7
; BE-NEXT: ld 7, 392(1) # 8-byte Folded Reload
; BE-NEXT: ld 5, 400(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 7
; BE-NEXT: ld 7, 352(1) # 8-byte Folded Reload
; BE-NEXT: xor 3, 3, 5
; BE-NEXT: sldi 5, 3, 1
; BE-NEXT: rldicl 3, 3, 63, 1
; BE-NEXT: ld 8, 344(1) # 8-byte Folded Reload
; BE-NEXT: and 5, 5, 7
; BE-NEXT: and 6, 6, 7
; BE-NEXT: and 3, 3, 8
; BE-NEXT: and 4, 4, 8
; BE-NEXT: ld 7, 368(1) # 8-byte Folded Reload
; BE-NEXT: or 3, 3, 5
; BE-NEXT: or 4, 4, 6
; BE-NEXT: ld 8, 360(1) # 8-byte Folded Reload
; BE-NEXT: sldi 5, 3, 2
; BE-NEXT: rldicl 3, 3, 62, 2
; BE-NEXT: sldi 6, 4, 2
; BE-NEXT: rldicl 4, 4, 62, 2
; BE-NEXT: ld 2, 888(1) # 8-byte Folded Reload
; BE-NEXT: and 5, 5, 7
; BE-NEXT: and 3, 3, 8
; BE-NEXT: ld 31, 1032(1) # 8-byte Folded Reload
; BE-NEXT: and 6, 6, 7
; BE-NEXT: and 4, 4, 8
; BE-NEXT: ld 8, 376(1) # 8-byte Folded Reload
; BE-NEXT: or 3, 3, 5
; BE-NEXT: or 4, 4, 6
; BE-NEXT: sldi 5, 3, 4
; BE-NEXT: rldicl 3, 3, 60, 4
; BE-NEXT: ld 7, 384(1) # 8-byte Folded Reload
; BE-NEXT: and 5, 5, 8
; BE-NEXT: sldi 6, 4, 4
; BE-NEXT: and 3, 3, 7
; BE-NEXT: rldicl 4, 4, 60, 4
; BE-NEXT: ld 30, 1024(1) # 8-byte Folded Reload
; BE-NEXT: or 3, 3, 5
; BE-NEXT: and 6, 6, 8
; BE-NEXT: ld 29, 1016(1) # 8-byte Folded Reload
; BE-NEXT: and 4, 4, 7
; BE-NEXT: rotlwi 5, 3, 24
; BE-NEXT: or 4, 4, 6
; BE-NEXT: rlwimi 5, 3, 8, 8, 15
; BE-NEXT: ld 28, 1008(1) # 8-byte Folded Reload
; BE-NEXT: rotlwi 6, 4, 24
; BE-NEXT: ld 27, 1000(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 7, 3, 32, 32
; BE-NEXT: rlwimi 5, 3, 8, 24, 31
; BE-NEXT: rldicl 3, 4, 32, 32
; BE-NEXT: ld 26, 992(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 6, 4, 8, 8, 15
; BE-NEXT: rotlwi 8, 7, 24
; BE-NEXT: ld 25, 984(1) # 8-byte Folded Reload
; BE-NEXT: rotlwi 9, 3, 24
; BE-NEXT: rlwimi 8, 7, 8, 8, 15
; BE-NEXT: rlwimi 9, 3, 8, 8, 15
; BE-NEXT: ld 24, 976(1) # 8-byte Folded Reload
; BE-NEXT: ld 23, 968(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 6, 4, 8, 24, 31
; BE-NEXT: rlwimi 8, 7, 8, 24, 31
; BE-NEXT: ld 22, 960(1) # 8-byte Folded Reload
; BE-NEXT: rlwimi 9, 3, 8, 24, 31
; BE-NEXT: sldi 3, 5, 32
; BE-NEXT: ld 21, 952(1) # 8-byte Folded Reload
; BE-NEXT: sldi 4, 6, 32
; BE-NEXT: or 3, 3, 8
; BE-NEXT: or 4, 4, 9
; BE-NEXT: ld 20, 944(1) # 8-byte Folded Reload
; BE-NEXT: rldicl 3, 3, 63, 1
; BE-NEXT: rldicl 4, 4, 63, 1
; BE-NEXT: ld 19, 936(1) # 8-byte Folded Reload
; BE-NEXT: ld 18, 928(1) # 8-byte Folded Reload
; BE-NEXT: ld 17, 920(1) # 8-byte Folded Reload
; BE-NEXT: ld 16, 912(1) # 8-byte Folded Reload
; BE-NEXT: ld 15, 904(1) # 8-byte Folded Reload
; BE-NEXT: ld 14, 896(1) # 8-byte Folded Reload
; BE-NEXT: addi 1, 1, 1040
; BE-NEXT: blr
;
; LE-LABEL: clmulh_v2i64:
; LE: # %bb.0:
; LE-NEXT: lis 3, -21846
; LE-NEXT: lis 4, 21845
; LE-NEXT: lis 5, -13108
; LE-NEXT: lis 6, 13107
; LE-NEXT: xxswapd 0, 34
; LE-NEXT: lis 7, -3856
; LE-NEXT: lis 8, 3855
; LE-NEXT: xxswapd 1, 35
; LE-NEXT: ori 3, 3, 43690
; LE-NEXT: ori 4, 4, 21845
; LE-NEXT: ori 5, 5, 52428
; LE-NEXT: ori 6, 6, 13107
; LE-NEXT: mffprd 9, 0
; LE-NEXT: ori 7, 7, 61680
; LE-NEXT: ori 8, 8, 3855
; LE-NEXT: mffprd 10, 1
; LE-NEXT: sldi 3, 3, 32
; LE-NEXT: sldi 4, 4, 32
; LE-NEXT: sldi 5, 5, 32
; LE-NEXT: sldi 6, 6, 32
; LE-NEXT: sldi 7, 7, 32
; LE-NEXT: sldi 8, 8, 32
; LE-NEXT: vspltisw 4, 2
; LE-NEXT: vspltisw 5, 8
; LE-NEXT: oris 3, 3, 43690
; LE-NEXT: oris 4, 4, 21845
; LE-NEXT: vspltisw 8, 1
; LE-NEXT: vspltisw 10, 7
; LE-NEXT: oris 5, 5, 52428
; LE-NEXT: oris 11, 6, 13107
; LE-NEXT: vupklsw 0, 4
; LE-NEXT: vupklsw 6, 5
; LE-NEXT: oris 12, 7, 61680
; LE-NEXT: oris 0, 8, 3855
; LE-NEXT: xxlxor 37, 37, 37
; LE-NEXT: vupklsw 10, 10
; LE-NEXT: ori 8, 3, 43690
; LE-NEXT: ori 7, 4, 21845
; LE-NEXT: ori 6, 5, 52428
; LE-NEXT: ori 5, 11, 13107
; LE-NEXT: sldi 11, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: ori 4, 12, 61680
; LE-NEXT: sldi 12, 10, 1
; LE-NEXT: rldicl 10, 10, 63, 1
; LE-NEXT: and 11, 11, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: and 12, 12, 8
; LE-NEXT: and 10, 10, 7
; LE-NEXT: or 9, 9, 11
; LE-NEXT: or 10, 10, 12
; LE-NEXT: ori 3, 0, 3855
; LE-NEXT: sldi 11, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: sldi 12, 10, 2
; LE-NEXT: rldicl 10, 10, 62, 2
; LE-NEXT: and 11, 11, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: and 12, 12, 6
; LE-NEXT: and 10, 10, 5
; LE-NEXT: or 9, 9, 11
; LE-NEXT: or 10, 10, 12
; LE-NEXT: sldi 11, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: sldi 12, 10, 4
; LE-NEXT: rldicl 10, 10, 60, 4
; LE-NEXT: and 11, 11, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: and 12, 12, 4
; LE-NEXT: and 10, 10, 3
; LE-NEXT: or 9, 9, 11
; LE-NEXT: or 10, 10, 12
; LE-NEXT: rotlwi 12, 9, 24
; LE-NEXT: rldicl 11, 9, 32, 32
; LE-NEXT: rldicl 0, 10, 32, 32
; LE-NEXT: rlwimi 12, 9, 8, 8, 15
; LE-NEXT: rlwimi 12, 9, 8, 24, 31
; LE-NEXT: rotlwi 9, 10, 24
; LE-NEXT: sldi 12, 12, 32
; LE-NEXT: rlwimi 9, 10, 8, 8, 15
; LE-NEXT: rlwimi 9, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 11, 24
; LE-NEXT: sldi 9, 9, 32
; LE-NEXT: rlwimi 10, 11, 8, 8, 15
; LE-NEXT: rlwimi 10, 11, 8, 24, 31
; LE-NEXT: rotlwi 11, 0, 24
; LE-NEXT: or 10, 12, 10
; LE-NEXT: rlwimi 11, 0, 8, 8, 15
; LE-NEXT: rlwimi 11, 0, 8, 24, 31
; LE-NEXT: mtfprd 0, 10
; LE-NEXT: or 9, 9, 11
; LE-NEXT: mtfprd 1, 9
; LE-NEXT: mfvsrd 9, 35
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: and 10, 10, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: and 10, 10, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 10
; LE-NEXT: rldicl 10, 9, 32, 32
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 9, 24
; LE-NEXT: rlwimi 10, 9, 8, 8, 15
; LE-NEXT: rlwimi 10, 9, 8, 24, 31
; LE-NEXT: mfvsrd 9, 34
; LE-NEXT: sldi 10, 10, 32
; LE-NEXT: or 10, 10, 11
; LE-NEXT: mtfprd 2, 10
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: and 10, 10, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: and 10, 10, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 10
; LE-NEXT: rldicl 10, 9, 32, 32
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 9, 24
; LE-NEXT: rlwimi 10, 9, 8, 8, 15
; LE-NEXT: rlwimi 10, 9, 8, 24, 31
; LE-NEXT: sldi 9, 10, 32
; LE-NEXT: addis 10, 2, .LCPI11_14@toc@ha
; LE-NEXT: or 9, 9, 11
; LE-NEXT: vspltisw 2, 4
; LE-NEXT: vupklsw 1, 2
; LE-NEXT: vspltisw 2, 3
; LE-NEXT: vupklsw 9, 2
; LE-NEXT: xxmrghd 35, 2, 1
; LE-NEXT: xxland 34, 35, 32
; LE-NEXT: vcmpgtud 2, 2, 5
; LE-NEXT: mtfprd 1, 9
; LE-NEXT: addis 9, 2, .LCPI11_0@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_0@toc@l
; LE-NEXT: xxmrghd 36, 1, 0
; LE-NEXT: vaddudm 7, 4, 4
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: xxland 0, 34, 39
; LE-NEXT: xxland 39, 35, 33
; LE-NEXT: vcmpgtud 7, 7, 5
; LE-NEXT: xxland 1, 39, 32
; LE-NEXT: xxland 39, 35, 38
; LE-NEXT: vsld 0, 4, 9
; LE-NEXT: vsld 6, 4, 6
; LE-NEXT: vcmpgtud 7, 7, 5
; LE-NEXT: xxland 2, 39, 32
; LE-NEXT: vsld 0, 4, 1
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_1@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_1@toc@l
; LE-NEXT: vupklsw 2, 8
; LE-NEXT: vspltisw 8, 5
; LE-NEXT: xxland 41, 35, 33
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: vcmpgtud 9, 9, 5
; LE-NEXT: xxland 5, 41, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_2@toc@ha
; LE-NEXT: vupklsw 8, 8
; LE-NEXT: vsld 8, 4, 8
; LE-NEXT: addi 9, 9, .LCPI11_2@toc@l
; LE-NEXT: lxvd2x 3, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_3@toc@ha
; LE-NEXT: xxland 41, 35, 32
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_3@toc@l
; LE-NEXT: vcmpgtud 9, 9, 5
; LE-NEXT: lxvd2x 6, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_4@toc@ha
; LE-NEXT: xxland 4, 41, 40
; LE-NEXT: xxland 40, 35, 3
; LE-NEXT: addi 9, 9, .LCPI11_4@toc@l
; LE-NEXT: vcmpgtud 8, 8, 5
; LE-NEXT: lxvd2x 7, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_5@toc@ha
; LE-NEXT: xxland 41, 35, 6
; LE-NEXT: addi 9, 9, .LCPI11_5@toc@l
; LE-NEXT: vcmpgtud 9, 9, 5
; LE-NEXT: lxvd2x 8, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_6@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_6@toc@l
; LE-NEXT: vspltisw 7, 6
; LE-NEXT: vupklsw 7, 7
; LE-NEXT: vsld 7, 4, 7
; LE-NEXT: xxland 3, 40, 39
; LE-NEXT: vsld 7, 4, 10
; LE-NEXT: xxland 6, 41, 39
; LE-NEXT: xxland 41, 35, 7
; LE-NEXT: vcmpgtud 9, 9, 5
; LE-NEXT: xxland 7, 41, 38
; LE-NEXT: xxland 41, 35, 8
; LE-NEXT: lxvd2x 8, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_7@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_7@toc@l
; LE-NEXT: vcmpgtud 9, 9, 5
; LE-NEXT: lxvd2x 10, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_8@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_8@toc@l
; LE-NEXT: lxvd2x 11, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_9@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_9@toc@l
; LE-NEXT: lxvd2x 12, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_10@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_10@toc@l
; LE-NEXT: vspltisw 8, 9
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: vspltisw 8, 10
; LE-NEXT: vsld 6, 4, 7
; LE-NEXT: xxland 9, 41, 38
; LE-NEXT: xxland 41, 35, 10
; LE-NEXT: vcmpgtud 9, 9, 5
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: vspltisw 8, 11
; LE-NEXT: vsld 6, 4, 7
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: xxland 40, 35, 8
; LE-NEXT: vcmpgtud 8, 8, 5
; LE-NEXT: xxland 8, 40, 38
; LE-NEXT: vsld 6, 4, 7
; LE-NEXT: xxland 10, 41, 38
; LE-NEXT: xxland 41, 35, 11
; LE-NEXT: vcmpgtud 9, 9, 5
; LE-NEXT: vspltisw 7, 12
; LE-NEXT: vspltisw 8, 13
; LE-NEXT: vupklsw 6, 7
; LE-NEXT: vsld 6, 4, 6
; LE-NEXT: vupklsw 7, 8
; LE-NEXT: vsld 7, 4, 7
; LE-NEXT: vspltisw 8, 14
; LE-NEXT: xxland 11, 41, 38
; LE-NEXT: xxland 38, 35, 12
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 12, 38, 39
; LE-NEXT: xxland 38, 35, 34
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 13, 38, 36
; LE-NEXT: vupklsw 8, 8
; LE-NEXT: vsld 7, 4, 8
; LE-NEXT: xxlxor 0, 13, 0
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_11@toc@ha
; LE-NEXT: vspltisw 9, 15
; LE-NEXT: addi 9, 9, .LCPI11_11@toc@l
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_12@toc@ha
; LE-NEXT: xxlxor 0, 0, 5
; LE-NEXT: xxland 40, 35, 1
; LE-NEXT: addi 9, 9, .LCPI11_12@toc@l
; LE-NEXT: xxlxor 0, 0, 4
; LE-NEXT: vcmpgtud 8, 8, 5
; LE-NEXT: lxvd2x 4, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_13@toc@ha
; LE-NEXT: xxlxor 0, 0, 3
; LE-NEXT: xxland 1, 40, 39
; LE-NEXT: xxland 39, 35, 2
; LE-NEXT: addi 9, 9, .LCPI11_13@toc@l
; LE-NEXT: xxlxor 0, 0, 6
; LE-NEXT: vcmpgtud 7, 7, 5
; LE-NEXT: xxlxor 0, 0, 7
; LE-NEXT: xxlxor 0, 0, 9
; LE-NEXT: xxlxor 0, 0, 8
; LE-NEXT: xxlxor 0, 0, 10
; LE-NEXT: xxlxor 0, 0, 11
; LE-NEXT: xxlxor 0, 0, 12
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: vupklsw 6, 9
; LE-NEXT: vsld 6, 4, 6
; LE-NEXT: xxland 2, 39, 38
; LE-NEXT: xxland 38, 35, 4
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 4, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_14@toc@l
; LE-NEXT: lxvd2x 3, 0, 9
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: addis 9, 2, .LCPI11_15@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addis 10, 2, .LCPI11_16@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_15@toc@l
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: xxland 3, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_16@toc@l
; LE-NEXT: addis 10, 2, .LCPI11_18@toc@ha
; LE-NEXT: xxlxor 0, 0, 4
; LE-NEXT: lxvd2x 5, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_17@toc@ha
; LE-NEXT: xxlxor 0, 0, 3
; LE-NEXT: addi 9, 9, .LCPI11_17@toc@l
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: xxland 38, 35, 5
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 5, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_18@toc@l
; LE-NEXT: addis 10, 2, .LCPI11_20@toc@ha
; LE-NEXT: lxvd2x 6, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_19@toc@ha
; LE-NEXT: xxlxor 0, 0, 5
; LE-NEXT: addi 9, 9, .LCPI11_19@toc@l
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: xxland 38, 35, 6
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 6, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_20@toc@l
; LE-NEXT: addis 10, 2, .LCPI11_22@toc@ha
; LE-NEXT: lxvd2x 7, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_21@toc@ha
; LE-NEXT: xxlxor 0, 0, 6
; LE-NEXT: addi 9, 9, .LCPI11_21@toc@l
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: xxland 38, 35, 7
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 7, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_22@toc@l
; LE-NEXT: addis 10, 2, .LCPI11_24@toc@ha
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_23@toc@ha
; LE-NEXT: xxlxor 0, 0, 7
; LE-NEXT: addi 9, 9, .LCPI11_23@toc@l
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_24@toc@l
; LE-NEXT: addis 10, 2, .LCPI11_26@toc@ha
; LE-NEXT: lxvd2x 2, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_25@toc@ha
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: addi 9, 9, .LCPI11_25@toc@l
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: xxland 38, 35, 2
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 2, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_26@toc@l
; LE-NEXT: addis 10, 2, .LCPI11_28@toc@ha
; LE-NEXT: lxvd2x 3, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_27@toc@ha
; LE-NEXT: xxlxor 0, 0, 2
; LE-NEXT: addi 9, 9, .LCPI11_27@toc@l
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: xxland 38, 35, 3
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 3, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addi 9, 10, .LCPI11_28@toc@l
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_29@toc@ha
; LE-NEXT: xxlxor 0, 0, 3
; LE-NEXT: addi 9, 9, .LCPI11_29@toc@l
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_30@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_30@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_31@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addi 9, 9, .LCPI11_31@toc@l
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_32@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_32@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_33@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addi 9, 9, .LCPI11_33@toc@l
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_34@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_34@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_35@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addi 9, 9, .LCPI11_35@toc@l
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_36@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_36@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_37@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addi 9, 9, .LCPI11_37@toc@l
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_38@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_38@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_39@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addi 9, 9, .LCPI11_39@toc@l
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_40@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_40@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_41@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addi 9, 9, .LCPI11_41@toc@l
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: lxvd2x 33, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_42@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_42@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_43@toc@ha
; LE-NEXT: vsld 1, 4, 1
; LE-NEXT: addi 9, 9, .LCPI11_43@toc@l
; LE-NEXT: xxland 38, 35, 1
; LE-NEXT: vcmpgtud 6, 6, 5
; LE-NEXT: xxland 1, 38, 33
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_44@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_44@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_45@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_45@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_46@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_46@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_47@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_47@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_48@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_48@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_49@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_49@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_50@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_50@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_51@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_51@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_52@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_52@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_53@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_53@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_54@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_54@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_55@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_55@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_56@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_56@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_57@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_57@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_58@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_58@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_59@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_59@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_60@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_60@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_61@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_61@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_62@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_62@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_63@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_63@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_64@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_64@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_65@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_65@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_66@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_66@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_67@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_67@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_68@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_68@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_69@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_69@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_70@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_70@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_71@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_71@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_72@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_72@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_73@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_73@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_74@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_74@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_75@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_75@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_76@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_76@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_77@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_77@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_78@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_78@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_79@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_79@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_80@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_80@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_81@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_81@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_82@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_82@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_83@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_83@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_84@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_84@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_85@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_85@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_86@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_86@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_87@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_87@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_88@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_88@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_89@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_89@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_90@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_90@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_91@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_91@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_92@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_92@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_93@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_93@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_94@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_94@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_95@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_95@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_96@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_96@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_97@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_97@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_98@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_98@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_99@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_99@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_100@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_100@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_101@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_101@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_102@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_102@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: lxvd2x 32, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_103@toc@ha
; LE-NEXT: addi 9, 9, .LCPI11_103@toc@l
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: addis 9, 2, .LCPI11_104@toc@ha
; LE-NEXT: vsld 0, 4, 0
; LE-NEXT: addi 9, 9, .LCPI11_104@toc@l
; LE-NEXT: xxland 33, 35, 1
; LE-NEXT: vcmpgtud 1, 1, 5
; LE-NEXT: xxland 1, 33, 32
; LE-NEXT: xxleqv 32, 32, 32
; LE-NEXT: vsld 4, 4, 0
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: lxvd2x 1, 0, 9
; LE-NEXT: xxland 35, 35, 1
; LE-NEXT: vcmpgtud 3, 3, 5
; LE-NEXT: xxland 1, 35, 36
; LE-NEXT: xxlxor 0, 0, 1
; LE-NEXT: mffprd 9, 0
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 10, 10, 8
; LE-NEXT: and 9, 9, 7
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 2
; LE-NEXT: rldicl 9, 9, 62, 2
; LE-NEXT: and 10, 10, 6
; LE-NEXT: and 9, 9, 5
; LE-NEXT: or 9, 9, 10
; LE-NEXT: sldi 10, 9, 4
; LE-NEXT: rldicl 9, 9, 60, 4
; LE-NEXT: and 10, 10, 4
; LE-NEXT: and 9, 9, 3
; LE-NEXT: or 9, 9, 10
; LE-NEXT: rldicl 10, 9, 32, 32
; LE-NEXT: rotlwi 11, 10, 24
; LE-NEXT: rlwimi 11, 10, 8, 8, 15
; LE-NEXT: rlwimi 11, 10, 8, 24, 31
; LE-NEXT: rotlwi 10, 9, 24
; LE-NEXT: rlwimi 10, 9, 8, 8, 15
; LE-NEXT: rlwimi 10, 9, 8, 24, 31
; LE-NEXT: sldi 9, 10, 32
; LE-NEXT: or 9, 9, 11
; LE-NEXT: xxswapd 1, 0
; LE-NEXT: mtfprd 0, 9
; LE-NEXT: mffprd 9, 1
; LE-NEXT: sldi 10, 9, 1
; LE-NEXT: rldicl 9, 9, 63, 1
; LE-NEXT: and 8, 10, 8
; LE-NEXT: and 7, 9, 7
; LE-NEXT: or 7, 7, 8
; LE-NEXT: sldi 8, 7, 2
; LE-NEXT: rldicl 7, 7, 62, 2
; LE-NEXT: and 6, 8, 6
; LE-NEXT: and 5, 7, 5
; LE-NEXT: or 5, 5, 6
; LE-NEXT: sldi 6, 5, 4
; LE-NEXT: rldicl 5, 5, 60, 4
; LE-NEXT: and 4, 6, 4
; LE-NEXT: and 3, 5, 3
; LE-NEXT: or 3, 3, 4
; LE-NEXT: rldicl 4, 3, 32, 32
; LE-NEXT: rotlwi 5, 4, 24
; LE-NEXT: rlwimi 5, 4, 8, 8, 15
; LE-NEXT: rlwimi 5, 4, 8, 24, 31
; LE-NEXT: rotlwi 4, 3, 24
; LE-NEXT: rlwimi 4, 3, 8, 8, 15
; LE-NEXT: rlwimi 4, 3, 8, 24, 31
; LE-NEXT: sldi 3, 4, 32
; LE-NEXT: or 3, 3, 5
; LE-NEXT: mtfprd 1, 3
; LE-NEXT: xxmrghd 35, 0, 1
; LE-NEXT: vsrd 2, 3, 2
; LE-NEXT: blr
%a.ext = zext <2 x i64> %a to <2 x i128>
%b.ext = zext <2 x i64> %b to <2 x i128>
%clmul = call <2 x i128> @llvm.clmul.v2i128(<2 x i128> %a.ext, <2 x i128> %b.ext)
%res.ext = lshr <2 x i128> %clmul, splat (i128 64)
%res = trunc <2 x i128> %res.ext to <2 x i64>
ret <2 x i64> %res
}
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
; CHECK: {{.*}}