1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm64-apple-ios | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Can't fold the increment by 1<<12 into a post-increment load 4*9880d681SAndroid Build Coastguard Worker; rdar://10301335 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@test_data = common global i32 0, align 4 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine void @t() nounwind ssp { 9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t: 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker br label %for.body 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerfor.body: 14*9880d681SAndroid Build Coastguard Worker; CHECK: for.body 15*9880d681SAndroid Build Coastguard Worker; CHECK: ldr w{{[0-9]+}}, [x{{[0-9]+}}, x{{[0-9]+}}] 16*9880d681SAndroid Build Coastguard Worker; CHECK: add x[[REG:[0-9]+]], 17*9880d681SAndroid Build Coastguard Worker; CHECK: x[[REG]], #1, lsl #12 18*9880d681SAndroid Build Coastguard Worker %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] 19*9880d681SAndroid Build Coastguard Worker %0 = shl nsw i64 %indvars.iv, 12 20*9880d681SAndroid Build Coastguard Worker %add = add nsw i64 %0, 34628173824 21*9880d681SAndroid Build Coastguard Worker %1 = inttoptr i64 %add to i32* 22*9880d681SAndroid Build Coastguard Worker %2 = load volatile i32, i32* %1, align 4096 23*9880d681SAndroid Build Coastguard Worker store volatile i32 %2, i32* @test_data, align 4 24*9880d681SAndroid Build Coastguard Worker %indvars.iv.next = add i64 %indvars.iv, 1 25*9880d681SAndroid Build Coastguard Worker %lftr.wideiv = trunc i64 %indvars.iv.next to i32 26*9880d681SAndroid Build Coastguard Worker %exitcond = icmp eq i32 %lftr.wideiv, 200 27*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %for.end, label %for.body 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerfor.end: 30*9880d681SAndroid Build Coastguard Worker ret void 31*9880d681SAndroid Build Coastguard Worker} 32