140 lines
5.8 KiB
LLVM
140 lines
5.8 KiB
LLVM
; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
|
|
|
|
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg0()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg1()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg2()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg3()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg4()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg5()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg6()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg7()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg8()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg9()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg10()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg11()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg12()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg13()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg14()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg15()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg16()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg17()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg18()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg19()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg20()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg21()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg22()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg23()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg24()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg25()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg26()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg27()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg28()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg29()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg30()
|
|
declare i32 @llvm.nvvm.read.ptx.sreg.envreg31()
|
|
|
|
|
|
; CHECK: foo
|
|
define i32 @foo() {
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg0
|
|
%val0 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg0()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg1
|
|
%val1 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg1()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg2
|
|
%val2 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg2()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg3
|
|
%val3 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg3()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg4
|
|
%val4 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg4()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg5
|
|
%val5 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg5()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg6
|
|
%val6 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg6()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg7
|
|
%val7 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg7()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg8
|
|
%val8 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg8()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg9
|
|
%val9 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg9()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg10
|
|
%val10 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg10()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg11
|
|
%val11 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg11()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg12
|
|
%val12 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg12()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg13
|
|
%val13 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg13()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg14
|
|
%val14 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg14()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg15
|
|
%val15 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg15()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg16
|
|
%val16 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg16()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg17
|
|
%val17 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg17()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg18
|
|
%val18 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg18()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg19
|
|
%val19 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg19()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg20
|
|
%val20 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg20()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg21
|
|
%val21 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg21()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg22
|
|
%val22 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg22()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg23
|
|
%val23 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg23()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg24
|
|
%val24 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg24()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg25
|
|
%val25 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg25()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg26
|
|
%val26 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg26()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg27
|
|
%val27 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg27()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg28
|
|
%val28 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg28()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg29
|
|
%val29 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg29()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg30
|
|
%val30 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg30()
|
|
; CHECK: mov.b32 %r{{[0-9]+}}, %envreg31
|
|
%val31 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg31()
|
|
|
|
|
|
%ret0 = add i32 %val0, %val1
|
|
%ret1 = add i32 %ret0, %val2
|
|
%ret2 = add i32 %ret1, %val3
|
|
%ret3 = add i32 %ret2, %val4
|
|
%ret4 = add i32 %ret3, %val5
|
|
%ret5 = add i32 %ret4, %val6
|
|
%ret6 = add i32 %ret5, %val7
|
|
%ret7 = add i32 %ret6, %val8
|
|
%ret8 = add i32 %ret7, %val9
|
|
%ret9 = add i32 %ret8, %val10
|
|
%ret10 = add i32 %ret9, %val11
|
|
%ret11 = add i32 %ret10, %val12
|
|
%ret12 = add i32 %ret11, %val13
|
|
%ret13 = add i32 %ret12, %val14
|
|
%ret14 = add i32 %ret13, %val15
|
|
%ret15 = add i32 %ret14, %val16
|
|
%ret16 = add i32 %ret15, %val17
|
|
%ret17 = add i32 %ret16, %val18
|
|
%ret18 = add i32 %ret17, %val19
|
|
%ret19 = add i32 %ret18, %val20
|
|
%ret20 = add i32 %ret19, %val21
|
|
%ret21 = add i32 %ret20, %val22
|
|
%ret22 = add i32 %ret21, %val23
|
|
%ret23 = add i32 %ret22, %val24
|
|
%ret24 = add i32 %ret23, %val25
|
|
%ret25 = add i32 %ret24, %val26
|
|
%ret26 = add i32 %ret25, %val27
|
|
%ret27 = add i32 %ret26, %val28
|
|
%ret28 = add i32 %ret27, %val29
|
|
%ret29 = add i32 %ret28, %val30
|
|
%ret30 = add i32 %ret29, %val31
|
|
|
|
ret i32 %ret30
|
|
}
|