1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O2 -march=hexagon < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; CHECK: mpyi 3*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mpyi 4*9880d681SAndroid Build Coastguard Worker; The mpyis from the two GEPs should be commoned out. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-i64:64-a:0-v32:32-n16:32" 7*9880d681SAndroid Build Coastguard Workertarget triple = "hexagon-unknown--elf" 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker%struct.s_t = type { %struct.anon, i32 } 10*9880d681SAndroid Build Coastguard Worker%struct.anon = type { i32, [5 x i32] } 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker@g = common global [100 x %struct.s_t] zeroinitializer, align 8 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 15*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32 %x) #0 { 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %x, 90 18*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.else 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %entry 21*9880d681SAndroid Build Coastguard Worker %arrayidx1 = getelementptr inbounds [100 x %struct.s_t], [100 x %struct.s_t]* @g, i32 0, i32 %x, i32 0, i32 1, i32 2 22*9880d681SAndroid Build Coastguard Worker tail call void @bar(i32* %arrayidx1) #0 23*9880d681SAndroid Build Coastguard Worker br label %if.end 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerif.else: ; preds = %entry 26*9880d681SAndroid Build Coastguard Worker %arrayidx5 = getelementptr inbounds [100 x %struct.s_t], [100 x %struct.s_t]* @g, i32 0, i32 %x, i32 0, i32 1, i32 3 27*9880d681SAndroid Build Coastguard Worker tail call void @bar(i32* %arrayidx5) #0 28*9880d681SAndroid Build Coastguard Worker br label %if.end 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %if.else, %if.then 31*9880d681SAndroid Build Coastguard Worker ret void 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdeclare void @bar(i32*) #0 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 37*9880d681SAndroid Build Coastguard Worker 38