11// no-system-llvm
22// assembly-output: emit-asm
3- // compile-flags: --target --nvptx64-nvidia-cuda
4- // compile-flags: -Z merge-functions=disabled
5- // only-nvptx64
6- // ignore-nvptx64
3+ // compile-flags: --target nvptx64-nvidia-cuda
4+ // compile-flags: --crate-type cdylib
75
86#![ feature( no_core, lang_items, rustc_attrs) ]
9- #![ crate_type = "rlib" ]
107#![ no_core]
11- #![ allow( asm_sub_register, non_camel_case_types) ]
128
139#[ rustc_builtin_macro]
1410macro_rules! asm {
@@ -18,10 +14,6 @@ macro_rules! asm {
1814macro_rules! concat {
1915 ( ) => { } ;
2016}
21- #[ rustc_builtin_macro]
22- macro_rules! stringify {
23- ( ) => { } ;
24- }
2517
2618#[ lang = "sized" ]
2719trait Sized { }
@@ -39,19 +31,19 @@ impl Copy for f64 {}
3931impl Copy for ptr { }
4032
4133#[ no_mangle]
42- fn extern_func ( ) ;
34+ fn extern_func ( ) { }
4335
44- // CHECK-LABEL: sym_fn
45- // CHECK: #APP
46- // CHECK call extern_func;
47- // CHECK: #NO_APP
36+ // CHECK-LABEL: .visible .func sym_fn()
37+ // CHECK: // begin inline asm
38+ // CHECK: call extern_func;
39+ // CHECK: // end inline asm
4840#[ no_mangle]
4941pub unsafe fn sym_fn ( ) {
50- asm ! ( "call {}" , sym extern_func) ;
42+ asm ! ( "call {}; " , sym extern_func) ;
5143}
5244
5345macro_rules! check {
54- ( $func: ident $ty: ident, $class: ident $mov: literal) => {
46+ ( $func: ident $ty: ident $class: ident $mov: literal) => {
5547 #[ no_mangle]
5648 pub unsafe fn $func( x: $ty) -> $ty {
5749 let y;
@@ -61,80 +53,80 @@ macro_rules! check {
6153 } ;
6254}
6355
64- // CHECK-LABEL: reg16_i8
65- // CHECK: #APP
66- // CHECK: mov.i16 {{[a-z0-9]+}}, {{[a-z0-9]+}};
67- // CHECK: #NO_APP
56+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg16_i8
57+ // CHECK: // begin inline asm
58+ // CHECK: mov.i16 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
59+ // CHECK: // end inline asm
6860check ! ( reg16_i8 i8 reg16 "mov.i16" ) ;
6961
70- // CHECK-LABEL: reg16_i16
71- // CHECK: #APP
72- // CHECK: mov.i16 {{[a-z0-9]+}}, {{[a-z0-9]+}};
73- // CHECK: #NO_APP
62+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg16_i16
63+ // CHECK: // begin inline asm
64+ // CHECK: mov.i16 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
65+ // CHECK: // end inline asm
7466check ! ( reg16_i16 i16 reg16 "mov.i16" ) ;
7567
76- // CHECK-LABEL: reg32_i8
77- // CHECK: #APP
78- // CHECK: mov.i32 {{[a-z0-9]+}}, {{[a-z0-9]+}};
79- // CHECK: #NO_APP
68+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg32_i8
69+ // CHECK: // begin inline asm
70+ // CHECK: mov.i32 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
71+ // CHECK: // end inline asm
8072check ! ( reg32_i8 i8 reg32 "mov.i32" ) ;
8173
82- // CHECK-LABEL: reg32_i16
83- // CHECK: #APP
84- // CHECK: mov.i32 {{[a-z0-9]+}}, {{[a-z0-9]+}};
85- // CHECK: #NO_APP
74+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg32_i16
75+ // CHECK: // begin inline asm
76+ // CHECK: mov.i32 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
77+ // CHECK: // end inline asm
8678check ! ( reg32_i16 i16 reg32 "mov.i32" ) ;
8779
88- // CHECK-LABEL: reg32_i32
89- // CHECK: #APP
90- // CHECK: mov.i32 {{[a-z0-9]+}}, {{[a-z0-9]+}};
91- // CHECK: #NO_APP
80+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg32_i32
81+ // CHECK: // begin inline asm
82+ // CHECK: mov.i32 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
83+ // CHECK: // end inline asm
9284check ! ( reg32_i32 i32 reg32 "mov.i32" ) ;
9385
94- // CHECK-LABEL: reg32_f32
95- // CHECK: #APP
96- // CHECK: mov.i32 {{[a-z0-9]+}}, {{[a-z0-9]+}};
97- // CHECK: #NO_APP
86+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg32_f32
87+ // CHECK: // begin inline asm
88+ // CHECK: mov.i32 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
89+ // CHECK: // end inline asm
9890check ! ( reg32_f32 f32 reg32 "mov.i32" ) ;
9991
100- // CHECK-LABEL: reg64_i8
101- // CHECK: #APP
102- // CHECK: mov.i64 {{[a-z0-9]+}}, {{[a-z0-9]+}};
103- // CHECK: #NO_APP
92+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg64_i8
93+ // CHECK: // begin inline asm
94+ // CHECK: mov.i64 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
95+ // CHECK: // end inline asm
10496check ! ( reg64_i8 i8 reg64 "mov.i64" ) ;
10597
106- // CHECK-LABEL: reg64_i16
107- // CHECK: #APP
108- // CHECK: mov.i64 {{[a-z0-9]+}}, {{[a-z0-9]+}};
109- // CHECK: #NO_APP
98+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg64_i16
99+ // CHECK: // begin inline asm
100+ // CHECK: mov.i64 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
101+ // CHECK: // end inline asm
110102check ! ( reg64_i16 i16 reg64 "mov.i64" ) ;
111103
112- // CHECK-LABEL: reg64_i32
113- // CHECK: #APP
114- // CHECK: mov.i64 {{[a-z0-9]+}}, {{[a-z0-9]+}};
115- // CHECK: #NO_APP
104+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg64_i32
105+ // CHECK: // begin inline asm
106+ // CHECK: mov.i64 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
107+ // CHECK: // end inline asm
116108check ! ( reg64_i32 i32 reg64 "mov.i64" ) ;
117109
118- // CHECK-LABEL: reg64_f32
119- // CHECK: #APP
120- // CHECK: mov.i64 {{[a-z0-9]+}}, {{[a-z0-9]+}};
121- // CHECK: #NO_APP
110+ // CHECK-LABEL: .visible .func (.param .b32 func_retval0) reg64_f32
111+ // CHECK: // begin inline asm
112+ // CHECK: mov.i64 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
113+ // CHECK: // end inline asm
122114check ! ( reg64_f32 f32 reg64 "mov.i64" ) ;
123115
124- // CHECK-LABEL: reg64_i64
125- // CHECK: #APP
126- // CHECK: mov.i64 {{[a-z0-9]+}}, {{[a-z0-9]+}};
127- // CHECK: #NO_APP
116+ // CHECK-LABEL: .visible .func (.param .b64 func_retval0) reg64_i64
117+ // CHECK: // begin inline asm
118+ // CHECK: mov.i64 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
119+ // CHECK: // end inline asm
128120check ! ( reg64_i64 i64 reg64 "mov.i64" ) ;
129121
130- // CHECK-LABEL: reg64_f64
131- // CHECK: #APP
132- // CHECK: mov.i64 {{[a-z0-9]+}}, {{[a-z0-9]+}};
133- // CHECK: #NO_APP
122+ // CHECK-LABEL: .visible .func (.param .b64 func_retval0) reg64_f64
123+ // CHECK: // begin inline asm
124+ // CHECK: mov.i64 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
125+ // CHECK: // end inline asm
134126check ! ( reg64_f64 f64 reg64 "mov.i64" ) ;
135127
136- // CHECK-LABEL: reg64_ptr
137- // CHECK: #APP
138- // CHECK: mov.i64 {{[a-z0-9]+}}, {{[a-z0-9]+}};
139- // CHECK: #NO_APP
128+ // CHECK-LABEL: .visible .func (.param .b64 func_retval0) reg64_ptr
129+ // CHECK: // begin inline asm
130+ // CHECK: mov.i64 % {{[a-z0-9]+}}, % {{[a-z0-9]+}};
131+ // CHECK: // end inline asm
140132check ! ( reg64_ptr ptr reg64 "mov.i64" ) ;
0 commit comments