[llvm-branch-commits] [llvm] e82f0d9 - PowerPC: Add emergency stack spill slots for SPE
Justin Hibbits via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue May 12 15:07:51 PDT 2020
Author: Justin Hibbits
Date: 2020-05-12T16:53:30-05:00
New Revision: e82f0d991fc01a8e509f4d6c2f5139af2d29f913
URL: https://github.com/llvm/llvm-project/commit/e82f0d991fc01a8e509f4d6c2f5139af2d29f913
DIFF: https://github.com/llvm/llvm-project/commit/e82f0d991fc01a8e509f4d6c2f5139af2d29f913.diff
LOG: PowerPC: Add emergency stack spill slots for SPE
The powerpcspe 64-bit load/store only allows a 8-bit delta (32 64-bit
words), so if the stack size is any larger than that, we need extra
spill slots for doing indexing.
Added:
llvm/test/CodeGen/PowerPC/spe-spills.ll
Modified:
llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
index 7fbdf97793f7..bef9bcbdfaeb 100644
--- a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
@@ -2062,7 +2062,8 @@ PPCFrameLowering::addScavengingSpillSlot(MachineFunction &MF,
unsigned StackSize = determineFrameLayout(MF, true);
MachineFrameInfo &MFI = MF.getFrameInfo();
if (MFI.hasVarSizedObjects() || spillsCR(MF) || spillsVRSAVE(MF) ||
- hasNonRISpills(MF) || (hasSpills(MF) && !isInt<16>(StackSize))) {
+ hasNonRISpills(MF) || (hasSpills(MF) && !isInt<16>(StackSize)) ||
+ (Subtarget.hasSPE() && hasSpills(MF) && !isInt<8>(StackSize))) {
const TargetRegisterClass &GPRC = PPC::GPRCRegClass;
const TargetRegisterClass &G8RC = PPC::G8RCRegClass;
const TargetRegisterClass &RC = Subtarget.isPPC64() ? G8RC : GPRC;
diff --git a/llvm/test/CodeGen/PowerPC/spe-spills.ll b/llvm/test/CodeGen/PowerPC/spe-spills.ll
new file mode 100644
index 000000000000..8fb0f2278fff
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/spe-spills.ll
@@ -0,0 +1,721 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu \
+; RUN: -mattr=+spe | FileCheck %s
+; Tests that spill slots are allocated for stacks larger than 256 bytes on
+; powerpcspe targets
+
+ at d = local_unnamed_addr global double* null, align 4
+ at c = local_unnamed_addr global i32 0, align 4
+ at g = local_unnamed_addr global double 0.000000e+00, align 8
+ at e = local_unnamed_addr global double* null, align 4
+ at h = local_unnamed_addr global double 0.000000e+00, align 8
+ at j = local_unnamed_addr global double 0.000000e+00, align 8
+ at f = local_unnamed_addr global double 0.000000e+00, align 8
+ at a = local_unnamed_addr global i32 0, align 4
+
+; Function Attrs: nofree norecurse nounwind sspstrong uwtable
+define i32 @k(double* nocapture readonly %l, double* nocapture %m, i32 %aa, i32 %ab, i32 %n, i32 %ac, i32 %ad) local_unnamed_addr #0 {
+; CHECK-LABEL: k:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: stwu 1, -480(1)
+; CHECK-NEXT: .cfi_def_cfa_offset 480
+; CHECK-NEXT: .cfi_offset r14, -72
+; CHECK-NEXT: .cfi_offset r15, -68
+; CHECK-NEXT: .cfi_offset r16, -64
+; CHECK-NEXT: .cfi_offset r17, -60
+; CHECK-NEXT: .cfi_offset r18, -56
+; CHECK-NEXT: .cfi_offset r19, -52
+; CHECK-NEXT: .cfi_offset r20, -48
+; CHECK-NEXT: .cfi_offset r21, -44
+; CHECK-NEXT: .cfi_offset r22, -40
+; CHECK-NEXT: .cfi_offset r23, -36
+; CHECK-NEXT: .cfi_offset r24, -32
+; CHECK-NEXT: .cfi_offset r25, -28
+; CHECK-NEXT: .cfi_offset r26, -24
+; CHECK-NEXT: .cfi_offset r27, -20
+; CHECK-NEXT: .cfi_offset r28, -16
+; CHECK-NEXT: .cfi_offset r29, -12
+; CHECK-NEXT: .cfi_offset r30, -8
+; CHECK-NEXT: .cfi_offset r31, -4
+; CHECK-NEXT: .cfi_offset r14, -224
+; CHECK-NEXT: .cfi_offset r15, -216
+; CHECK-NEXT: .cfi_offset r16, -208
+; CHECK-NEXT: .cfi_offset r17, -200
+; CHECK-NEXT: .cfi_offset r18, -192
+; CHECK-NEXT: .cfi_offset r19, -184
+; CHECK-NEXT: .cfi_offset r20, -176
+; CHECK-NEXT: .cfi_offset r21, -168
+; CHECK-NEXT: .cfi_offset r22, -160
+; CHECK-NEXT: .cfi_offset r23, -152
+; CHECK-NEXT: .cfi_offset r24, -144
+; CHECK-NEXT: .cfi_offset r25, -136
+; CHECK-NEXT: .cfi_offset r26, -128
+; CHECK-NEXT: .cfi_offset r27, -120
+; CHECK-NEXT: .cfi_offset r28, -112
+; CHECK-NEXT: .cfi_offset r29, -104
+; CHECK-NEXT: .cfi_offset r30, -96
+; CHECK-NEXT: .cfi_offset r31, -88
+; CHECK-NEXT: li 10, 256
+; CHECK-NEXT: cmpwi 7, 1
+; CHECK-NEXT: stw 14, 408(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 15, 412(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 16, 416(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstddx 14, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 264
+; CHECK-NEXT: stw 17, 420(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 18, 424(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 19, 428(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstddx 15, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 272
+; CHECK-NEXT: stw 20, 432(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 21, 436(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 22, 440(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstddx 16, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 280
+; CHECK-NEXT: stw 23, 444(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 24, 448(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 25, 452(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstddx 17, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 288
+; CHECK-NEXT: stw 26, 456(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 27, 460(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 28, 464(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstddx 18, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 296
+; CHECK-NEXT: stw 29, 468(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 30, 472(1) # 4-byte Folded Spill
+; CHECK-NEXT: stw 31, 476(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstddx 19, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 304
+; CHECK-NEXT: stw 4, 68(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstddx 20, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 312
+; CHECK-NEXT: evstddx 21, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 320
+; CHECK-NEXT: evstddx 22, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 328
+; CHECK-NEXT: evstddx 23, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 336
+; CHECK-NEXT: evstddx 24, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 344
+; CHECK-NEXT: evstddx 25, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 352
+; CHECK-NEXT: evstddx 26, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 360
+; CHECK-NEXT: evstddx 27, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 368
+; CHECK-NEXT: evstddx 28, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 376
+; CHECK-NEXT: evstddx 29, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 384
+; CHECK-NEXT: evstddx 30, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: li 10, 392
+; CHECK-NEXT: evstddx 31, 1, 10 # 8-byte Folded Spill
+; CHECK-NEXT: blt 0, .LBB0_4
+; CHECK-NEXT: # %bb.1: # %for.body.lr.ph
+; CHECK-NEXT: lis 4, c at ha
+; CHECK-NEXT: mr 0, 8
+; CHECK-NEXT: mr 8, 6
+; CHECK-NEXT: slwi 6, 9, 3
+; CHECK-NEXT: lis 11, d at ha
+; CHECK-NEXT: lis 30, e at ha
+; CHECK-NEXT: li 12, 1
+; CHECK-NEXT: lis 10, a at ha
+; CHECK-NEXT: lwz 4, c at l(4)
+; CHECK-NEXT: li 9, .LCPI0_0 at l
+; CHECK-NEXT: stw 6, 60(1) # 4-byte Folded Spill
+; CHECK-NEXT: mulli 6, 8, 24
+; CHECK-NEXT: isel 29, 7, 12, 0
+; CHECK-NEXT: lwz 12, d at l(11)
+; CHECK-NEXT: stw 6, 56(1) # 4-byte Folded Spill
+; CHECK-NEXT: slwi 6, 8, 3
+; CHECK-NEXT: lwz 30, e at l(30)
+; CHECK-NEXT: efdcfsi 4, 4
+; CHECK-NEXT: stw 6, 52(1) # 4-byte Folded Spill
+; CHECK-NEXT: lwz 6, a at l(10)
+; CHECK-NEXT: lis 10, .LCPI0_0 at ha
+; CHECK-NEXT: stw 6, 48(1) # 4-byte Folded Spill
+; CHECK-NEXT: evstdd 4, 40(1) # 8-byte Folded Spill
+; CHECK-NEXT: slwi 4, 0, 3
+; CHECK-NEXT: evlddx 6, 10, 9
+; CHECK-NEXT: evstdd 6, 24(1) # 8-byte Folded Spill
+; CHECK-NEXT: stw 4, 36(1) # 4-byte Folded Spill
+; CHECK-NEXT: subf 4, 29, 7
+; CHECK-NEXT: li 7, 0
+; CHECK-NEXT: addi 4, 4, 1
+; CHECK-NEXT: mtctr 4
+; CHECK-NEXT: stw 3, 64(1) # 4-byte Folded Spill
+; CHECK-NEXT: .p2align 4
+; CHECK-NEXT: .LBB0_2: # %for.body
+; CHECK-NEXT: #
+; CHECK-NEXT: mulli 4, 5, 192
+; CHECK-NEXT: stw 30, 252(1) # 4-byte Folded Spill
+; CHECK-NEXT: evlddx 30, 3, 7
+; CHECK-NEXT: slwi 31, 5, 4
+; CHECK-NEXT: stw 4, 232(1) # 4-byte Folded Spill
+; CHECK-NEXT: mulli 8, 5, 120
+; CHECK-NEXT: add 31, 12, 31
+; CHECK-NEXT: add 4, 3, 4
+; CHECK-NEXT: evlddx 31, 31, 7
+; CHECK-NEXT: mulli 0, 5, 56
+; CHECK-NEXT: evlddx 18, 4, 7
+; CHECK-NEXT: add 9, 3, 8
+; CHECK-NEXT: add 22, 12, 8
+; CHECK-NEXT: mulli 4, 5, 80
+; CHECK-NEXT: evlddx 9, 9, 7
+; CHECK-NEXT: evlddx 22, 22, 7
+; CHECK-NEXT: add 21, 12, 0
+; CHECK-NEXT: efdsub 6, 30, 18
+; CHECK-NEXT: evlddx 21, 21, 7
+; CHECK-NEXT: add 4, 3, 4
+; CHECK-NEXT: evstdd 6, 240(1) # 8-byte Folded Spill
+; CHECK-NEXT: evlddx 26, 4, 7
+; CHECK-NEXT: mulli 6, 5, 248
+; CHECK-NEXT: mulli 27, 5, 184
+; CHECK-NEXT: add 23, 12, 6
+; CHECK-NEXT: efdsub 4, 26, 30
+; CHECK-NEXT: evlddx 23, 23, 7
+; CHECK-NEXT: evstdd 4, 216(1) # 8-byte Folded Spill
+; CHECK-NEXT: add 4, 3, 6
+; CHECK-NEXT: mulli 25, 5, 24
+; CHECK-NEXT: evlddx 4, 4, 7
+; CHECK-NEXT: mulli 24, 5, 152
+; CHECK-NEXT: efdsub 4, 4, 9
+; CHECK-NEXT: add 9, 3, 27
+; CHECK-NEXT: add 27, 12, 27
+; CHECK-NEXT: add 15, 12, 24
+; CHECK-NEXT: evlddx 9, 9, 7
+; CHECK-NEXT: evstdd 4, 224(1) # 8-byte Folded Spill
+; CHECK-NEXT: add 4, 3, 0
+; CHECK-NEXT: evlddx 27, 27, 7
+; CHECK-NEXT: mulli 11, 5, 216
+; CHECK-NEXT: evlddx 15, 15, 7
+; CHECK-NEXT: evlddx 4, 4, 7
+; CHECK-NEXT: stw 11, 160(1) # 4-byte Folded Spill
+; CHECK-NEXT: lwz 6, 160(1) # 4-byte Folded Reload
+; CHECK-NEXT: mulli 28, 5, 88
+; CHECK-NEXT: efdsub 4, 4, 9
+; CHECK-NEXT: add 9, 3, 24
+; CHECK-NEXT: add 24, 12, 6
+; CHECK-NEXT: evlddx 10, 9, 7
+; CHECK-NEXT: evstdd 4, 208(1) # 8-byte Folded Spill
+; CHECK-NEXT: add 4, 3, 25
+; CHECK-NEXT: evlddx 24, 24, 7
+; CHECK-NEXT: mulli 9, 5, 40
+; CHECK-NEXT: evlddx 4, 4, 7
+; CHECK-NEXT: stw 9, 140(1) # 4-byte Folded Spill
+; CHECK-NEXT: mulli 17, 5, 176
+; CHECK-NEXT: efdsub 4, 4, 10
+; CHECK-NEXT: add 10, 3, 28
+; CHECK-NEXT: add 28, 12, 28
+; CHECK-NEXT: add 14, 3, 17
+; CHECK-NEXT: add 17, 12, 17
+; CHECK-NEXT: evlddx 10, 10, 7
+; CHECK-NEXT: evstdd 4, 200(1) # 8-byte Folded Spill
+; CHECK-NEXT: add 4, 3, 11
+; CHECK-NEXT: evlddx 14, 14, 7
+; CHECK-NEXT: mulli 11, 5, 168
+; CHECK-NEXT: evlddx 17, 17, 7
+; CHECK-NEXT: evlddx 4, 4, 7
+; CHECK-NEXT: stw 11, 116(1) # 4-byte Folded Spill
+; CHECK-NEXT: evlddx 28, 28, 7
+; CHECK-NEXT: mulli 16, 5, 96
+; CHECK-NEXT: add 29, 3, 11
+; CHECK-NEXT: efdsub 4, 4, 10
+; CHECK-NEXT: add 10, 3, 9
+; CHECK-NEXT: evlddx 29, 29, 7
+; CHECK-NEXT: add 16, 3, 16
+; CHECK-NEXT: evlddx 10, 10, 7
+; CHECK-NEXT: evstdd 4, 192(1) # 8-byte Folded Spill
+; CHECK-NEXT: mulli 9, 5, 232
+; CHECK-NEXT: mulli 4, 5, 104
+; CHECK-NEXT: add 11, 3, 9
+; CHECK-NEXT: efdsub 10, 10, 29
+; CHECK-NEXT: evlddx 11, 11, 7
+; CHECK-NEXT: add 29, 3, 4
+; CHECK-NEXT: add 4, 12, 4
+; CHECK-NEXT: evstdd 10, 184(1) # 8-byte Folded Spill
+; CHECK-NEXT: evlddx 29, 29, 7
+; CHECK-NEXT: mulli 20, 5, 48
+; CHECK-NEXT: evlddx 4, 4, 7
+; CHECK-NEXT: mulli 0, 5, 136
+; CHECK-NEXT: add 20, 12, 20
+; CHECK-NEXT: efdsub 10, 11, 29
+; CHECK-NEXT: slwi 11, 5, 3
+; CHECK-NEXT: evlddx 20, 20, 7
+; CHECK-NEXT: add 8, 12, 11
+; CHECK-NEXT: evstdd 10, 168(1) # 8-byte Folded Spill
+; CHECK-NEXT: mulli 29, 5, 112
+; CHECK-NEXT: efdsub 10, 30, 14
+; CHECK-NEXT: add 19, 3, 29
+; CHECK-NEXT: add 29, 12, 29
+; CHECK-NEXT: evstdd 10, 144(1) # 8-byte Folded Spill
+; CHECK-NEXT: evlddx 19, 19, 7
+; CHECK-NEXT: evlddx 10, 16, 7
+; CHECK-NEXT: evstdd 10, 88(1) # 8-byte Folded Spill
+; CHECK-NEXT: efdsub 3, 30, 19
+; CHECK-NEXT: efdadd 26, 26, 19
+; CHECK-NEXT: evlddx 19, 12, 7
+; CHECK-NEXT: efdadd 18, 18, 10
+; CHECK-NEXT: add 30, 12, 25
+; CHECK-NEXT: lwz 10, 232(1) # 4-byte Folded Reload
+; CHECK-NEXT: evstdd 3, 176(1) # 8-byte Folded Spill
+; CHECK-NEXT: evlddx 30, 30, 7
+; CHECK-NEXT: efdsub 3, 18, 26
+; CHECK-NEXT: add 10, 12, 10
+; CHECK-NEXT: evstdd 3, 152(1) # 8-byte Folded Spill
+; CHECK-NEXT: mulli 18, 5, 240
+; CHECK-NEXT: efdneg 3, 19
+; CHECK-NEXT: add 18, 12, 18
+; CHECK-NEXT: evstdd 3, 104(1) # 8-byte Folded Spill
+; CHECK-NEXT: evlddx 16, 18, 7
+; CHECK-NEXT: evlddx 18, 29, 7
+; CHECK-NEXT: efdsub 3, 19, 31
+; CHECK-NEXT: efdsub 6, 30, 15
+; CHECK-NEXT: evlddx 29, 8, 7
+; CHECK-NEXT: lwz 8, 140(1) # 4-byte Folded Reload
+; CHECK-NEXT: efdadd 30, 30, 15
+; CHECK-NEXT: evstdd 3, 96(1) # 8-byte Folded Spill
+; CHECK-NEXT: evstdd 6, 160(1) # 8-byte Folded Spill
+; CHECK-NEXT: add 6, 12, 9
+; CHECK-NEXT: lwz 9, 116(1) # 4-byte Folded Reload
+; CHECK-NEXT: efdsub 3, 16, 18
+; CHECK-NEXT: add 8, 12, 8
+; CHECK-NEXT: evlddx 6, 6, 7
+; CHECK-NEXT: evlddx 8, 8, 7
+; CHECK-NEXT: evstdd 3, 80(1) # 8-byte Folded Spill
+; CHECK-NEXT: add 9, 12, 9
+; CHECK-NEXT: efdsub 3, 20, 17
+; CHECK-NEXT: evlddx 9, 9, 7
+; CHECK-NEXT: evstdd 3, 120(1) # 8-byte Folded Spill
+; CHECK-NEXT: efdsub 3, 23, 22
+; CHECK-NEXT: efdadd 23, 23, 22
+; CHECK-NEXT: efdadd 8, 8, 9
+; CHECK-NEXT: evstdd 3, 72(1) # 8-byte Folded Spill
+; CHECK-NEXT: efdsub 3, 21, 27
+; CHECK-NEXT: efdadd 27, 21, 27
+; CHECK-NEXT: efdadd 9, 23, 27
+; CHECK-NEXT: evldd 27, 40(1) # 8-byte Folded Reload
+; CHECK-NEXT: evstdd 3, 128(1) # 8-byte Folded Spill
+; CHECK-NEXT: mulli 3, 5, 72
+; CHECK-NEXT: mulli 25, 5, 200
+; CHECK-NEXT: add 5, 12, 0
+; CHECK-NEXT: add 3, 12, 3
+; CHECK-NEXT: evlddx 5, 5, 7
+; CHECK-NEXT: efdsub 14, 6, 4
+; CHECK-NEXT: efdadd 4, 6, 4
+; CHECK-NEXT: evlddx 6, 10, 7
+; CHECK-NEXT: evlddx 3, 3, 7
+; CHECK-NEXT: efdadd 4, 8, 4
+; CHECK-NEXT: efdadd 8, 16, 18
+; CHECK-NEXT: add 25, 12, 25
+; CHECK-NEXT: evstdd 14, 232(1) # 8-byte Folded Spill
+; CHECK-NEXT: evlddx 25, 25, 7
+; CHECK-NEXT: efdadd 5, 29, 5
+; CHECK-NEXT: efdsub 26, 24, 28
+; CHECK-NEXT: efdadd 28, 24, 28
+; CHECK-NEXT: efdadd 6, 19, 6
+; CHECK-NEXT: efdadd 10, 30, 28
+; CHECK-NEXT: efdadd 6, 6, 31
+; CHECK-NEXT: lwz 28, 68(1) # 4-byte Folded Reload
+; CHECK-NEXT: efdadd 29, 3, 25
+; CHECK-NEXT: efdadd 5, 5, 29
+; CHECK-NEXT: efdsub 0, 3, 25
+; CHECK-NEXT: lwz 3, 64(1) # 4-byte Folded Reload
+; CHECK-NEXT: efdadd 30, 5, 4
+; CHECK-NEXT: efdadd 4, 9, 10
+; CHECK-NEXT: efdadd 9, 20, 17
+; CHECK-NEXT: evldd 10, 72(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdadd 8, 8, 9
+; CHECK-NEXT: evldd 9, 80(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdadd 6, 6, 8
+; CHECK-NEXT: evldd 8, 144(1) # 8-byte Folded Reload
+; CHECK-NEXT: evldd 25, 160(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 5, 30, 4
+; CHECK-NEXT: efdadd 4, 4, 30
+; CHECK-NEXT: evldd 30, 120(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 29, 6, 4
+; CHECK-NEXT: evldd 4, 216(1) # 8-byte Folded Reload
+; CHECK-NEXT: evldd 6, 104(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 8, 9, 8
+; CHECK-NEXT: evldd 9, 208(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 4, 6, 4
+; CHECK-NEXT: add 6, 3, 11
+; CHECK-NEXT: evldd 11, 88(1) # 8-byte Folded Reload
+; CHECK-NEXT: evlddx 6, 6, 7
+; CHECK-NEXT: efdsub 9, 10, 9
+; CHECK-NEXT: evldd 10, 96(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 6, 0, 6
+; CHECK-NEXT: efdadd 10, 11, 10
+; CHECK-NEXT: evldd 11, 184(1) # 8-byte Folded Reload
+; CHECK-NEXT: evldd 0, 168(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdmul 10, 10, 27
+; CHECK-NEXT: efdadd 11, 11, 0
+; CHECK-NEXT: evldd 0, 240(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdmul 11, 11, 27
+; CHECK-NEXT: efdsub 10, 10, 0
+; CHECK-NEXT: evldd 0, 176(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 6, 11, 6
+; CHECK-NEXT: evldd 11, 200(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdadd 0, 0, 30
+; CHECK-NEXT: evldd 30, 192(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdmul 8, 8, 27
+; CHECK-NEXT: efdsub 11, 25, 11
+; CHECK-NEXT: efdsub 8, 8, 0
+; CHECK-NEXT: efdsub 0, 30, 26
+; CHECK-NEXT: efdadd 30, 30, 26
+; CHECK-NEXT: evldd 26, 128(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdadd 11, 11, 30
+; CHECK-NEXT: lwz 30, 252(1) # 4-byte Folded Reload
+; CHECK-NEXT: efdmul 11, 11, 27
+; CHECK-NEXT: efdadd 0, 25, 0
+; CHECK-NEXT: efdmul 0, 0, 27
+; CHECK-NEXT: efdsub 9, 11, 9
+; CHECK-NEXT: evldd 11, 224(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdadd 11, 11, 26
+; CHECK-NEXT: evldd 26, 232(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 11, 0, 11
+; CHECK-NEXT: evldd 0, 24(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdmul 4, 4, 0
+; CHECK-NEXT: efdsub 9, 9, 11
+; CHECK-NEXT: efdmul 6, 6, 0
+; CHECK-NEXT: evldd 0, 152(1) # 8-byte Folded Reload
+; CHECK-NEXT: efdsub 4, 8, 4
+; CHECK-NEXT: efdmul 8, 9, 27
+; CHECK-NEXT: efdmul 9, 4, 27
+; CHECK-NEXT: efdadd 8, 8, 6
+; CHECK-NEXT: efdsub 5, 0, 5
+; CHECK-NEXT: li 0, g at l
+; CHECK-NEXT: efdadd 9, 10, 9
+; CHECK-NEXT: efdmul 8, 8, 27
+; CHECK-NEXT: lis 27, g at ha
+; CHECK-NEXT: evstddx 26, 27, 0
+; CHECK-NEXT: lwz 0, 52(1) # 4-byte Folded Reload
+; CHECK-NEXT: evstddx 29, 30, 0
+; CHECK-NEXT: evstdd 5, 0(28)
+; CHECK-NEXT: efdsub 5, 8, 9
+; CHECK-NEXT: li 8, j at l
+; CHECK-NEXT: lis 9, j at ha
+; CHECK-NEXT: evstddx 6, 9, 8
+; CHECK-NEXT: li 6, f at l
+; CHECK-NEXT: lis 8, f at ha
+; CHECK-NEXT: evstddx 11, 8, 6
+; CHECK-NEXT: li 6, h at l
+; CHECK-NEXT: lis 8, h at ha
+; CHECK-NEXT: evstddx 4, 8, 6
+; CHECK-NEXT: lwz 4, 56(1) # 4-byte Folded Reload
+; CHECK-NEXT: evstddx 5, 30, 4
+; CHECK-NEXT: lwz 4, 60(1) # 4-byte Folded Reload
+; CHECK-NEXT: lwz 5, 48(1) # 4-byte Folded Reload
+; CHECK-NEXT: add 30, 30, 4
+; CHECK-NEXT: lwz 4, 36(1) # 4-byte Folded Reload
+; CHECK-NEXT: add 7, 7, 4
+; CHECK-NEXT: bdnz .LBB0_2
+; CHECK-NEXT: # %bb.3: # %for.cond.for.end_crit_edge
+; CHECK-NEXT: add 3, 12, 7
+; CHECK-NEXT: lis 4, d at ha
+; CHECK-NEXT: lis 5, e at ha
+; CHECK-NEXT: stw 3, d at l(4)
+; CHECK-NEXT: stw 30, e at l(5)
+; CHECK-NEXT: .LBB0_4: # %for.end
+; CHECK-NEXT: li 3, 392
+; CHECK-NEXT: evlddx 31, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 384
+; CHECK-NEXT: lwz 31, 476(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 30, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 376
+; CHECK-NEXT: lwz 30, 472(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 29, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 368
+; CHECK-NEXT: lwz 29, 468(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 28, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 360
+; CHECK-NEXT: lwz 28, 464(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 27, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 352
+; CHECK-NEXT: lwz 27, 460(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 26, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 344
+; CHECK-NEXT: lwz 26, 456(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 25, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 336
+; CHECK-NEXT: lwz 25, 452(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 24, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 328
+; CHECK-NEXT: lwz 24, 448(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 23, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 320
+; CHECK-NEXT: lwz 23, 444(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 22, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 312
+; CHECK-NEXT: lwz 22, 440(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 21, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 304
+; CHECK-NEXT: lwz 21, 436(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 20, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 296
+; CHECK-NEXT: lwz 20, 432(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 19, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 288
+; CHECK-NEXT: lwz 19, 428(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 18, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 280
+; CHECK-NEXT: lwz 18, 424(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 17, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 272
+; CHECK-NEXT: lwz 17, 420(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 16, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 264
+; CHECK-NEXT: lwz 16, 416(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 15, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: li 3, 256
+; CHECK-NEXT: lwz 15, 412(1) # 4-byte Folded Reload
+; CHECK-NEXT: evlddx 14, 1, 3 # 8-byte Folded Reload
+; CHECK-NEXT: lwz 14, 408(1) # 4-byte Folded Reload
+; CHECK-NEXT: addi 1, 1, 480
+; CHECK-NEXT: blr
+entry:
+ %cmp388 = icmp sgt i32 %n, 0
+ br i1 %cmp388, label %for.body.lr.ph, label %for.end
+
+for.body.lr.ph: ; preds = %entry
+ %0 = load i32, i32* @c, align 4, !tbaa !3
+ %conv = sitofp i32 %0 to double
+ %mul174 = mul nsw i32 %ab, 3
+ %1 = load i32, i32* @a, align 4, !tbaa !3
+ %d.promoted = load double*, double** @d, align 4, !tbaa !7
+ %e.promoted = load double*, double** @e, align 4, !tbaa !7
+ br label %for.body
+
+for.body: ; preds = %for.body.lr.ph, %for.body
+ %add.ptr178393 = phi double* [ %e.promoted, %for.body.lr.ph ], [ %add.ptr178, %for.body ]
+ %add.ptr177392 = phi double* [ %d.promoted, %for.body.lr.ph ], [ %add.ptr177, %for.body ]
+ %l.addr.0391 = phi double* [ %l, %for.body.lr.ph ], [ %add.ptr, %for.body ]
+ %aa.addr.0390 = phi i32 [ %aa, %for.body.lr.ph ], [ %1, %for.body ]
+ %i.0389 = phi i32 [ %n, %for.body.lr.ph ], [ %sub176, %for.body ]
+ %2 = load double, double* %add.ptr177392, align 8, !tbaa !9
+ %3 = load double, double* %l.addr.0391, align 8, !tbaa !9
+ %mul = mul nsw i32 %aa.addr.0390, 24
+ %arrayidx2 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul
+ %4 = load double, double* %arrayidx2, align 8, !tbaa !9
+ %sub = fsub double %3, %4
+ %arrayidx4 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul
+ %5 = load double, double* %arrayidx4, align 8, !tbaa !9
+ %add = fadd double %2, %5
+ %mul5 = mul nsw i32 %aa.addr.0390, 12
+ %arrayidx6 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul5
+ %6 = load double, double* %arrayidx6, align 8, !tbaa !9
+ %mul8 = shl nsw i32 %aa.addr.0390, 1
+ %arrayidx9 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul8
+ %7 = load double, double* %arrayidx9, align 8, !tbaa !9
+ %sub10 = fsub double %2, %7
+ %add11 = fadd double %6, %sub10
+ %fneg = fneg double %2
+ %mul13 = mul nsw i32 %aa.addr.0390, 10
+ %arrayidx14 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul13
+ %8 = load double, double* %arrayidx14, align 8, !tbaa !9
+ %sub16 = fsub double %8, %3
+ %sub17 = fsub double %fneg, %sub16
+ %mul18 = fmul double %sub17, 0.000000e+00
+ %mul20 = mul nsw i32 %aa.addr.0390, 14
+ %arrayidx21 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul20
+ %9 = load double, double* %arrayidx21, align 8, !tbaa !9
+ %sub22 = fsub double %3, %9
+ %mul23 = mul nsw i32 %aa.addr.0390, 30
+ %arrayidx24 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul23
+ %10 = load double, double* %arrayidx24, align 8, !tbaa !9
+ %arrayidx26 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul20
+ %11 = load double, double* %arrayidx26, align 8, !tbaa !9
+ %add27 = fadd double %10, %11
+ %sub28 = fsub double %10, %11
+ %mul30 = mul nsw i32 %aa.addr.0390, 22
+ %arrayidx31 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul30
+ %12 = load double, double* %arrayidx31, align 8, !tbaa !9
+ %sub32 = fsub double %3, %12
+ %mul33 = mul nsw i32 %aa.addr.0390, 6
+ %arrayidx34 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul33
+ %13 = load double, double* %arrayidx34, align 8, !tbaa !9
+ %arrayidx36 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul30
+ %14 = load double, double* %arrayidx36, align 8, !tbaa !9
+ %add37 = fadd double %13, %14
+ %sub38 = fsub double %13, %14
+ %add39 = fadd double %add27, %add37
+ %sub40 = fsub double %sub28, %sub32
+ %add41 = fadd double %sub22, %sub38
+ %mul43 = fmul double %sub40, %conv
+ %sub44 = fsub double %mul43, %add41
+ %mul45 = mul nsw i32 %aa.addr.0390, 31
+ %arrayidx46 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul45
+ %15 = load double, double* %arrayidx46, align 8, !tbaa !9
+ %mul47 = mul nsw i32 %aa.addr.0390, 15
+ %arrayidx48 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul47
+ %16 = load double, double* %arrayidx48, align 8, !tbaa !9
+ %sub49 = fsub double %15, %16
+ %arrayidx51 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul45
+ %17 = load double, double* %arrayidx51, align 8, !tbaa !9
+ %arrayidx53 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul47
+ %18 = load double, double* %arrayidx53, align 8, !tbaa !9
+ %sub54 = fsub double %17, %18
+ %add55 = fadd double %17, %18
+ %mul56 = mul nsw i32 %aa.addr.0390, 7
+ %arrayidx57 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul56
+ %19 = load double, double* %arrayidx57, align 8, !tbaa !9
+ %mul58 = mul nsw i32 %aa.addr.0390, 23
+ %arrayidx59 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul58
+ %20 = load double, double* %arrayidx59, align 8, !tbaa !9
+ %sub60 = fsub double %19, %20
+ %arrayidx62 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul56
+ %21 = load double, double* %arrayidx62, align 8, !tbaa !9
+ %arrayidx64 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul58
+ %22 = load double, double* %arrayidx64, align 8, !tbaa !9
+ %sub65 = fsub double %21, %22
+ %add66 = fadd double %21, %22
+ %mul67 = mul nsw i32 %aa.addr.0390, 3
+ %arrayidx68 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul67
+ %23 = load double, double* %arrayidx68, align 8, !tbaa !9
+ %mul69 = mul nsw i32 %aa.addr.0390, 19
+ %arrayidx70 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul69
+ %24 = load double, double* %arrayidx70, align 8, !tbaa !9
+ %sub71 = fsub double %23, %24
+ %arrayidx73 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul67
+ %25 = load double, double* %arrayidx73, align 8, !tbaa !9
+ %arrayidx75 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul69
+ %26 = load double, double* %arrayidx75, align 8, !tbaa !9
+ %sub76 = fsub double %25, %26
+ %add77 = fadd double %25, %26
+ %mul78 = mul nsw i32 %aa.addr.0390, 27
+ %arrayidx79 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul78
+ %27 = load double, double* %arrayidx79, align 8, !tbaa !9
+ %mul80 = mul nsw i32 %aa.addr.0390, 11
+ %arrayidx81 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul80
+ %28 = load double, double* %arrayidx81, align 8, !tbaa !9
+ %sub82 = fsub double %27, %28
+ %arrayidx84 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul78
+ %29 = load double, double* %arrayidx84, align 8, !tbaa !9
+ %arrayidx86 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul80
+ %30 = load double, double* %arrayidx86, align 8, !tbaa !9
+ %sub87 = fsub double %29, %30
+ %add88 = fadd double %29, %30
+ %sub89 = fsub double %sub54, %sub60
+ %add90 = fadd double %sub49, %sub65
+ %add91 = fadd double %add55, %add66
+ %add92 = fadd double %add77, %add88
+ %sub93 = fsub double %sub76, %sub71
+ %add94 = fadd double %sub82, %sub87
+ %add95 = fadd double %sub93, %add94
+ %sub96 = fsub double %sub82, %sub87
+ %add97 = fadd double %sub76, %sub96
+ %arrayidx98 = getelementptr inbounds double, double* %l.addr.0391, i32 %aa.addr.0390
+ %31 = load double, double* %arrayidx98, align 8, !tbaa !9
+ %arrayidx100 = getelementptr inbounds double, double* %add.ptr177392, i32 %aa.addr.0390
+ %32 = load double, double* %arrayidx100, align 8, !tbaa !9
+ %mul101 = mul nsw i32 %aa.addr.0390, 17
+ %arrayidx102 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul101
+ %33 = load double, double* %arrayidx102, align 8, !tbaa !9
+ %add103 = fadd double %32, %33
+ %mul104 = mul nsw i32 %aa.addr.0390, 9
+ %arrayidx105 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul104
+ %34 = load double, double* %arrayidx105, align 8, !tbaa !9
+ %mul106 = mul nsw i32 %aa.addr.0390, 25
+ %arrayidx107 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul106
+ %35 = load double, double* %arrayidx107, align 8, !tbaa !9
+ %sub108 = fsub double %34, %35
+ %add109 = fadd double %34, %35
+ %mul110 = mul nsw i32 %aa.addr.0390, 5
+ %arrayidx111 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul110
+ %36 = load double, double* %arrayidx111, align 8, !tbaa !9
+ %mul112 = mul nsw i32 %aa.addr.0390, 21
+ %arrayidx113 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul112
+ %37 = load double, double* %arrayidx113, align 8, !tbaa !9
+ %sub114 = fsub double %36, %37
+ %arrayidx116 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul110
+ %38 = load double, double* %arrayidx116, align 8, !tbaa !9
+ %arrayidx118 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul112
+ %39 = load double, double* %arrayidx118, align 8, !tbaa !9
+ %add119 = fadd double %38, %39
+ %mul120 = mul nsw i32 %aa.addr.0390, 29
+ %arrayidx121 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul120
+ %40 = load double, double* %arrayidx121, align 8, !tbaa !9
+ %mul122 = mul nsw i32 %aa.addr.0390, 13
+ %arrayidx123 = getelementptr inbounds double, double* %l.addr.0391, i32 %mul122
+ %41 = load double, double* %arrayidx123, align 8, !tbaa !9
+ %sub124 = fsub double %40, %41
+ %arrayidx126 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul120
+ %42 = load double, double* %arrayidx126, align 8, !tbaa !9
+ %arrayidx128 = getelementptr inbounds double, double* %add.ptr177392, i32 %mul122
+ %43 = load double, double* %arrayidx128, align 8, !tbaa !9
+ %sub129 = fsub double %42, %43
+ store double %sub129, double* @g, align 8, !tbaa !9
+ %add130 = fadd double %42, %43
+ %add131 = fsub double %sub108, %31
+ %add132 = fadd double %add103, %add109
+ %add133 = fadd double %add119, %add130
+ %add134 = fadd double %sub114, %sub124
+ %add135 = fadd double %4, %6
+ %add136 = fadd double %8, %9
+ %sub137 = fsub double %add135, %add136
+ %add138 = fadd double %add132, %add133
+ %add139 = fadd double %add91, %add92
+ %sub140 = fsub double %add138, %add139
+ %add141 = fadd double %add139, %add138
+ %add142 = fadd double %add, %7
+ %add143 = fadd double %add142, %add39
+ %sub144 = fsub double %add143, %add141
+ %arrayidx145 = getelementptr inbounds double, double* %add.ptr178393, i32 %ab
+ store double %sub144, double* %arrayidx145, align 8, !tbaa !9
+ %sub146 = fsub double %sub137, %sub140
+ store double %sub146, double* %m, align 8, !tbaa !9
+ %mul150 = fmul double %add11, %conv
+ %sub151 = fsub double %mul150, %sub
+ %sub153 = fsub double %sub44, %mul18
+ store double %sub153, double* @h, align 8, !tbaa !9
+ %mul155 = fmul double %sub153, %conv
+ %sub156 = fadd double %sub151, %mul155
+ %mul158 = fmul double %add134, %conv
+ %sub159 = fsub double %mul158, %add131
+ %mul160 = fmul double %sub159, 0.000000e+00
+ store double %mul160, double* @j, align 8, !tbaa !9
+ %mul162 = fmul double %add95, %conv
+ %sub163 = fsub double %mul162, %sub89
+ %mul165 = fmul double %add97, %conv
+ %sub166 = fsub double %mul165, %add90
+ store double %sub166, double* @f, align 8, !tbaa !9
+ %sub168 = fsub double %sub163, %sub166
+ %mul169 = fmul double %sub168, %conv
+ %add170 = fadd double %mul169, %mul160
+ %mul172 = fmul double %add170, %conv
+ %sub173 = fsub double %mul172, %sub156
+ %arrayidx175 = getelementptr inbounds double, double* %add.ptr178393, i32 %mul174
+ store double %sub173, double* %arrayidx175, align 8, !tbaa !9
+ %sub176 = add nsw i32 %i.0389, -1
+ %add.ptr = getelementptr inbounds double, double* %l.addr.0391, i32 %ac
+ %add.ptr177 = getelementptr inbounds double, double* %add.ptr177392, i32 %ac
+ %add.ptr178 = getelementptr inbounds double, double* %add.ptr178393, i32 %ad
+ %cmp = icmp sgt i32 %i.0389, 1
+ br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge
+
+for.cond.for.end_crit_edge: ; preds = %for.body
+ store double* %add.ptr177, double** @d, align 4, !tbaa !7
+ store double* %add.ptr178, double** @e, align 4, !tbaa !7
+ br label %for.end
+
+for.end: ; preds = %for.cond.for.end_crit_edge, %entry
+ ret i32 undef
+}
+
+attributes #0 = { nofree norecurse nounwind sspstrong uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="e500" "target-features"="+spe,-altivec,-bpermd,-crypto,-direct-move,-extdiv,-htm,-power8-vector,-power9-vector,-qpx,-vsx" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!llvm.module.flags = !{!0, !1}
+!llvm.ident = !{!2}
+
+!0 = !{i32 1, !"wchar_size", i32 4}
+!1 = !{i32 7, !"PIC Level", i32 2}
+!2 = !{!"clang version 11.0.0 (https://github.com/llvm/llvm-project.git 48571b6ce89a12a323c8632cea05afd0c91aeb32)"}
+!3 = !{!4, !4, i64 0}
+!4 = !{!"int", !5, i64 0}
+!5 = !{!"omnipotent char", !6, i64 0}
+!6 = !{!"Simple C/C++ TBAA"}
+!7 = !{!8, !8, i64 0}
+!8 = !{!"any pointer", !5, i64 0}
+!9 = !{!10, !10, i64 0}
+!10 = !{!"double", !5, i64 0}
More information about the llvm-branch-commits
mailing list