Home | History | Annotate | Download | only in NVPTX
      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