Justin Holewinski | 124fc19 | 2014-06-27 18:35:21 +0000 | [diff] [blame] | 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 | } |