[llvm] 84cf290 - [NVPTX][tests] Do not run the tests which are not supported by nvptx

Andrew Savonichev via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 26 07:27:39 PDT 2022


Author: Igor Chebykin
Date: 2022-04-26T17:26:56+03:00
New Revision: 84cf290c8480b8380e41b1a498f9e40e2c6bbe17

URL: https://github.com/llvm/llvm-project/commit/84cf290c8480b8380e41b1a498f9e40e2c6bbe17
DIFF: https://github.com/llvm/llvm-project/commit/84cf290c8480b8380e41b1a498f9e40e2c6bbe17.diff

LOG: [NVPTX][tests] Do not run the tests which are not supported by nvptx

Some generic tests are not supported by the nvptx now.  Moreover, they
are no plans to fix the tested features in nvptx. So, suggest to mark
them as UNSUPPORTED

Differential Revision: https://reviews.llvm.org/D123928

Added: 
    llvm/test/CodeGen/NVPTX/APIntLoadStore.ll
    llvm/test/CodeGen/NVPTX/APIntParam.ll
    llvm/test/CodeGen/NVPTX/APIntSextParam.ll
    llvm/test/CodeGen/NVPTX/APIntZextParam.ll

Modified: 
    llvm/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
    llvm/test/CodeGen/Generic/2010-ZeroSizedArg.ll
    llvm/test/CodeGen/Generic/APIntLoadStore.ll
    llvm/test/CodeGen/Generic/APIntParam.ll
    llvm/test/CodeGen/Generic/APIntSextParam.ll
    llvm/test/CodeGen/Generic/APIntZextParam.ll
    llvm/test/CodeGen/Generic/empty-load-store.ll
    llvm/test/CodeGen/Generic/pr12507.ll
    llvm/test/CodeGen/Generic/pr24662.ll
    llvm/test/CodeGen/Generic/stacksave-restore.ll
    llvm/test/CodeGen/Generic/zero-sized-array.ll
    llvm/test/CodeGen/MLRegalloc/default-eviction-advisor.ll
    llvm/test/Feature/optnone-llc.ll
    llvm/test/MC/AsmParser/include.ll
    llvm/test/MC/AsmParser/macro-same-context.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll b/llvm/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
index 3b13077b37d85..ad5c588ef34a4 100644
--- a/llvm/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
+++ b/llvm/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
@@ -1,5 +1,9 @@
 ; RUN: llc -no-integrated-as < %s
 
+; The test uses inline assembly with x86-specific constraints.
+; UNSUPPORTED: nvptx
+
+
 define fastcc void @bc__support__high_resolution_time__initialize_clock_rate() personality i32 (...)* @__gxx_personality_v0 {
 entry:
   invoke void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* elementtype( i32) null, i32* elementtype(i32) null )

diff  --git a/llvm/test/CodeGen/Generic/2010-ZeroSizedArg.ll b/llvm/test/CodeGen/Generic/2010-ZeroSizedArg.ll
index d9d83744781d1..2b414db56bdb9 100644
--- a/llvm/test/CodeGen/Generic/2010-ZeroSizedArg.ll
+++ b/llvm/test/CodeGen/Generic/2010-ZeroSizedArg.ll
@@ -1,6 +1,9 @@
 ; RUN: llc < %s
 ; PR4975
 
+; NVPTX does not support zero sized type arg
+; UNSUPPORTED: nvptx
+
 %0 = type <{ [0 x i32] }>
 %union.T0 = type { }
 

diff  --git a/llvm/test/CodeGen/Generic/APIntLoadStore.ll b/llvm/test/CodeGen/Generic/APIntLoadStore.ll
index f8d22f5b91224..164952aa27fa2 100644
--- a/llvm/test/CodeGen/Generic/APIntLoadStore.ll
+++ b/llvm/test/CodeGen/Generic/APIntLoadStore.ll
@@ -1,4 +1,8 @@
 ; RUN: llc < %s > %t
+
+; NVPTX does not support arbitrary integer types and has acceptable subset tested in NVPTX/APIntLoadStore.ll
+; UNSUPPORTED: nvptx
+
 @i1_l = external global i1		; <i1*> [#uses=1]
 @i1_s = external global i1		; <i1*> [#uses=1]
 @i2_l = external global i2		; <i2*> [#uses=1]

diff  --git a/llvm/test/CodeGen/Generic/APIntParam.ll b/llvm/test/CodeGen/Generic/APIntParam.ll
index 8aa0b494c26b0..45a83642ee17e 100644
--- a/llvm/test/CodeGen/Generic/APIntParam.ll
+++ b/llvm/test/CodeGen/Generic/APIntParam.ll
@@ -1,4 +1,8 @@
 ; RUN: llc < %s > %t
+
+; NVPTX does not support arbitrary integer types and has acceptable subset tested in NVPTX/APIntParam.ll
+; UNSUPPORTED: nvptx
+
 @i1_s = external global i1		; <i1*> [#uses=1]
 @i2_s = external global i2		; <i2*> [#uses=1]
 @i3_s = external global i3		; <i3*> [#uses=1]

diff  --git a/llvm/test/CodeGen/Generic/APIntSextParam.ll b/llvm/test/CodeGen/Generic/APIntSextParam.ll
index acc0eebcada85..6d8717ec69314 100644
--- a/llvm/test/CodeGen/Generic/APIntSextParam.ll
+++ b/llvm/test/CodeGen/Generic/APIntSextParam.ll
@@ -1,4 +1,8 @@
 ; RUN: llc < %s > %t
+
+; NVPTX does not support arbitrary integer types and has acceptable subset tested in NVPTX/APIntSextParam.ll
+; UNSUPPORTED: nvptx
+
 @i1_s = external global i1		; <i1*> [#uses=1]
 @i2_s = external global i2		; <i2*> [#uses=1]
 @i3_s = external global i3		; <i3*> [#uses=1]

diff  --git a/llvm/test/CodeGen/Generic/APIntZextParam.ll b/llvm/test/CodeGen/Generic/APIntZextParam.ll
index 173b9fd74ca42..664b6c15b2f79 100644
--- a/llvm/test/CodeGen/Generic/APIntZextParam.ll
+++ b/llvm/test/CodeGen/Generic/APIntZextParam.ll
@@ -1,4 +1,8 @@
 ; RUN: llc < %s > %t
+
+; NVPTX does not support arbitrary integer types and has acceptable subset tested in NVPTX/APIntZextParam.ll
+; UNSUPPORTED: nvptx
+
 @i1_s = external global i1		; <i1*> [#uses=1]
 @i2_s = external global i2		; <i2*> [#uses=1]
 @i3_s = external global i3		; <i3*> [#uses=1]

diff  --git a/llvm/test/CodeGen/Generic/empty-load-store.ll b/llvm/test/CodeGen/Generic/empty-load-store.ll
index 32ece8b9f07be..b20b52c787995 100644
--- a/llvm/test/CodeGen/Generic/empty-load-store.ll
+++ b/llvm/test/CodeGen/Generic/empty-load-store.ll
@@ -1,6 +1,9 @@
 ; RUN: llc < %s
 ; PR2612
 
+; Triggers a crash on assertion as NVPTX does not support 0-sized arrays.
+; UNSUPPORTED: nvptx
+
 @current_foo = internal global {  } zeroinitializer
 
 define i32 @foo() {

diff  --git a/llvm/test/CodeGen/Generic/pr12507.ll b/llvm/test/CodeGen/Generic/pr12507.ll
index c793358506006..865e10f6018ec 100644
--- a/llvm/test/CodeGen/Generic/pr12507.ll
+++ b/llvm/test/CodeGen/Generic/pr12507.ll
@@ -1,5 +1,8 @@
 ; RUN: llc < %s
 
+; NVPTX failed to lower arg i160, as size > 64
+; UNSUPPORTED: nvptx
+
 @c = external global i32, align 4
 
 define void @foo(i160 %x) {

diff  --git a/llvm/test/CodeGen/Generic/pr24662.ll b/llvm/test/CodeGen/Generic/pr24662.ll
index 5a10b9cb0acb4..da707494a99c3 100644
--- a/llvm/test/CodeGen/Generic/pr24662.ll
+++ b/llvm/test/CodeGen/Generic/pr24662.ll
@@ -1,6 +1,9 @@
 ; RUN: llc < %s -fast-isel
 ; RUN: llc < %s
 
+; NVPTX failed to lower i670010, as size > 64
+; UNSUPPORTED: nvptx
+
 define i60 @PR24662a() {
   ret i60 trunc (i670010 fptoui(float 0x400D9999A0000000 to i670010) to i60)
 }

diff  --git a/llvm/test/CodeGen/Generic/stacksave-restore.ll b/llvm/test/CodeGen/Generic/stacksave-restore.ll
index b124b5f9b7d55..52b4a4d123a78 100644
--- a/llvm/test/CodeGen/Generic/stacksave-restore.ll
+++ b/llvm/test/CodeGen/Generic/stacksave-restore.ll
@@ -1,5 +1,8 @@
 ; RUN: llc < %s
 
+; NVPTX can not select llvm.stacksave (dynamic_stackalloc) and llvm.stackrestore
+; UNSUPPORTED: nvptx
+
 declare i8* @llvm.stacksave()
 
 declare void @llvm.stackrestore(i8*)

diff  --git a/llvm/test/CodeGen/Generic/zero-sized-array.ll b/llvm/test/CodeGen/Generic/zero-sized-array.ll
index 280ba0019b635..247b467923da6 100644
--- a/llvm/test/CodeGen/Generic/zero-sized-array.ll
+++ b/llvm/test/CodeGen/Generic/zero-sized-array.ll
@@ -1,6 +1,9 @@
 ; RUN: llc < %s
 ; PR9900
 
+; NVPTX does not support zero sized type arg
+; UNSUPPORTED: nvptx
+
 %zero = type [0 x i8]
 %foobar = type { i32, %zero }
 

diff  --git a/llvm/test/CodeGen/MLRegalloc/default-eviction-advisor.ll b/llvm/test/CodeGen/MLRegalloc/default-eviction-advisor.ll
index a48a25a82e288..598a6f9e7e57b 100644
--- a/llvm/test/CodeGen/MLRegalloc/default-eviction-advisor.ll
+++ b/llvm/test/CodeGen/MLRegalloc/default-eviction-advisor.ll
@@ -7,6 +7,9 @@
 ; RUN: not llc -O2 -regalloc-enable-advisor=release < %s 2>&1 | FileCheck %s
 ; RUN: llc -O2 -regalloc-enable-advisor=default < %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
 
+; regalloc-enable-advisor is not enabled for NVPTX
+; UNSUPPORTED: nvptx
+
 define void @f2(i64 %lhs, i64 %rhs, i64* %addr) {
   %sum = add i64 %lhs, %rhs
   store i64 %sum, i64* %addr

diff  --git a/llvm/test/CodeGen/NVPTX/APIntLoadStore.ll b/llvm/test/CodeGen/NVPTX/APIntLoadStore.ll
new file mode 100644
index 0000000000000..66ed45579f014
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/APIntLoadStore.ll
@@ -0,0 +1,515 @@
+; RUN: llc -march=nvptx  < %s > %t
+; RUN: llc -march=nvptx64  < %s > %t
+
+ at i1_l = external global i1		; <i1*> [#uses=1]
+ at i1_s = external global i1		; <i1*> [#uses=1]
+ at i2_l = external global i2		; <i2*> [#uses=1]
+ at i2_s = external global i2		; <i2*> [#uses=1]
+ at i3_l = external global i3		; <i3*> [#uses=1]
+ at i3_s = external global i3		; <i3*> [#uses=1]
+ at i4_l = external global i4		; <i4*> [#uses=1]
+ at i4_s = external global i4		; <i4*> [#uses=1]
+ at i5_l = external global i5		; <i5*> [#uses=1]
+ at i5_s = external global i5		; <i5*> [#uses=1]
+ at i6_l = external global i6		; <i6*> [#uses=1]
+ at i6_s = external global i6		; <i6*> [#uses=1]
+ at i7_l = external global i7		; <i7*> [#uses=1]
+ at i7_s = external global i7		; <i7*> [#uses=1]
+ at i8_l = external global i8		; <i8*> [#uses=1]
+ at i8_s = external global i8		; <i8*> [#uses=1]
+ at i9_l = external global i9		; <i9*> [#uses=1]
+ at i9_s = external global i9		; <i9*> [#uses=1]
+ at i10_l = external global i10		; <i10*> [#uses=1]
+ at i10_s = external global i10		; <i10*> [#uses=1]
+ at i11_l = external global i11		; <i11*> [#uses=1]
+ at i11_s = external global i11		; <i11*> [#uses=1]
+ at i12_l = external global i12		; <i12*> [#uses=1]
+ at i12_s = external global i12		; <i12*> [#uses=1]
+ at i13_l = external global i13		; <i13*> [#uses=1]
+ at i13_s = external global i13		; <i13*> [#uses=1]
+ at i14_l = external global i14		; <i14*> [#uses=1]
+ at i14_s = external global i14		; <i14*> [#uses=1]
+ at i15_l = external global i15		; <i15*> [#uses=1]
+ at i15_s = external global i15		; <i15*> [#uses=1]
+ at i16_l = external global i16		; <i16*> [#uses=1]
+ at i16_s = external global i16		; <i16*> [#uses=1]
+ at i17_l = external global i17		; <i17*> [#uses=1]
+ at i17_s = external global i17		; <i17*> [#uses=1]
+ at i18_l = external global i18		; <i18*> [#uses=1]
+ at i18_s = external global i18		; <i18*> [#uses=1]
+ at i19_l = external global i19		; <i19*> [#uses=1]
+ at i19_s = external global i19		; <i19*> [#uses=1]
+ at i20_l = external global i20		; <i20*> [#uses=1]
+ at i20_s = external global i20		; <i20*> [#uses=1]
+ at i21_l = external global i21		; <i21*> [#uses=1]
+ at i21_s = external global i21		; <i21*> [#uses=1]
+ at i22_l = external global i22		; <i22*> [#uses=1]
+ at i22_s = external global i22		; <i22*> [#uses=1]
+ at i23_l = external global i23		; <i23*> [#uses=1]
+ at i23_s = external global i23		; <i23*> [#uses=1]
+ at i24_l = external global i24		; <i24*> [#uses=1]
+ at i24_s = external global i24		; <i24*> [#uses=1]
+ at i25_l = external global i25		; <i25*> [#uses=1]
+ at i25_s = external global i25		; <i25*> [#uses=1]
+ at i26_l = external global i26		; <i26*> [#uses=1]
+ at i26_s = external global i26		; <i26*> [#uses=1]
+ at i27_l = external global i27		; <i27*> [#uses=1]
+ at i27_s = external global i27		; <i27*> [#uses=1]
+ at i28_l = external global i28		; <i28*> [#uses=1]
+ at i28_s = external global i28		; <i28*> [#uses=1]
+ at i29_l = external global i29		; <i29*> [#uses=1]
+ at i29_s = external global i29		; <i29*> [#uses=1]
+ at i30_l = external global i30		; <i30*> [#uses=1]
+ at i30_s = external global i30		; <i30*> [#uses=1]
+ at i31_l = external global i31		; <i31*> [#uses=1]
+ at i31_s = external global i31		; <i31*> [#uses=1]
+ at i32_l = external global i32		; <i32*> [#uses=1]
+ at i32_s = external global i32		; <i32*> [#uses=1]
+ at i33_l = external global i33		; <i33*> [#uses=1]
+ at i33_s = external global i33		; <i33*> [#uses=1]
+ at i34_l = external global i34		; <i34*> [#uses=1]
+ at i34_s = external global i34		; <i34*> [#uses=1]
+ at i35_l = external global i35		; <i35*> [#uses=1]
+ at i35_s = external global i35		; <i35*> [#uses=1]
+ at i36_l = external global i36		; <i36*> [#uses=1]
+ at i36_s = external global i36		; <i36*> [#uses=1]
+ at i37_l = external global i37		; <i37*> [#uses=1]
+ at i37_s = external global i37		; <i37*> [#uses=1]
+ at i38_l = external global i38		; <i38*> [#uses=1]
+ at i38_s = external global i38		; <i38*> [#uses=1]
+ at i39_l = external global i39		; <i39*> [#uses=1]
+ at i39_s = external global i39		; <i39*> [#uses=1]
+ at i40_l = external global i40		; <i40*> [#uses=1]
+ at i40_s = external global i40		; <i40*> [#uses=1]
+ at i41_l = external global i41		; <i41*> [#uses=1]
+ at i41_s = external global i41		; <i41*> [#uses=1]
+ at i42_l = external global i42		; <i42*> [#uses=1]
+ at i42_s = external global i42		; <i42*> [#uses=1]
+ at i43_l = external global i43		; <i43*> [#uses=1]
+ at i43_s = external global i43		; <i43*> [#uses=1]
+ at i44_l = external global i44		; <i44*> [#uses=1]
+ at i44_s = external global i44		; <i44*> [#uses=1]
+ at i45_l = external global i45		; <i45*> [#uses=1]
+ at i45_s = external global i45		; <i45*> [#uses=1]
+ at i46_l = external global i46		; <i46*> [#uses=1]
+ at i46_s = external global i46		; <i46*> [#uses=1]
+ at i47_l = external global i47		; <i47*> [#uses=1]
+ at i47_s = external global i47		; <i47*> [#uses=1]
+ at i48_l = external global i48		; <i48*> [#uses=1]
+ at i48_s = external global i48		; <i48*> [#uses=1]
+ at i49_l = external global i49		; <i49*> [#uses=1]
+ at i49_s = external global i49		; <i49*> [#uses=1]
+ at i50_l = external global i50		; <i50*> [#uses=1]
+ at i50_s = external global i50		; <i50*> [#uses=1]
+ at i51_l = external global i51		; <i51*> [#uses=1]
+ at i51_s = external global i51		; <i51*> [#uses=1]
+ at i52_l = external global i52		; <i52*> [#uses=1]
+ at i52_s = external global i52		; <i52*> [#uses=1]
+ at i53_l = external global i53		; <i53*> [#uses=1]
+ at i53_s = external global i53		; <i53*> [#uses=1]
+ at i54_l = external global i54		; <i54*> [#uses=1]
+ at i54_s = external global i54		; <i54*> [#uses=1]
+ at i55_l = external global i55		; <i55*> [#uses=1]
+ at i55_s = external global i55		; <i55*> [#uses=1]
+ at i56_l = external global i56		; <i56*> [#uses=1]
+ at i56_s = external global i56		; <i56*> [#uses=1]
+ at i57_l = external global i57		; <i57*> [#uses=1]
+ at i57_s = external global i57		; <i57*> [#uses=1]
+ at i58_l = external global i58		; <i58*> [#uses=1]
+ at i58_s = external global i58		; <i58*> [#uses=1]
+ at i59_l = external global i59		; <i59*> [#uses=1]
+ at i59_s = external global i59		; <i59*> [#uses=1]
+ at i60_l = external global i60		; <i60*> [#uses=1]
+ at i60_s = external global i60		; <i60*> [#uses=1]
+ at i61_l = external global i61		; <i61*> [#uses=1]
+ at i61_s = external global i61		; <i61*> [#uses=1]
+ at i62_l = external global i62		; <i62*> [#uses=1]
+ at i62_s = external global i62		; <i62*> [#uses=1]
+ at i63_l = external global i63		; <i63*> [#uses=1]
+ at i63_s = external global i63		; <i63*> [#uses=1]
+ at i64_l = external global i64		; <i64*> [#uses=1]
+ at i64_s = external global i64		; <i64*> [#uses=1]
+
+define void @i1_ls() nounwind  {
+	%tmp = load i1, i1* @i1_l		; <i1> [#uses=1]
+	store i1 %tmp, i1* @i1_s
+	ret void
+}
+
+define void @i2_ls() nounwind  {
+	%tmp = load i2, i2* @i2_l		; <i2> [#uses=1]
+	store i2 %tmp, i2* @i2_s
+	ret void
+}
+
+define void @i3_ls() nounwind  {
+	%tmp = load i3, i3* @i3_l		; <i3> [#uses=1]
+	store i3 %tmp, i3* @i3_s
+	ret void
+}
+
+define void @i4_ls() nounwind  {
+	%tmp = load i4, i4* @i4_l		; <i4> [#uses=1]
+	store i4 %tmp, i4* @i4_s
+	ret void
+}
+
+define void @i5_ls() nounwind  {
+	%tmp = load i5, i5* @i5_l		; <i5> [#uses=1]
+	store i5 %tmp, i5* @i5_s
+	ret void
+}
+
+define void @i6_ls() nounwind  {
+	%tmp = load i6, i6* @i6_l		; <i6> [#uses=1]
+	store i6 %tmp, i6* @i6_s
+	ret void
+}
+
+define void @i7_ls() nounwind  {
+	%tmp = load i7, i7* @i7_l		; <i7> [#uses=1]
+	store i7 %tmp, i7* @i7_s
+	ret void
+}
+
+define void @i8_ls() nounwind  {
+	%tmp = load i8, i8* @i8_l		; <i8> [#uses=1]
+	store i8 %tmp, i8* @i8_s
+	ret void
+}
+
+define void @i9_ls() nounwind  {
+	%tmp = load i9, i9* @i9_l		; <i9> [#uses=1]
+	store i9 %tmp, i9* @i9_s
+	ret void
+}
+
+define void @i10_ls() nounwind  {
+	%tmp = load i10, i10* @i10_l		; <i10> [#uses=1]
+	store i10 %tmp, i10* @i10_s
+	ret void
+}
+
+define void @i11_ls() nounwind  {
+	%tmp = load i11, i11* @i11_l		; <i11> [#uses=1]
+	store i11 %tmp, i11* @i11_s
+	ret void
+}
+
+define void @i12_ls() nounwind  {
+	%tmp = load i12, i12* @i12_l		; <i12> [#uses=1]
+	store i12 %tmp, i12* @i12_s
+	ret void
+}
+
+define void @i13_ls() nounwind  {
+	%tmp = load i13, i13* @i13_l		; <i13> [#uses=1]
+	store i13 %tmp, i13* @i13_s
+	ret void
+}
+
+define void @i14_ls() nounwind  {
+	%tmp = load i14, i14* @i14_l		; <i14> [#uses=1]
+	store i14 %tmp, i14* @i14_s
+	ret void
+}
+
+define void @i15_ls() nounwind  {
+	%tmp = load i15, i15* @i15_l		; <i15> [#uses=1]
+	store i15 %tmp, i15* @i15_s
+	ret void
+}
+
+define void @i16_ls() nounwind  {
+	%tmp = load i16, i16* @i16_l		; <i16> [#uses=1]
+	store i16 %tmp, i16* @i16_s
+	ret void
+}
+
+define void @i17_ls() nounwind  {
+	%tmp = load i17, i17* @i17_l		; <i17> [#uses=1]
+	store i17 %tmp, i17* @i17_s
+	ret void
+}
+
+define void @i18_ls() nounwind  {
+	%tmp = load i18, i18* @i18_l		; <i18> [#uses=1]
+	store i18 %tmp, i18* @i18_s
+	ret void
+}
+
+define void @i19_ls() nounwind  {
+	%tmp = load i19, i19* @i19_l		; <i19> [#uses=1]
+	store i19 %tmp, i19* @i19_s
+	ret void
+}
+
+define void @i20_ls() nounwind  {
+	%tmp = load i20, i20* @i20_l		; <i20> [#uses=1]
+	store i20 %tmp, i20* @i20_s
+	ret void
+}
+
+define void @i21_ls() nounwind  {
+	%tmp = load i21, i21* @i21_l		; <i21> [#uses=1]
+	store i21 %tmp, i21* @i21_s
+	ret void
+}
+
+define void @i22_ls() nounwind  {
+	%tmp = load i22, i22* @i22_l		; <i22> [#uses=1]
+	store i22 %tmp, i22* @i22_s
+	ret void
+}
+
+define void @i23_ls() nounwind  {
+	%tmp = load i23, i23* @i23_l		; <i23> [#uses=1]
+	store i23 %tmp, i23* @i23_s
+	ret void
+}
+
+define void @i24_ls() nounwind  {
+	%tmp = load i24, i24* @i24_l		; <i24> [#uses=1]
+	store i24 %tmp, i24* @i24_s
+	ret void
+}
+
+define void @i25_ls() nounwind  {
+	%tmp = load i25, i25* @i25_l		; <i25> [#uses=1]
+	store i25 %tmp, i25* @i25_s
+	ret void
+}
+
+define void @i26_ls() nounwind  {
+	%tmp = load i26, i26* @i26_l		; <i26> [#uses=1]
+	store i26 %tmp, i26* @i26_s
+	ret void
+}
+
+define void @i27_ls() nounwind  {
+	%tmp = load i27, i27* @i27_l		; <i27> [#uses=1]
+	store i27 %tmp, i27* @i27_s
+	ret void
+}
+
+define void @i28_ls() nounwind  {
+	%tmp = load i28, i28* @i28_l		; <i28> [#uses=1]
+	store i28 %tmp, i28* @i28_s
+	ret void
+}
+
+define void @i29_ls() nounwind  {
+	%tmp = load i29, i29* @i29_l		; <i29> [#uses=1]
+	store i29 %tmp, i29* @i29_s
+	ret void
+}
+
+define void @i30_ls() nounwind  {
+	%tmp = load i30, i30* @i30_l		; <i30> [#uses=1]
+	store i30 %tmp, i30* @i30_s
+	ret void
+}
+
+define void @i31_ls() nounwind  {
+	%tmp = load i31, i31* @i31_l		; <i31> [#uses=1]
+	store i31 %tmp, i31* @i31_s
+	ret void
+}
+
+define void @i32_ls() nounwind  {
+	%tmp = load i32, i32* @i32_l		; <i32> [#uses=1]
+	store i32 %tmp, i32* @i32_s
+	ret void
+}
+
+define void @i33_ls() nounwind  {
+	%tmp = load i33, i33* @i33_l		; <i33> [#uses=1]
+	store i33 %tmp, i33* @i33_s
+	ret void
+}
+
+define void @i34_ls() nounwind  {
+	%tmp = load i34, i34* @i34_l		; <i34> [#uses=1]
+	store i34 %tmp, i34* @i34_s
+	ret void
+}
+
+define void @i35_ls() nounwind  {
+	%tmp = load i35, i35* @i35_l		; <i35> [#uses=1]
+	store i35 %tmp, i35* @i35_s
+	ret void
+}
+
+define void @i36_ls() nounwind  {
+	%tmp = load i36, i36* @i36_l		; <i36> [#uses=1]
+	store i36 %tmp, i36* @i36_s
+	ret void
+}
+
+define void @i37_ls() nounwind  {
+	%tmp = load i37, i37* @i37_l		; <i37> [#uses=1]
+	store i37 %tmp, i37* @i37_s
+	ret void
+}
+
+define void @i38_ls() nounwind  {
+	%tmp = load i38, i38* @i38_l		; <i38> [#uses=1]
+	store i38 %tmp, i38* @i38_s
+	ret void
+}
+
+define void @i39_ls() nounwind  {
+	%tmp = load i39, i39* @i39_l		; <i39> [#uses=1]
+	store i39 %tmp, i39* @i39_s
+	ret void
+}
+
+define void @i40_ls() nounwind  {
+	%tmp = load i40, i40* @i40_l		; <i40> [#uses=1]
+	store i40 %tmp, i40* @i40_s
+	ret void
+}
+
+define void @i41_ls() nounwind  {
+	%tmp = load i41, i41* @i41_l		; <i41> [#uses=1]
+	store i41 %tmp, i41* @i41_s
+	ret void
+}
+
+define void @i42_ls() nounwind  {
+	%tmp = load i42, i42* @i42_l		; <i42> [#uses=1]
+	store i42 %tmp, i42* @i42_s
+	ret void
+}
+
+define void @i43_ls() nounwind  {
+	%tmp = load i43, i43* @i43_l		; <i43> [#uses=1]
+	store i43 %tmp, i43* @i43_s
+	ret void
+}
+
+define void @i44_ls() nounwind  {
+	%tmp = load i44, i44* @i44_l		; <i44> [#uses=1]
+	store i44 %tmp, i44* @i44_s
+	ret void
+}
+
+define void @i45_ls() nounwind  {
+	%tmp = load i45, i45* @i45_l		; <i45> [#uses=1]
+	store i45 %tmp, i45* @i45_s
+	ret void
+}
+
+define void @i46_ls() nounwind  {
+	%tmp = load i46, i46* @i46_l		; <i46> [#uses=1]
+	store i46 %tmp, i46* @i46_s
+	ret void
+}
+
+define void @i47_ls() nounwind  {
+	%tmp = load i47, i47* @i47_l		; <i47> [#uses=1]
+	store i47 %tmp, i47* @i47_s
+	ret void
+}
+
+define void @i48_ls() nounwind  {
+	%tmp = load i48, i48* @i48_l		; <i48> [#uses=1]
+	store i48 %tmp, i48* @i48_s
+	ret void
+}
+
+define void @i49_ls() nounwind  {
+	%tmp = load i49, i49* @i49_l		; <i49> [#uses=1]
+	store i49 %tmp, i49* @i49_s
+	ret void
+}
+
+define void @i50_ls() nounwind  {
+	%tmp = load i50, i50* @i50_l		; <i50> [#uses=1]
+	store i50 %tmp, i50* @i50_s
+	ret void
+}
+
+define void @i51_ls() nounwind  {
+	%tmp = load i51, i51* @i51_l		; <i51> [#uses=1]
+	store i51 %tmp, i51* @i51_s
+	ret void
+}
+
+define void @i52_ls() nounwind  {
+	%tmp = load i52, i52* @i52_l		; <i52> [#uses=1]
+	store i52 %tmp, i52* @i52_s
+	ret void
+}
+
+define void @i53_ls() nounwind  {
+	%tmp = load i53, i53* @i53_l		; <i53> [#uses=1]
+	store i53 %tmp, i53* @i53_s
+	ret void
+}
+
+define void @i54_ls() nounwind  {
+	%tmp = load i54, i54* @i54_l		; <i54> [#uses=1]
+	store i54 %tmp, i54* @i54_s
+	ret void
+}
+
+define void @i55_ls() nounwind  {
+	%tmp = load i55, i55* @i55_l		; <i55> [#uses=1]
+	store i55 %tmp, i55* @i55_s
+	ret void
+}
+
+define void @i56_ls() nounwind  {
+	%tmp = load i56, i56* @i56_l		; <i56> [#uses=1]
+	store i56 %tmp, i56* @i56_s
+	ret void
+}
+
+define void @i57_ls() nounwind  {
+	%tmp = load i57, i57* @i57_l		; <i57> [#uses=1]
+	store i57 %tmp, i57* @i57_s
+	ret void
+}
+
+define void @i58_ls() nounwind  {
+	%tmp = load i58, i58* @i58_l		; <i58> [#uses=1]
+	store i58 %tmp, i58* @i58_s
+	ret void
+}
+
+define void @i59_ls() nounwind  {
+	%tmp = load i59, i59* @i59_l		; <i59> [#uses=1]
+	store i59 %tmp, i59* @i59_s
+	ret void
+}
+
+define void @i60_ls() nounwind  {
+	%tmp = load i60, i60* @i60_l		; <i60> [#uses=1]
+	store i60 %tmp, i60* @i60_s
+	ret void
+}
+
+define void @i61_ls() nounwind  {
+	%tmp = load i61, i61* @i61_l		; <i61> [#uses=1]
+	store i61 %tmp, i61* @i61_s
+	ret void
+}
+
+define void @i62_ls() nounwind  {
+	%tmp = load i62, i62* @i62_l		; <i62> [#uses=1]
+	store i62 %tmp, i62* @i62_s
+	ret void
+}
+
+define void @i63_ls() nounwind  {
+	%tmp = load i63, i63* @i63_l		; <i63> [#uses=1]
+	store i63 %tmp, i63* @i63_s
+	ret void
+}
+
+define void @i64_ls() nounwind  {
+	%tmp = load i64, i64* @i64_l		; <i64> [#uses=1]
+	store i64 %tmp, i64* @i64_s
+	ret void
+}

diff  --git a/llvm/test/CodeGen/NVPTX/APIntParam.ll b/llvm/test/CodeGen/NVPTX/APIntParam.ll
new file mode 100644
index 0000000000000..e7b5fde73dfc2
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/APIntParam.ll
@@ -0,0 +1,387 @@
+; RUN: llc -march=nvptx  < %s > %t
+; RUN: llc -march=nvptx64  < %s > %t
+
+ at i1_s = external global i1		; <i1*> [#uses=1]
+ at i2_s = external global i2		; <i2*> [#uses=1]
+ at i3_s = external global i3		; <i3*> [#uses=1]
+ at i4_s = external global i4		; <i4*> [#uses=1]
+ at i5_s = external global i5		; <i5*> [#uses=1]
+ at i6_s = external global i6		; <i6*> [#uses=1]
+ at i7_s = external global i7		; <i7*> [#uses=1]
+ at i8_s = external global i8		; <i8*> [#uses=1]
+ at i9_s = external global i9		; <i9*> [#uses=1]
+ at i10_s = external global i10		; <i10*> [#uses=1]
+ at i11_s = external global i11		; <i11*> [#uses=1]
+ at i12_s = external global i12		; <i12*> [#uses=1]
+ at i13_s = external global i13		; <i13*> [#uses=1]
+ at i14_s = external global i14		; <i14*> [#uses=1]
+ at i15_s = external global i15		; <i15*> [#uses=1]
+ at i16_s = external global i16		; <i16*> [#uses=1]
+ at i17_s = external global i17		; <i17*> [#uses=1]
+ at i18_s = external global i18		; <i18*> [#uses=1]
+ at i19_s = external global i19		; <i19*> [#uses=1]
+ at i20_s = external global i20		; <i20*> [#uses=1]
+ at i21_s = external global i21		; <i21*> [#uses=1]
+ at i22_s = external global i22		; <i22*> [#uses=1]
+ at i23_s = external global i23		; <i23*> [#uses=1]
+ at i24_s = external global i24		; <i24*> [#uses=1]
+ at i25_s = external global i25		; <i25*> [#uses=1]
+ at i26_s = external global i26		; <i26*> [#uses=1]
+ at i27_s = external global i27		; <i27*> [#uses=1]
+ at i28_s = external global i28		; <i28*> [#uses=1]
+ at i29_s = external global i29		; <i29*> [#uses=1]
+ at i30_s = external global i30		; <i30*> [#uses=1]
+ at i31_s = external global i31		; <i31*> [#uses=1]
+ at i32_s = external global i32		; <i32*> [#uses=1]
+ at i33_s = external global i33		; <i33*> [#uses=1]
+ at i34_s = external global i34		; <i34*> [#uses=1]
+ at i35_s = external global i35		; <i35*> [#uses=1]
+ at i36_s = external global i36		; <i36*> [#uses=1]
+ at i37_s = external global i37		; <i37*> [#uses=1]
+ at i38_s = external global i38		; <i38*> [#uses=1]
+ at i39_s = external global i39		; <i39*> [#uses=1]
+ at i40_s = external global i40		; <i40*> [#uses=1]
+ at i41_s = external global i41		; <i41*> [#uses=1]
+ at i42_s = external global i42		; <i42*> [#uses=1]
+ at i43_s = external global i43		; <i43*> [#uses=1]
+ at i44_s = external global i44		; <i44*> [#uses=1]
+ at i45_s = external global i45		; <i45*> [#uses=1]
+ at i46_s = external global i46		; <i46*> [#uses=1]
+ at i47_s = external global i47		; <i47*> [#uses=1]
+ at i48_s = external global i48		; <i48*> [#uses=1]
+ at i49_s = external global i49		; <i49*> [#uses=1]
+ at i50_s = external global i50		; <i50*> [#uses=1]
+ at i51_s = external global i51		; <i51*> [#uses=1]
+ at i52_s = external global i52		; <i52*> [#uses=1]
+ at i53_s = external global i53		; <i53*> [#uses=1]
+ at i54_s = external global i54		; <i54*> [#uses=1]
+ at i55_s = external global i55		; <i55*> [#uses=1]
+ at i56_s = external global i56		; <i56*> [#uses=1]
+ at i57_s = external global i57		; <i57*> [#uses=1]
+ at i58_s = external global i58		; <i58*> [#uses=1]
+ at i59_s = external global i59		; <i59*> [#uses=1]
+ at i60_s = external global i60		; <i60*> [#uses=1]
+ at i61_s = external global i61		; <i61*> [#uses=1]
+ at i62_s = external global i62		; <i62*> [#uses=1]
+ at i63_s = external global i63		; <i63*> [#uses=1]
+ at i64_s = external global i64		; <i64*> [#uses=1]
+
+define void @i1_ls(i1 %x) nounwind  {
+	store i1 %x, i1* @i1_s
+	ret void
+}
+
+define void @i2_ls(i2 %x) nounwind  {
+	store i2 %x, i2* @i2_s
+	ret void
+}
+
+define void @i3_ls(i3 %x) nounwind  {
+	store i3 %x, i3* @i3_s
+	ret void
+}
+
+define void @i4_ls(i4 %x) nounwind  {
+	store i4 %x, i4* @i4_s
+	ret void
+}
+
+define void @i5_ls(i5 %x) nounwind  {
+	store i5 %x, i5* @i5_s
+	ret void
+}
+
+define void @i6_ls(i6 %x) nounwind  {
+	store i6 %x, i6* @i6_s
+	ret void
+}
+
+define void @i7_ls(i7 %x) nounwind  {
+	store i7 %x, i7* @i7_s
+	ret void
+}
+
+define void @i8_ls(i8 %x) nounwind  {
+	store i8 %x, i8* @i8_s
+	ret void
+}
+
+define void @i9_ls(i9 %x) nounwind  {
+	store i9 %x, i9* @i9_s
+	ret void
+}
+
+define void @i10_ls(i10 %x) nounwind  {
+	store i10 %x, i10* @i10_s
+	ret void
+}
+
+define void @i11_ls(i11 %x) nounwind  {
+	store i11 %x, i11* @i11_s
+	ret void
+}
+
+define void @i12_ls(i12 %x) nounwind  {
+	store i12 %x, i12* @i12_s
+	ret void
+}
+
+define void @i13_ls(i13 %x) nounwind  {
+	store i13 %x, i13* @i13_s
+	ret void
+}
+
+define void @i14_ls(i14 %x) nounwind  {
+	store i14 %x, i14* @i14_s
+	ret void
+}
+
+define void @i15_ls(i15 %x) nounwind  {
+	store i15 %x, i15* @i15_s
+	ret void
+}
+
+define void @i16_ls(i16 %x) nounwind  {
+	store i16 %x, i16* @i16_s
+	ret void
+}
+
+define void @i17_ls(i17 %x) nounwind  {
+	store i17 %x, i17* @i17_s
+	ret void
+}
+
+define void @i18_ls(i18 %x) nounwind  {
+	store i18 %x, i18* @i18_s
+	ret void
+}
+
+define void @i19_ls(i19 %x) nounwind  {
+	store i19 %x, i19* @i19_s
+	ret void
+}
+
+define void @i20_ls(i20 %x) nounwind  {
+	store i20 %x, i20* @i20_s
+	ret void
+}
+
+define void @i21_ls(i21 %x) nounwind  {
+	store i21 %x, i21* @i21_s
+	ret void
+}
+
+define void @i22_ls(i22 %x) nounwind  {
+	store i22 %x, i22* @i22_s
+	ret void
+}
+
+define void @i23_ls(i23 %x) nounwind  {
+	store i23 %x, i23* @i23_s
+	ret void
+}
+
+define void @i24_ls(i24 %x) nounwind  {
+	store i24 %x, i24* @i24_s
+	ret void
+}
+
+define void @i25_ls(i25 %x) nounwind  {
+	store i25 %x, i25* @i25_s
+	ret void
+}
+
+define void @i26_ls(i26 %x) nounwind  {
+	store i26 %x, i26* @i26_s
+	ret void
+}
+
+define void @i27_ls(i27 %x) nounwind  {
+	store i27 %x, i27* @i27_s
+	ret void
+}
+
+define void @i28_ls(i28 %x) nounwind  {
+	store i28 %x, i28* @i28_s
+	ret void
+}
+
+define void @i29_ls(i29 %x) nounwind  {
+	store i29 %x, i29* @i29_s
+	ret void
+}
+
+define void @i30_ls(i30 %x) nounwind  {
+	store i30 %x, i30* @i30_s
+	ret void
+}
+
+define void @i31_ls(i31 %x) nounwind  {
+	store i31 %x, i31* @i31_s
+	ret void
+}
+
+define void @i32_ls(i32 %x) nounwind  {
+	store i32 %x, i32* @i32_s
+	ret void
+}
+
+define void @i33_ls(i33 %x) nounwind  {
+	store i33 %x, i33* @i33_s
+	ret void
+}
+
+define void @i34_ls(i34 %x) nounwind  {
+	store i34 %x, i34* @i34_s
+	ret void
+}
+
+define void @i35_ls(i35 %x) nounwind  {
+	store i35 %x, i35* @i35_s
+	ret void
+}
+
+define void @i36_ls(i36 %x) nounwind  {
+	store i36 %x, i36* @i36_s
+	ret void
+}
+
+define void @i37_ls(i37 %x) nounwind  {
+	store i37 %x, i37* @i37_s
+	ret void
+}
+
+define void @i38_ls(i38 %x) nounwind  {
+	store i38 %x, i38* @i38_s
+	ret void
+}
+
+define void @i39_ls(i39 %x) nounwind  {
+	store i39 %x, i39* @i39_s
+	ret void
+}
+
+define void @i40_ls(i40 %x) nounwind  {
+	store i40 %x, i40* @i40_s
+	ret void
+}
+
+define void @i41_ls(i41 %x) nounwind  {
+	store i41 %x, i41* @i41_s
+	ret void
+}
+
+define void @i42_ls(i42 %x) nounwind  {
+	store i42 %x, i42* @i42_s
+	ret void
+}
+
+define void @i43_ls(i43 %x) nounwind  {
+	store i43 %x, i43* @i43_s
+	ret void
+}
+
+define void @i44_ls(i44 %x) nounwind  {
+	store i44 %x, i44* @i44_s
+	ret void
+}
+
+define void @i45_ls(i45 %x) nounwind  {
+	store i45 %x, i45* @i45_s
+	ret void
+}
+
+define void @i46_ls(i46 %x) nounwind  {
+	store i46 %x, i46* @i46_s
+	ret void
+}
+
+define void @i47_ls(i47 %x) nounwind  {
+	store i47 %x, i47* @i47_s
+	ret void
+}
+
+define void @i48_ls(i48 %x) nounwind  {
+	store i48 %x, i48* @i48_s
+	ret void
+}
+
+define void @i49_ls(i49 %x) nounwind  {
+	store i49 %x, i49* @i49_s
+	ret void
+}
+
+define void @i50_ls(i50 %x) nounwind  {
+	store i50 %x, i50* @i50_s
+	ret void
+}
+
+define void @i51_ls(i51 %x) nounwind  {
+	store i51 %x, i51* @i51_s
+	ret void
+}
+
+define void @i52_ls(i52 %x) nounwind  {
+	store i52 %x, i52* @i52_s
+	ret void
+}
+
+define void @i53_ls(i53 %x) nounwind  {
+	store i53 %x, i53* @i53_s
+	ret void
+}
+
+define void @i54_ls(i54 %x) nounwind  {
+	store i54 %x, i54* @i54_s
+	ret void
+}
+
+define void @i55_ls(i55 %x) nounwind  {
+	store i55 %x, i55* @i55_s
+	ret void
+}
+
+define void @i56_ls(i56 %x) nounwind  {
+	store i56 %x, i56* @i56_s
+	ret void
+}
+
+define void @i57_ls(i57 %x) nounwind  {
+	store i57 %x, i57* @i57_s
+	ret void
+}
+
+define void @i58_ls(i58 %x) nounwind  {
+	store i58 %x, i58* @i58_s
+	ret void
+}
+
+define void @i59_ls(i59 %x) nounwind  {
+	store i59 %x, i59* @i59_s
+	ret void
+}
+
+define void @i60_ls(i60 %x) nounwind  {
+	store i60 %x, i60* @i60_s
+	ret void
+}
+
+define void @i61_ls(i61 %x) nounwind  {
+	store i61 %x, i61* @i61_s
+	ret void
+}
+
+define void @i62_ls(i62 %x) nounwind  {
+	store i62 %x, i62* @i62_s
+	ret void
+}
+
+define void @i63_ls(i63 %x) nounwind  {
+	store i63 %x, i63* @i63_s
+	ret void
+}
+
+define void @i64_ls(i64 %x) nounwind  {
+	store i64 %x, i64* @i64_s
+	ret void
+}

diff  --git a/llvm/test/CodeGen/NVPTX/APIntSextParam.ll b/llvm/test/CodeGen/NVPTX/APIntSextParam.ll
new file mode 100644
index 0000000000000..4594a5c0d4c64
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/APIntSextParam.ll
@@ -0,0 +1,387 @@
+; RUN: llc -march=nvptx  < %s > %t
+; RUN: llc -march=nvptx64  < %s > %t
+
+ at i1_s = external global i1		; <i1*> [#uses=1]
+ at i2_s = external global i2		; <i2*> [#uses=1]
+ at i3_s = external global i3		; <i3*> [#uses=1]
+ at i4_s = external global i4		; <i4*> [#uses=1]
+ at i5_s = external global i5		; <i5*> [#uses=1]
+ at i6_s = external global i6		; <i6*> [#uses=1]
+ at i7_s = external global i7		; <i7*> [#uses=1]
+ at i8_s = external global i8		; <i8*> [#uses=1]
+ at i9_s = external global i9		; <i9*> [#uses=1]
+ at i10_s = external global i10		; <i10*> [#uses=1]
+ at i11_s = external global i11		; <i11*> [#uses=1]
+ at i12_s = external global i12		; <i12*> [#uses=1]
+ at i13_s = external global i13		; <i13*> [#uses=1]
+ at i14_s = external global i14		; <i14*> [#uses=1]
+ at i15_s = external global i15		; <i15*> [#uses=1]
+ at i16_s = external global i16		; <i16*> [#uses=1]
+ at i17_s = external global i17		; <i17*> [#uses=1]
+ at i18_s = external global i18		; <i18*> [#uses=1]
+ at i19_s = external global i19		; <i19*> [#uses=1]
+ at i20_s = external global i20		; <i20*> [#uses=1]
+ at i21_s = external global i21		; <i21*> [#uses=1]
+ at i22_s = external global i22		; <i22*> [#uses=1]
+ at i23_s = external global i23		; <i23*> [#uses=1]
+ at i24_s = external global i24		; <i24*> [#uses=1]
+ at i25_s = external global i25		; <i25*> [#uses=1]
+ at i26_s = external global i26		; <i26*> [#uses=1]
+ at i27_s = external global i27		; <i27*> [#uses=1]
+ at i28_s = external global i28		; <i28*> [#uses=1]
+ at i29_s = external global i29		; <i29*> [#uses=1]
+ at i30_s = external global i30		; <i30*> [#uses=1]
+ at i31_s = external global i31		; <i31*> [#uses=1]
+ at i32_s = external global i32		; <i32*> [#uses=1]
+ at i33_s = external global i33		; <i33*> [#uses=1]
+ at i34_s = external global i34		; <i34*> [#uses=1]
+ at i35_s = external global i35		; <i35*> [#uses=1]
+ at i36_s = external global i36		; <i36*> [#uses=1]
+ at i37_s = external global i37		; <i37*> [#uses=1]
+ at i38_s = external global i38		; <i38*> [#uses=1]
+ at i39_s = external global i39		; <i39*> [#uses=1]
+ at i40_s = external global i40		; <i40*> [#uses=1]
+ at i41_s = external global i41		; <i41*> [#uses=1]
+ at i42_s = external global i42		; <i42*> [#uses=1]
+ at i43_s = external global i43		; <i43*> [#uses=1]
+ at i44_s = external global i44		; <i44*> [#uses=1]
+ at i45_s = external global i45		; <i45*> [#uses=1]
+ at i46_s = external global i46		; <i46*> [#uses=1]
+ at i47_s = external global i47		; <i47*> [#uses=1]
+ at i48_s = external global i48		; <i48*> [#uses=1]
+ at i49_s = external global i49		; <i49*> [#uses=1]
+ at i50_s = external global i50		; <i50*> [#uses=1]
+ at i51_s = external global i51		; <i51*> [#uses=1]
+ at i52_s = external global i52		; <i52*> [#uses=1]
+ at i53_s = external global i53		; <i53*> [#uses=1]
+ at i54_s = external global i54		; <i54*> [#uses=1]
+ at i55_s = external global i55		; <i55*> [#uses=1]
+ at i56_s = external global i56		; <i56*> [#uses=1]
+ at i57_s = external global i57		; <i57*> [#uses=1]
+ at i58_s = external global i58		; <i58*> [#uses=1]
+ at i59_s = external global i59		; <i59*> [#uses=1]
+ at i60_s = external global i60		; <i60*> [#uses=1]
+ at i61_s = external global i61		; <i61*> [#uses=1]
+ at i62_s = external global i62		; <i62*> [#uses=1]
+ at i63_s = external global i63		; <i63*> [#uses=1]
+ at i64_s = external global i64		; <i64*> [#uses=1]
+
+define void @i1_ls(i1 signext %x) nounwind  {
+	store i1 %x, i1* @i1_s
+	ret void
+}
+
+define void @i2_ls(i2 signext %x) nounwind  {
+	store i2 %x, i2* @i2_s
+	ret void
+}
+
+define void @i3_ls(i3 signext %x) nounwind  {
+	store i3 %x, i3* @i3_s
+	ret void
+}
+
+define void @i4_ls(i4 signext %x) nounwind  {
+	store i4 %x, i4* @i4_s
+	ret void
+}
+
+define void @i5_ls(i5 signext %x) nounwind  {
+	store i5 %x, i5* @i5_s
+	ret void
+}
+
+define void @i6_ls(i6 signext %x) nounwind  {
+	store i6 %x, i6* @i6_s
+	ret void
+}
+
+define void @i7_ls(i7 signext %x) nounwind  {
+	store i7 %x, i7* @i7_s
+	ret void
+}
+
+define void @i8_ls(i8 signext %x) nounwind  {
+	store i8 %x, i8* @i8_s
+	ret void
+}
+
+define void @i9_ls(i9 signext %x) nounwind  {
+	store i9 %x, i9* @i9_s
+	ret void
+}
+
+define void @i10_ls(i10 signext %x) nounwind  {
+	store i10 %x, i10* @i10_s
+	ret void
+}
+
+define void @i11_ls(i11 signext %x) nounwind  {
+	store i11 %x, i11* @i11_s
+	ret void
+}
+
+define void @i12_ls(i12 signext %x) nounwind  {
+	store i12 %x, i12* @i12_s
+	ret void
+}
+
+define void @i13_ls(i13 signext %x) nounwind  {
+	store i13 %x, i13* @i13_s
+	ret void
+}
+
+define void @i14_ls(i14 signext %x) nounwind  {
+	store i14 %x, i14* @i14_s
+	ret void
+}
+
+define void @i15_ls(i15 signext %x) nounwind  {
+	store i15 %x, i15* @i15_s
+	ret void
+}
+
+define void @i16_ls(i16 signext %x) nounwind  {
+	store i16 %x, i16* @i16_s
+	ret void
+}
+
+define void @i17_ls(i17 signext %x) nounwind  {
+	store i17 %x, i17* @i17_s
+	ret void
+}
+
+define void @i18_ls(i18 signext %x) nounwind  {
+	store i18 %x, i18* @i18_s
+	ret void
+}
+
+define void @i19_ls(i19 signext %x) nounwind  {
+	store i19 %x, i19* @i19_s
+	ret void
+}
+
+define void @i20_ls(i20 signext %x) nounwind  {
+	store i20 %x, i20* @i20_s
+	ret void
+}
+
+define void @i21_ls(i21 signext %x) nounwind  {
+	store i21 %x, i21* @i21_s
+	ret void
+}
+
+define void @i22_ls(i22 signext %x) nounwind  {
+	store i22 %x, i22* @i22_s
+	ret void
+}
+
+define void @i23_ls(i23 signext %x) nounwind  {
+	store i23 %x, i23* @i23_s
+	ret void
+}
+
+define void @i24_ls(i24 signext %x) nounwind  {
+	store i24 %x, i24* @i24_s
+	ret void
+}
+
+define void @i25_ls(i25 signext %x) nounwind  {
+	store i25 %x, i25* @i25_s
+	ret void
+}
+
+define void @i26_ls(i26 signext %x) nounwind  {
+	store i26 %x, i26* @i26_s
+	ret void
+}
+
+define void @i27_ls(i27 signext %x) nounwind  {
+	store i27 %x, i27* @i27_s
+	ret void
+}
+
+define void @i28_ls(i28 signext %x) nounwind  {
+	store i28 %x, i28* @i28_s
+	ret void
+}
+
+define void @i29_ls(i29 signext %x) nounwind  {
+	store i29 %x, i29* @i29_s
+	ret void
+}
+
+define void @i30_ls(i30 signext %x) nounwind  {
+	store i30 %x, i30* @i30_s
+	ret void
+}
+
+define void @i31_ls(i31 signext %x) nounwind  {
+	store i31 %x, i31* @i31_s
+	ret void
+}
+
+define void @i32_ls(i32 signext %x) nounwind  {
+	store i32 %x, i32* @i32_s
+	ret void
+}
+
+define void @i33_ls(i33 signext %x) nounwind  {
+	store i33 %x, i33* @i33_s
+	ret void
+}
+
+define void @i34_ls(i34 signext %x) nounwind  {
+	store i34 %x, i34* @i34_s
+	ret void
+}
+
+define void @i35_ls(i35 signext %x) nounwind  {
+	store i35 %x, i35* @i35_s
+	ret void
+}
+
+define void @i36_ls(i36 signext %x) nounwind  {
+	store i36 %x, i36* @i36_s
+	ret void
+}
+
+define void @i37_ls(i37 signext %x) nounwind  {
+	store i37 %x, i37* @i37_s
+	ret void
+}
+
+define void @i38_ls(i38 signext %x) nounwind  {
+	store i38 %x, i38* @i38_s
+	ret void
+}
+
+define void @i39_ls(i39 signext %x) nounwind  {
+	store i39 %x, i39* @i39_s
+	ret void
+}
+
+define void @i40_ls(i40 signext %x) nounwind  {
+	store i40 %x, i40* @i40_s
+	ret void
+}
+
+define void @i41_ls(i41 signext %x) nounwind  {
+	store i41 %x, i41* @i41_s
+	ret void
+}
+
+define void @i42_ls(i42 signext %x) nounwind  {
+	store i42 %x, i42* @i42_s
+	ret void
+}
+
+define void @i43_ls(i43 signext %x) nounwind  {
+	store i43 %x, i43* @i43_s
+	ret void
+}
+
+define void @i44_ls(i44 signext %x) nounwind  {
+	store i44 %x, i44* @i44_s
+	ret void
+}
+
+define void @i45_ls(i45 signext %x) nounwind  {
+	store i45 %x, i45* @i45_s
+	ret void
+}
+
+define void @i46_ls(i46 signext %x) nounwind  {
+	store i46 %x, i46* @i46_s
+	ret void
+}
+
+define void @i47_ls(i47 signext %x) nounwind  {
+	store i47 %x, i47* @i47_s
+	ret void
+}
+
+define void @i48_ls(i48 signext %x) nounwind  {
+	store i48 %x, i48* @i48_s
+	ret void
+}
+
+define void @i49_ls(i49 signext %x) nounwind  {
+	store i49 %x, i49* @i49_s
+	ret void
+}
+
+define void @i50_ls(i50 signext %x) nounwind  {
+	store i50 %x, i50* @i50_s
+	ret void
+}
+
+define void @i51_ls(i51 signext %x) nounwind  {
+	store i51 %x, i51* @i51_s
+	ret void
+}
+
+define void @i52_ls(i52 signext %x) nounwind  {
+	store i52 %x, i52* @i52_s
+	ret void
+}
+
+define void @i53_ls(i53 signext %x) nounwind  {
+	store i53 %x, i53* @i53_s
+	ret void
+}
+
+define void @i54_ls(i54 signext %x) nounwind  {
+	store i54 %x, i54* @i54_s
+	ret void
+}
+
+define void @i55_ls(i55 signext %x) nounwind  {
+	store i55 %x, i55* @i55_s
+	ret void
+}
+
+define void @i56_ls(i56 signext %x) nounwind  {
+	store i56 %x, i56* @i56_s
+	ret void
+}
+
+define void @i57_ls(i57 signext %x) nounwind  {
+	store i57 %x, i57* @i57_s
+	ret void
+}
+
+define void @i58_ls(i58 signext %x) nounwind  {
+	store i58 %x, i58* @i58_s
+	ret void
+}
+
+define void @i59_ls(i59 signext %x) nounwind  {
+	store i59 %x, i59* @i59_s
+	ret void
+}
+
+define void @i60_ls(i60 signext %x) nounwind  {
+	store i60 %x, i60* @i60_s
+	ret void
+}
+
+define void @i61_ls(i61 signext %x) nounwind  {
+	store i61 %x, i61* @i61_s
+	ret void
+}
+
+define void @i62_ls(i62 signext %x) nounwind  {
+	store i62 %x, i62* @i62_s
+	ret void
+}
+
+define void @i63_ls(i63 signext %x) nounwind  {
+	store i63 %x, i63* @i63_s
+	ret void
+}
+
+define void @i64_ls(i64 signext %x) nounwind  {
+	store i64 %x, i64* @i64_s
+	ret void
+}

diff  --git a/llvm/test/CodeGen/NVPTX/APIntZextParam.ll b/llvm/test/CodeGen/NVPTX/APIntZextParam.ll
new file mode 100644
index 0000000000000..403462017fb44
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/APIntZextParam.ll
@@ -0,0 +1,387 @@
+; RUN: llc -march=nvptx  < %s > %t
+; RUN: llc -march=nvptx64  < %s > %t
+
+ at i1_s = external global i1		; <i1*> [#uses=1]
+ at i2_s = external global i2		; <i2*> [#uses=1]
+ at i3_s = external global i3		; <i3*> [#uses=1]
+ at i4_s = external global i4		; <i4*> [#uses=1]
+ at i5_s = external global i5		; <i5*> [#uses=1]
+ at i6_s = external global i6		; <i6*> [#uses=1]
+ at i7_s = external global i7		; <i7*> [#uses=1]
+ at i8_s = external global i8		; <i8*> [#uses=1]
+ at i9_s = external global i9		; <i9*> [#uses=1]
+ at i10_s = external global i10		; <i10*> [#uses=1]
+ at i11_s = external global i11		; <i11*> [#uses=1]
+ at i12_s = external global i12		; <i12*> [#uses=1]
+ at i13_s = external global i13		; <i13*> [#uses=1]
+ at i14_s = external global i14		; <i14*> [#uses=1]
+ at i15_s = external global i15		; <i15*> [#uses=1]
+ at i16_s = external global i16		; <i16*> [#uses=1]
+ at i17_s = external global i17		; <i17*> [#uses=1]
+ at i18_s = external global i18		; <i18*> [#uses=1]
+ at i19_s = external global i19		; <i19*> [#uses=1]
+ at i20_s = external global i20		; <i20*> [#uses=1]
+ at i21_s = external global i21		; <i21*> [#uses=1]
+ at i22_s = external global i22		; <i22*> [#uses=1]
+ at i23_s = external global i23		; <i23*> [#uses=1]
+ at i24_s = external global i24		; <i24*> [#uses=1]
+ at i25_s = external global i25		; <i25*> [#uses=1]
+ at i26_s = external global i26		; <i26*> [#uses=1]
+ at i27_s = external global i27		; <i27*> [#uses=1]
+ at i28_s = external global i28		; <i28*> [#uses=1]
+ at i29_s = external global i29		; <i29*> [#uses=1]
+ at i30_s = external global i30		; <i30*> [#uses=1]
+ at i31_s = external global i31		; <i31*> [#uses=1]
+ at i32_s = external global i32		; <i32*> [#uses=1]
+ at i33_s = external global i33		; <i33*> [#uses=1]
+ at i34_s = external global i34		; <i34*> [#uses=1]
+ at i35_s = external global i35		; <i35*> [#uses=1]
+ at i36_s = external global i36		; <i36*> [#uses=1]
+ at i37_s = external global i37		; <i37*> [#uses=1]
+ at i38_s = external global i38		; <i38*> [#uses=1]
+ at i39_s = external global i39		; <i39*> [#uses=1]
+ at i40_s = external global i40		; <i40*> [#uses=1]
+ at i41_s = external global i41		; <i41*> [#uses=1]
+ at i42_s = external global i42		; <i42*> [#uses=1]
+ at i43_s = external global i43		; <i43*> [#uses=1]
+ at i44_s = external global i44		; <i44*> [#uses=1]
+ at i45_s = external global i45		; <i45*> [#uses=1]
+ at i46_s = external global i46		; <i46*> [#uses=1]
+ at i47_s = external global i47		; <i47*> [#uses=1]
+ at i48_s = external global i48		; <i48*> [#uses=1]
+ at i49_s = external global i49		; <i49*> [#uses=1]
+ at i50_s = external global i50		; <i50*> [#uses=1]
+ at i51_s = external global i51		; <i51*> [#uses=1]
+ at i52_s = external global i52		; <i52*> [#uses=1]
+ at i53_s = external global i53		; <i53*> [#uses=1]
+ at i54_s = external global i54		; <i54*> [#uses=1]
+ at i55_s = external global i55		; <i55*> [#uses=1]
+ at i56_s = external global i56		; <i56*> [#uses=1]
+ at i57_s = external global i57		; <i57*> [#uses=1]
+ at i58_s = external global i58		; <i58*> [#uses=1]
+ at i59_s = external global i59		; <i59*> [#uses=1]
+ at i60_s = external global i60		; <i60*> [#uses=1]
+ at i61_s = external global i61		; <i61*> [#uses=1]
+ at i62_s = external global i62		; <i62*> [#uses=1]
+ at i63_s = external global i63		; <i63*> [#uses=1]
+ at i64_s = external global i64		; <i64*> [#uses=1]
+
+define void @i1_ls(i1 zeroext %x) nounwind  {
+	store i1 %x, i1* @i1_s
+	ret void
+}
+
+define void @i2_ls(i2 zeroext %x) nounwind  {
+	store i2 %x, i2* @i2_s
+	ret void
+}
+
+define void @i3_ls(i3 zeroext %x) nounwind  {
+	store i3 %x, i3* @i3_s
+	ret void
+}
+
+define void @i4_ls(i4 zeroext %x) nounwind  {
+	store i4 %x, i4* @i4_s
+	ret void
+}
+
+define void @i5_ls(i5 zeroext %x) nounwind  {
+	store i5 %x, i5* @i5_s
+	ret void
+}
+
+define void @i6_ls(i6 zeroext %x) nounwind  {
+	store i6 %x, i6* @i6_s
+	ret void
+}
+
+define void @i7_ls(i7 zeroext %x) nounwind  {
+	store i7 %x, i7* @i7_s
+	ret void
+}
+
+define void @i8_ls(i8 zeroext %x) nounwind  {
+	store i8 %x, i8* @i8_s
+	ret void
+}
+
+define void @i9_ls(i9 zeroext %x) nounwind  {
+	store i9 %x, i9* @i9_s
+	ret void
+}
+
+define void @i10_ls(i10 zeroext %x) nounwind  {
+	store i10 %x, i10* @i10_s
+	ret void
+}
+
+define void @i11_ls(i11 zeroext %x) nounwind  {
+	store i11 %x, i11* @i11_s
+	ret void
+}
+
+define void @i12_ls(i12 zeroext %x) nounwind  {
+	store i12 %x, i12* @i12_s
+	ret void
+}
+
+define void @i13_ls(i13 zeroext %x) nounwind  {
+	store i13 %x, i13* @i13_s
+	ret void
+}
+
+define void @i14_ls(i14 zeroext %x) nounwind  {
+	store i14 %x, i14* @i14_s
+	ret void
+}
+
+define void @i15_ls(i15 zeroext %x) nounwind  {
+	store i15 %x, i15* @i15_s
+	ret void
+}
+
+define void @i16_ls(i16 zeroext %x) nounwind  {
+	store i16 %x, i16* @i16_s
+	ret void
+}
+
+define void @i17_ls(i17 zeroext %x) nounwind  {
+	store i17 %x, i17* @i17_s
+	ret void
+}
+
+define void @i18_ls(i18 zeroext %x) nounwind  {
+	store i18 %x, i18* @i18_s
+	ret void
+}
+
+define void @i19_ls(i19 zeroext %x) nounwind  {
+	store i19 %x, i19* @i19_s
+	ret void
+}
+
+define void @i20_ls(i20 zeroext %x) nounwind  {
+	store i20 %x, i20* @i20_s
+	ret void
+}
+
+define void @i21_ls(i21 zeroext %x) nounwind  {
+	store i21 %x, i21* @i21_s
+	ret void
+}
+
+define void @i22_ls(i22 zeroext %x) nounwind  {
+	store i22 %x, i22* @i22_s
+	ret void
+}
+
+define void @i23_ls(i23 zeroext %x) nounwind  {
+	store i23 %x, i23* @i23_s
+	ret void
+}
+
+define void @i24_ls(i24 zeroext %x) nounwind  {
+	store i24 %x, i24* @i24_s
+	ret void
+}
+
+define void @i25_ls(i25 zeroext %x) nounwind  {
+	store i25 %x, i25* @i25_s
+	ret void
+}
+
+define void @i26_ls(i26 zeroext %x) nounwind  {
+	store i26 %x, i26* @i26_s
+	ret void
+}
+
+define void @i27_ls(i27 zeroext %x) nounwind  {
+	store i27 %x, i27* @i27_s
+	ret void
+}
+
+define void @i28_ls(i28 zeroext %x) nounwind  {
+	store i28 %x, i28* @i28_s
+	ret void
+}
+
+define void @i29_ls(i29 zeroext %x) nounwind  {
+	store i29 %x, i29* @i29_s
+	ret void
+}
+
+define void @i30_ls(i30 zeroext %x) nounwind  {
+	store i30 %x, i30* @i30_s
+	ret void
+}
+
+define void @i31_ls(i31 zeroext %x) nounwind  {
+	store i31 %x, i31* @i31_s
+	ret void
+}
+
+define void @i32_ls(i32 zeroext %x) nounwind  {
+	store i32 %x, i32* @i32_s
+	ret void
+}
+
+define void @i33_ls(i33 zeroext %x) nounwind  {
+	store i33 %x, i33* @i33_s
+	ret void
+}
+
+define void @i34_ls(i34 zeroext %x) nounwind  {
+	store i34 %x, i34* @i34_s
+	ret void
+}
+
+define void @i35_ls(i35 zeroext %x) nounwind  {
+	store i35 %x, i35* @i35_s
+	ret void
+}
+
+define void @i36_ls(i36 zeroext %x) nounwind  {
+	store i36 %x, i36* @i36_s
+	ret void
+}
+
+define void @i37_ls(i37 zeroext %x) nounwind  {
+	store i37 %x, i37* @i37_s
+	ret void
+}
+
+define void @i38_ls(i38 zeroext %x) nounwind  {
+	store i38 %x, i38* @i38_s
+	ret void
+}
+
+define void @i39_ls(i39 zeroext %x) nounwind  {
+	store i39 %x, i39* @i39_s
+	ret void
+}
+
+define void @i40_ls(i40 zeroext %x) nounwind  {
+	store i40 %x, i40* @i40_s
+	ret void
+}
+
+define void @i41_ls(i41 zeroext %x) nounwind  {
+	store i41 %x, i41* @i41_s
+	ret void
+}
+
+define void @i42_ls(i42 zeroext %x) nounwind  {
+	store i42 %x, i42* @i42_s
+	ret void
+}
+
+define void @i43_ls(i43 zeroext %x) nounwind  {
+	store i43 %x, i43* @i43_s
+	ret void
+}
+
+define void @i44_ls(i44 zeroext %x) nounwind  {
+	store i44 %x, i44* @i44_s
+	ret void
+}
+
+define void @i45_ls(i45 zeroext %x) nounwind  {
+	store i45 %x, i45* @i45_s
+	ret void
+}
+
+define void @i46_ls(i46 zeroext %x) nounwind  {
+	store i46 %x, i46* @i46_s
+	ret void
+}
+
+define void @i47_ls(i47 zeroext %x) nounwind  {
+	store i47 %x, i47* @i47_s
+	ret void
+}
+
+define void @i48_ls(i48 zeroext %x) nounwind  {
+	store i48 %x, i48* @i48_s
+	ret void
+}
+
+define void @i49_ls(i49 zeroext %x) nounwind  {
+	store i49 %x, i49* @i49_s
+	ret void
+}
+
+define void @i50_ls(i50 zeroext %x) nounwind  {
+	store i50 %x, i50* @i50_s
+	ret void
+}
+
+define void @i51_ls(i51 zeroext %x) nounwind  {
+	store i51 %x, i51* @i51_s
+	ret void
+}
+
+define void @i52_ls(i52 zeroext %x) nounwind  {
+	store i52 %x, i52* @i52_s
+	ret void
+}
+
+define void @i53_ls(i53 zeroext %x) nounwind  {
+	store i53 %x, i53* @i53_s
+	ret void
+}
+
+define void @i54_ls(i54 zeroext %x) nounwind  {
+	store i54 %x, i54* @i54_s
+	ret void
+}
+
+define void @i55_ls(i55 zeroext %x) nounwind  {
+	store i55 %x, i55* @i55_s
+	ret void
+}
+
+define void @i56_ls(i56 zeroext %x) nounwind  {
+	store i56 %x, i56* @i56_s
+	ret void
+}
+
+define void @i57_ls(i57 zeroext %x) nounwind  {
+	store i57 %x, i57* @i57_s
+	ret void
+}
+
+define void @i58_ls(i58 zeroext %x) nounwind  {
+	store i58 %x, i58* @i58_s
+	ret void
+}
+
+define void @i59_ls(i59 zeroext %x) nounwind  {
+	store i59 %x, i59* @i59_s
+	ret void
+}
+
+define void @i60_ls(i60 zeroext %x) nounwind  {
+	store i60 %x, i60* @i60_s
+	ret void
+}
+
+define void @i61_ls(i61 zeroext %x) nounwind  {
+	store i61 %x, i61* @i61_s
+	ret void
+}
+
+define void @i62_ls(i62 zeroext %x) nounwind  {
+	store i62 %x, i62* @i62_s
+	ret void
+}
+
+define void @i63_ls(i63 zeroext %x) nounwind  {
+	store i63 %x, i63* @i63_s
+	ret void
+}
+
+define void @i64_ls(i64 zeroext %x) nounwind  {
+	store i64 %x, i64* @i64_s
+	ret void
+}

diff  --git a/llvm/test/Feature/optnone-llc.ll b/llvm/test/Feature/optnone-llc.ll
index 2129fc9b8815e..cd4a4f0d0a7ae 100644
--- a/llvm/test/Feature/optnone-llc.ll
+++ b/llvm/test/Feature/optnone-llc.ll
@@ -6,6 +6,7 @@
 ; RUN: llc -O1 -debug-only=isel -fast-isel=false %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=NOFAST
 
 ; REQUIRES: asserts, default_triple
+; UNSUPPORTED: nvptx
 
 ; This test verifies that we don't run Machine Function optimizations
 ; on optnone functions, and that we can turn off FastISel.

diff  --git a/llvm/test/MC/AsmParser/include.ll b/llvm/test/MC/AsmParser/include.ll
index c7751cc678961..4009fbaed455e 100644
--- a/llvm/test/MC/AsmParser/include.ll
+++ b/llvm/test/MC/AsmParser/include.ll
@@ -1,5 +1,5 @@
 ; RUN: llc -I %p/Inputs -filetype asm -o - %s | FileCheck %s
-; UNSUPPORTED: -zos
+; UNSUPPORTED: -zos,nvptx
 ; REQUIRES: default_triple
 
 module asm ".include \22module.x\22"

diff  --git a/llvm/test/MC/AsmParser/macro-same-context.ll b/llvm/test/MC/AsmParser/macro-same-context.ll
index 91d58579afac7..ddd548a813208 100644
--- a/llvm/test/MC/AsmParser/macro-same-context.ll
+++ b/llvm/test/MC/AsmParser/macro-same-context.ll
@@ -1,6 +1,6 @@
 ;; Test that macros in inline assembly blocks share the same context,
 ;; thus a definition is available to the whole file. PR36110
-; UNSUPPORTED: -zos
+; UNSUPPORTED: -zos,nvptx
 ; RUN: not llc < %s 2>&1 | FileCheck %s
 ; REQUIRES: default_triple
 


        


More information about the llvm-commits mailing list