1 ; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s 2 3 4 declare i32 @llvm.nvvm.read.ptx.sreg.envreg0() 5 declare i32 @llvm.nvvm.read.ptx.sreg.envreg1() 6 declare i32 @llvm.nvvm.read.ptx.sreg.envreg2() 7 declare i32 @llvm.nvvm.read.ptx.sreg.envreg3() 8 declare i32 @llvm.nvvm.read.ptx.sreg.envreg4() 9 declare i32 @llvm.nvvm.read.ptx.sreg.envreg5() 10 declare i32 @llvm.nvvm.read.ptx.sreg.envreg6() 11 declare i32 @llvm.nvvm.read.ptx.sreg.envreg7() 12 declare i32 @llvm.nvvm.read.ptx.sreg.envreg8() 13 declare i32 @llvm.nvvm.read.ptx.sreg.envreg9() 14 declare i32 @llvm.nvvm.read.ptx.sreg.envreg10() 15 declare i32 @llvm.nvvm.read.ptx.sreg.envreg11() 16 declare i32 @llvm.nvvm.read.ptx.sreg.envreg12() 17 declare i32 @llvm.nvvm.read.ptx.sreg.envreg13() 18 declare i32 @llvm.nvvm.read.ptx.sreg.envreg14() 19 declare i32 @llvm.nvvm.read.ptx.sreg.envreg15() 20 declare i32 @llvm.nvvm.read.ptx.sreg.envreg16() 21 declare i32 @llvm.nvvm.read.ptx.sreg.envreg17() 22 declare i32 @llvm.nvvm.read.ptx.sreg.envreg18() 23 declare i32 @llvm.nvvm.read.ptx.sreg.envreg19() 24 declare i32 @llvm.nvvm.read.ptx.sreg.envreg20() 25 declare i32 @llvm.nvvm.read.ptx.sreg.envreg21() 26 declare i32 @llvm.nvvm.read.ptx.sreg.envreg22() 27 declare i32 @llvm.nvvm.read.ptx.sreg.envreg23() 28 declare i32 @llvm.nvvm.read.ptx.sreg.envreg24() 29 declare i32 @llvm.nvvm.read.ptx.sreg.envreg25() 30 declare i32 @llvm.nvvm.read.ptx.sreg.envreg26() 31 declare i32 @llvm.nvvm.read.ptx.sreg.envreg27() 32 declare i32 @llvm.nvvm.read.ptx.sreg.envreg28() 33 declare i32 @llvm.nvvm.read.ptx.sreg.envreg29() 34 declare i32 @llvm.nvvm.read.ptx.sreg.envreg30() 35 declare i32 @llvm.nvvm.read.ptx.sreg.envreg31() 36 37 38 ; CHECK: foo 39 define i32 @foo() { 40 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg0 41 %val0 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg0() 42 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg1 43 %val1 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg1() 44 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg2 45 %val2 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg2() 46 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg3 47 %val3 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg3() 48 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg4 49 %val4 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg4() 50 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg5 51 %val5 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg5() 52 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg6 53 %val6 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg6() 54 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg7 55 %val7 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg7() 56 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg8 57 %val8 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg8() 58 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg9 59 %val9 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg9() 60 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg10 61 %val10 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg10() 62 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg11 63 %val11 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg11() 64 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg12 65 %val12 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg12() 66 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg13 67 %val13 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg13() 68 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg14 69 %val14 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg14() 70 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg15 71 %val15 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg15() 72 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg16 73 %val16 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg16() 74 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg17 75 %val17 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg17() 76 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg18 77 %val18 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg18() 78 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg19 79 %val19 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg19() 80 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg20 81 %val20 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg20() 82 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg21 83 %val21 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg21() 84 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg22 85 %val22 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg22() 86 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg23 87 %val23 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg23() 88 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg24 89 %val24 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg24() 90 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg25 91 %val25 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg25() 92 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg26 93 %val26 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg26() 94 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg27 95 %val27 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg27() 96 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg28 97 %val28 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg28() 98 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg29 99 %val29 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg29() 100 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg30 101 %val30 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg30() 102 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg31 103 %val31 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg31() 104 105 106 %ret0 = add i32 %val0, %val1 107 %ret1 = add i32 %ret0, %val2 108 %ret2 = add i32 %ret1, %val3 109 %ret3 = add i32 %ret2, %val4 110 %ret4 = add i32 %ret3, %val5 111 %ret5 = add i32 %ret4, %val6 112 %ret6 = add i32 %ret5, %val7 113 %ret7 = add i32 %ret6, %val8 114 %ret8 = add i32 %ret7, %val9 115 %ret9 = add i32 %ret8, %val10 116 %ret10 = add i32 %ret9, %val11 117 %ret11 = add i32 %ret10, %val12 118 %ret12 = add i32 %ret11, %val13 119 %ret13 = add i32 %ret12, %val14 120 %ret14 = add i32 %ret13, %val15 121 %ret15 = add i32 %ret14, %val16 122 %ret16 = add i32 %ret15, %val17 123 %ret17 = add i32 %ret16, %val18 124 %ret18 = add i32 %ret17, %val19 125 %ret19 = add i32 %ret18, %val20 126 %ret20 = add i32 %ret19, %val21 127 %ret21 = add i32 %ret20, %val22 128 %ret22 = add i32 %ret21, %val23 129 %ret23 = add i32 %ret22, %val24 130 %ret24 = add i32 %ret23, %val25 131 %ret25 = add i32 %ret24, %val26 132 %ret26 = add i32 %ret25, %val27 133 %ret27 = add i32 %ret26, %val28 134 %ret28 = add i32 %ret27, %val29 135 %ret29 = add i32 %ret28, %val30 136 %ret30 = add i32 %ret29, %val31 137 138 ret i32 %ret30 139 } 140