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