1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Check that we don't generate an invalid packet with too many instructions 4*9880d681SAndroid Build Coastguard Worker; due to a store that has a must-extend operand. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK: CuSuiteAdd.exit.us 7*9880d681SAndroid Build Coastguard Worker; CHECK: { 8*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: call abort 9*9880d681SAndroid Build Coastguard Worker; CHECK: memw(##0) 10*9880d681SAndroid Build Coastguard Worker; CHECK: memw(r{{[0-9+]}}{{ *}}<<{{ *}}#2{{ *}}+{{ *}}##4) 11*9880d681SAndroid Build Coastguard Worker; CHECK: } 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker%struct.CuTest.1.28.31.37.40.43.52.55.67.85.111 = type { i8*, void (%struct.CuTest.1.28.31.37.40.43.52.55.67.85.111*)*, i32, i32, i8*, [23 x i32]* } 14*9880d681SAndroid Build Coastguard Worker%struct.CuSuite.2.29.32.38.41.44.53.56.68.86.112 = type { i32, [1024 x %struct.CuTest.1.28.31.37.40.43.52.55.67.85.111*], i32 } 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker@__func__.CuSuiteAdd = external unnamed_addr constant [11 x i8], align 8 17*9880d681SAndroid Build Coastguard Worker@.str24 = external unnamed_addr constant [140 x i8], align 8 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdeclare void @_Assert() 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine void @CuSuiteAddSuite() nounwind { 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker br i1 undef, label %for.body.us, label %for.end 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerfor.body.us: ; preds = %entry 26*9880d681SAndroid Build Coastguard Worker %0 = load %struct.CuTest.1.28.31.37.40.43.52.55.67.85.111*, %struct.CuTest.1.28.31.37.40.43.52.55.67.85.111** null, align 4 27*9880d681SAndroid Build Coastguard Worker %1 = load i32, i32* undef, align 4 28*9880d681SAndroid Build Coastguard Worker %cmp.i.us = icmp slt i32 %1, 1024 29*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i.us, label %CuSuiteAdd.exit.us, label %cond.false6.i.us 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workercond.false6.i.us: ; preds = %for.body.us 32*9880d681SAndroid Build Coastguard Worker tail call void @_Assert() nounwind 33*9880d681SAndroid Build Coastguard Worker unreachable 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard WorkerCuSuiteAdd.exit.us: ; preds = %for.body.us 36*9880d681SAndroid Build Coastguard Worker %arrayidx.i.us = getelementptr inbounds %struct.CuSuite.2.29.32.38.41.44.53.56.68.86.112, %struct.CuSuite.2.29.32.38.41.44.53.56.68.86.112* null, i32 0, i32 1, i32 %1 37*9880d681SAndroid Build Coastguard Worker store %struct.CuTest.1.28.31.37.40.43.52.55.67.85.111* %0, %struct.CuTest.1.28.31.37.40.43.52.55.67.85.111** %arrayidx.i.us, align 4 38*9880d681SAndroid Build Coastguard Worker call void @llvm.trap() 39*9880d681SAndroid Build Coastguard Worker unreachable 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerfor.end: ; preds = %entry 42*9880d681SAndroid Build Coastguard Worker ret void 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.trap() noreturn nounwind 46