envreg.ll 5.8 KB

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