1
1
// no-system-llvm
2
2
// 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
7
5
8
6
#![ feature( no_core, lang_items, rustc_attrs) ]
9
- #![ crate_type = "rlib" ]
10
7
#![ no_core]
11
- #![ allow( asm_sub_register, non_camel_case_types) ]
12
8
13
9
#[ rustc_builtin_macro]
14
10
macro_rules! asm {
@@ -18,10 +14,6 @@ macro_rules! asm {
18
14
macro_rules! concat {
19
15
( ) => { } ;
20
16
}
21
- #[ rustc_builtin_macro]
22
- macro_rules! stringify {
23
- ( ) => { } ;
24
- }
25
17
26
18
#[ lang = "sized" ]
27
19
trait Sized { }
@@ -39,19 +31,19 @@ impl Copy for f64 {}
39
31
impl Copy for ptr { }
40
32
41
33
#[ no_mangle]
42
- fn extern_func ( ) ;
34
+ fn extern_func ( ) { }
43
35
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
48
40
#[ no_mangle]
49
41
pub unsafe fn sym_fn ( ) {
50
- asm ! ( "call {}" , sym extern_func) ;
42
+ asm ! ( "call {}; " , sym extern_func) ;
51
43
}
52
44
53
45
macro_rules! check {
54
- ( $func: ident $ty: ident, $class: ident $mov: literal) => {
46
+ ( $func: ident $ty: ident $class: ident $mov: literal) => {
55
47
#[ no_mangle]
56
48
pub unsafe fn $func( x: $ty) -> $ty {
57
49
let y;
@@ -61,80 +53,80 @@ macro_rules! check {
61
53
} ;
62
54
}
63
55
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
68
60
check ! ( reg16_i8 i8 reg16 "mov.i16" ) ;
69
61
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
74
66
check ! ( reg16_i16 i16 reg16 "mov.i16" ) ;
75
67
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
80
72
check ! ( reg32_i8 i8 reg32 "mov.i32" ) ;
81
73
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
86
78
check ! ( reg32_i16 i16 reg32 "mov.i32" ) ;
87
79
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
92
84
check ! ( reg32_i32 i32 reg32 "mov.i32" ) ;
93
85
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
98
90
check ! ( reg32_f32 f32 reg32 "mov.i32" ) ;
99
91
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
104
96
check ! ( reg64_i8 i8 reg64 "mov.i64" ) ;
105
97
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
110
102
check ! ( reg64_i16 i16 reg64 "mov.i64" ) ;
111
103
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
116
108
check ! ( reg64_i32 i32 reg64 "mov.i64" ) ;
117
109
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
122
114
check ! ( reg64_f32 f32 reg64 "mov.i64" ) ;
123
115
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
128
120
check ! ( reg64_i64 i64 reg64 "mov.i64" ) ;
129
121
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
134
126
check ! ( reg64_f64 f64 reg64 "mov.i64" ) ;
135
127
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
140
132
check ! ( reg64_ptr ptr reg64 "mov.i64" ) ;
0 commit comments