1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Ensure source scheduling is working 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32* %a) { 6*9880d681SAndroid Build Coastguard Worker; CHECK: .func foo 7*9880d681SAndroid Build Coastguard Worker; CHECK: ld.u32 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ld.u32 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ld.u32 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ld.u32 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add.s32 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add.s32 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add.s32 14*9880d681SAndroid Build Coastguard Worker %ptr0 = getelementptr i32, i32* %a, i32 0 15*9880d681SAndroid Build Coastguard Worker %val0 = load i32, i32* %ptr0 16*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr i32, i32* %a, i32 1 17*9880d681SAndroid Build Coastguard Worker %val1 = load i32, i32* %ptr1 18*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr i32, i32* %a, i32 2 19*9880d681SAndroid Build Coastguard Worker %val2 = load i32, i32* %ptr2 20*9880d681SAndroid Build Coastguard Worker %ptr3 = getelementptr i32, i32* %a, i32 3 21*9880d681SAndroid Build Coastguard Worker %val3 = load i32, i32* %ptr3 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker %t0 = add i32 %val0, %val1 24*9880d681SAndroid Build Coastguard Worker %t1 = add i32 %t0, %val2 25*9880d681SAndroid Build Coastguard Worker %t2 = add i32 %t1, %val3 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker store i32 %t2, i32* %a 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker ret void 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32