1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=sparc < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@g = common global [32 x i32] zeroinitializer, align 16 4*9880d681SAndroid Build Coastguard Worker@h = common global [16 x i64] zeroinitializer, align 16 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker;; Ensures that we don't use registers which are supposed to be reserved. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: use_all_i32_regs: 9*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g0 10*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g1 11*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g5 12*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g6 13*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g7 14*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %o6 15*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i6 16*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i7 17*9880d681SAndroid Build Coastguard Worker; CHECK: ret 18*9880d681SAndroid Build Coastguard Workerdefine void @use_all_i32_regs() { 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker %0 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 0), align 16 21*9880d681SAndroid Build Coastguard Worker %1 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 1), align 4 22*9880d681SAndroid Build Coastguard Worker %2 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 2), align 8 23*9880d681SAndroid Build Coastguard Worker %3 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 3), align 4 24*9880d681SAndroid Build Coastguard Worker %4 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 4), align 16 25*9880d681SAndroid Build Coastguard Worker %5 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 5), align 4 26*9880d681SAndroid Build Coastguard Worker %6 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 6), align 8 27*9880d681SAndroid Build Coastguard Worker %7 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 7), align 4 28*9880d681SAndroid Build Coastguard Worker %8 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 8), align 16 29*9880d681SAndroid Build Coastguard Worker %9 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 9), align 4 30*9880d681SAndroid Build Coastguard Worker %10 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 10), align 8 31*9880d681SAndroid Build Coastguard Worker %11 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 11), align 4 32*9880d681SAndroid Build Coastguard Worker %12 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 12), align 16 33*9880d681SAndroid Build Coastguard Worker %13 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 13), align 4 34*9880d681SAndroid Build Coastguard Worker %14 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 14), align 8 35*9880d681SAndroid Build Coastguard Worker %15 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 15), align 4 36*9880d681SAndroid Build Coastguard Worker %16 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 16), align 16 37*9880d681SAndroid Build Coastguard Worker %17 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 17), align 4 38*9880d681SAndroid Build Coastguard Worker %18 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 18), align 8 39*9880d681SAndroid Build Coastguard Worker %19 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 19), align 4 40*9880d681SAndroid Build Coastguard Worker %20 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 20), align 16 41*9880d681SAndroid Build Coastguard Worker %21 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 21), align 4 42*9880d681SAndroid Build Coastguard Worker %22 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 22), align 8 43*9880d681SAndroid Build Coastguard Worker %23 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 23), align 4 44*9880d681SAndroid Build Coastguard Worker %24 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 24), align 16 45*9880d681SAndroid Build Coastguard Worker %25 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 25), align 4 46*9880d681SAndroid Build Coastguard Worker %26 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 26), align 8 47*9880d681SAndroid Build Coastguard Worker %27 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 27), align 4 48*9880d681SAndroid Build Coastguard Worker %28 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 28), align 16 49*9880d681SAndroid Build Coastguard Worker %29 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 29), align 4 50*9880d681SAndroid Build Coastguard Worker %30 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 30), align 8 51*9880d681SAndroid Build Coastguard Worker %31 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 31), align 4 52*9880d681SAndroid Build Coastguard Worker store volatile i32 %1, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 0), align 16 53*9880d681SAndroid Build Coastguard Worker store volatile i32 %2, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 1), align 4 54*9880d681SAndroid Build Coastguard Worker store volatile i32 %3, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 2), align 8 55*9880d681SAndroid Build Coastguard Worker store volatile i32 %4, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 3), align 4 56*9880d681SAndroid Build Coastguard Worker store volatile i32 %5, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 4), align 16 57*9880d681SAndroid Build Coastguard Worker store volatile i32 %6, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 5), align 4 58*9880d681SAndroid Build Coastguard Worker store volatile i32 %7, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 6), align 8 59*9880d681SAndroid Build Coastguard Worker store volatile i32 %8, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 7), align 4 60*9880d681SAndroid Build Coastguard Worker store volatile i32 %9, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 8), align 16 61*9880d681SAndroid Build Coastguard Worker store volatile i32 %10, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 9), align 4 62*9880d681SAndroid Build Coastguard Worker store volatile i32 %11, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 10), align 8 63*9880d681SAndroid Build Coastguard Worker store volatile i32 %12, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 11), align 4 64*9880d681SAndroid Build Coastguard Worker store volatile i32 %13, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 12), align 16 65*9880d681SAndroid Build Coastguard Worker store volatile i32 %14, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 13), align 4 66*9880d681SAndroid Build Coastguard Worker store volatile i32 %15, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 14), align 8 67*9880d681SAndroid Build Coastguard Worker store volatile i32 %16, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 15), align 4 68*9880d681SAndroid Build Coastguard Worker store volatile i32 %17, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 16), align 16 69*9880d681SAndroid Build Coastguard Worker store volatile i32 %18, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 17), align 4 70*9880d681SAndroid Build Coastguard Worker store volatile i32 %19, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 18), align 8 71*9880d681SAndroid Build Coastguard Worker store volatile i32 %20, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 19), align 4 72*9880d681SAndroid Build Coastguard Worker store volatile i32 %21, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 20), align 16 73*9880d681SAndroid Build Coastguard Worker store volatile i32 %22, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 21), align 4 74*9880d681SAndroid Build Coastguard Worker store volatile i32 %23, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 22), align 8 75*9880d681SAndroid Build Coastguard Worker store volatile i32 %24, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 23), align 4 76*9880d681SAndroid Build Coastguard Worker store volatile i32 %25, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 24), align 16 77*9880d681SAndroid Build Coastguard Worker store volatile i32 %26, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 25), align 4 78*9880d681SAndroid Build Coastguard Worker store volatile i32 %27, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 26), align 8 79*9880d681SAndroid Build Coastguard Worker store volatile i32 %28, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 27), align 4 80*9880d681SAndroid Build Coastguard Worker store volatile i32 %29, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 28), align 16 81*9880d681SAndroid Build Coastguard Worker store volatile i32 %30, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 29), align 4 82*9880d681SAndroid Build Coastguard Worker store volatile i32 %31, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 30), align 8 83*9880d681SAndroid Build Coastguard Worker store volatile i32 %0, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 31), align 4 84*9880d681SAndroid Build Coastguard Worker ret void 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: use_all_i64_regs: 89*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g0 90*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g1 91*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g4 92*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g5 93*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g6 94*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g7 95*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %o6 96*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %o7 97*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i6 98*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i7 99*9880d681SAndroid Build Coastguard Worker; CHECK: ret 100*9880d681SAndroid Build Coastguard Workerdefine void @use_all_i64_regs() { 101*9880d681SAndroid Build Coastguard Workerentry: 102*9880d681SAndroid Build Coastguard Worker %0 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 0), align 16 103*9880d681SAndroid Build Coastguard Worker %1 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 1), align 4 104*9880d681SAndroid Build Coastguard Worker %2 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 2), align 8 105*9880d681SAndroid Build Coastguard Worker %3 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 3), align 4 106*9880d681SAndroid Build Coastguard Worker %4 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 4), align 16 107*9880d681SAndroid Build Coastguard Worker %5 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 5), align 4 108*9880d681SAndroid Build Coastguard Worker %6 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 6), align 8 109*9880d681SAndroid Build Coastguard Worker %7 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 7), align 4 110*9880d681SAndroid Build Coastguard Worker %8 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 8), align 16 111*9880d681SAndroid Build Coastguard Worker %9 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 9), align 4 112*9880d681SAndroid Build Coastguard Worker %10 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 10), align 8 113*9880d681SAndroid Build Coastguard Worker %11 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 11), align 4 114*9880d681SAndroid Build Coastguard Worker %12 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 12), align 16 115*9880d681SAndroid Build Coastguard Worker %13 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 13), align 4 116*9880d681SAndroid Build Coastguard Worker %14 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 14), align 8 117*9880d681SAndroid Build Coastguard Worker %15 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 15), align 4 118*9880d681SAndroid Build Coastguard Worker store volatile i64 %1, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 0), align 16 119*9880d681SAndroid Build Coastguard Worker store volatile i64 %2, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 1), align 4 120*9880d681SAndroid Build Coastguard Worker store volatile i64 %3, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 2), align 8 121*9880d681SAndroid Build Coastguard Worker store volatile i64 %4, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 3), align 4 122*9880d681SAndroid Build Coastguard Worker store volatile i64 %5, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 4), align 16 123*9880d681SAndroid Build Coastguard Worker store volatile i64 %6, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 5), align 4 124*9880d681SAndroid Build Coastguard Worker store volatile i64 %7, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 6), align 8 125*9880d681SAndroid Build Coastguard Worker store volatile i64 %8, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 7), align 4 126*9880d681SAndroid Build Coastguard Worker store volatile i64 %9, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 8), align 16 127*9880d681SAndroid Build Coastguard Worker store volatile i64 %10, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 9), align 4 128*9880d681SAndroid Build Coastguard Worker store volatile i64 %11, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 10), align 8 129*9880d681SAndroid Build Coastguard Worker store volatile i64 %12, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 11), align 4 130*9880d681SAndroid Build Coastguard Worker store volatile i64 %13, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 12), align 16 131*9880d681SAndroid Build Coastguard Worker store volatile i64 %14, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 13), align 4 132*9880d681SAndroid Build Coastguard Worker store volatile i64 %15, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 14), align 8 133*9880d681SAndroid Build Coastguard Worker store volatile i64 %0, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 15), align 4 134*9880d681SAndroid Build Coastguard Worker ret void 135*9880d681SAndroid Build Coastguard Worker} 136