97416daf08016330a3c2d381336ad2128dbe8248
[oota-llvm.git] / test / MC / AArch64 / neon-scalar-cvt.s
1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
2
3 // Check that the assembler can handle the documented syntax for AArch64
4
5 //----------------------------------------------------------------------
6 // Scalar Signed Integer Convert To Floating-point
7 //----------------------------------------------------------------------
8
9     scvtf s22, s13
10     scvtf d21, d12
11
12 // CHECK: scvtf s22, s13    // encoding: [0xb6,0xd9,0x21,0x5e]
13 // CHECK: scvtf d21, d12    // encoding: [0x95,0xd9,0x61,0x5e]
14
15 //----------------------------------------------------------------------
16 // Scalar Unsigned Integer Convert To Floating-point
17 //----------------------------------------------------------------------
18
19     ucvtf s22, s13
20     ucvtf d21, d14
21
22 // CHECK: ucvtf s22, s13    // encoding: [0xb6,0xd9,0x21,0x7e]
23 // CHECK: ucvtf d21, d14    // encoding: [0xd5,0xd9,0x61,0x7e]
24
25 //----------------------------------------------------------------------
26 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
27 //----------------------------------------------------------------------
28
29     scvtf s22, s13, #32
30     scvtf d21, d12, #64
31
32 // CHECK: scvtf s22, s13, #32  // encoding: [0xb6,0xe5,0x20,0x5f]
33 // CHECK: scvtf d21, d12, #64  // encoding: [0x95,0xe5,0x40,0x5f]    
34
35 //----------------------------------------------------------------------
36 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
37 //----------------------------------------------------------------------
38
39     ucvtf s22, s13, #32
40     ucvtf d21, d14, #64
41
42 // CHECK: ucvtf s22, s13, #32  // encoding: [0xb6,0xe5,0x20,0x7f]
43 // CHECK: ucvtf d21, d14, #64  // encoding: [0xd5,0xe5,0x40,0x7f]
44
45 //----------------------------------------------------------------------
46 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
47 //----------------------------------------------------------------------
48
49     fcvtzs s21, s12, #1
50     fcvtzs d21, d12, #1
51
52 // CHECK: fcvtzs s21, s12, #1  // encoding: [0x95,0xfd,0x3f,0x5f]
53 // CHECK: fcvtzs d21, d12, #1  // encoding: [0x95,0xfd,0x7f,0x5f]
54         
55 //----------------------------------------------------------------------
56 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
57 //----------------------------------------------------------------------
58
59     fcvtzu s21, s12, #1
60     fcvtzu d21, d12, #1
61
62 // CHECK: fcvtzu s21, s12, #1  // encoding: [0x95,0xfd,0x3f,0x7f]
63 // CHECK: fcvtzu d21, d12, #1  // encoding: [0x95,0xfd,0x7f,0x7f]
64
65 //----------------------------------------------------------------------
66 // Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
67 // Odd
68 //----------------------------------------------------------------------
69
70     fcvtxn s22, d13
71
72 // CHECK: fcvtxn s22, d13    // encoding: [0xb6,0x69,0x61,0x7e]
73
74 //----------------------------------------------------------------------
75 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
76 // With Ties To Away
77 //----------------------------------------------------------------------
78
79     fcvtas s12, s13
80     fcvtas d21, d14
81
82 // CHECK: fcvtas s12, s13    // encoding: [0xac,0xc9,0x21,0x5e]
83 // CHECK: fcvtas d21, d14    // encoding: [0xd5,0xc9,0x61,0x5e]
84
85 //----------------------------------------------------------------------
86 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
87 // Nearest With Ties To Away
88 //----------------------------------------------------------------------
89
90     fcvtau s12, s13
91     fcvtau d21, d14
92
93 // CHECK: fcvtau s12, s13    // encoding: [0xac,0xc9,0x21,0x7e]
94 // CHECK: fcvtau d21, d14    // encoding: [0xd5,0xc9,0x61,0x7e]
95
96 //----------------------------------------------------------------------
97 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
98 // Minus Infinity
99 //----------------------------------------------------------------------
100
101     fcvtms s22, s13
102     fcvtms d21, d14
103
104 // CHECK: fcvtms s22, s13    // encoding: [0xb6,0xb9,0x21,0x5e]
105 // CHECK: fcvtms d21, d14    // encoding: [0xd5,0xb9,0x61,0x5e]
106
107 //----------------------------------------------------------------------
108 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
109 // Minus Infinity
110 //----------------------------------------------------------------------
111
112     fcvtmu s12, s13
113     fcvtmu d21, d14
114
115 // CHECK: fcvtmu s12, s13    // encoding: [0xac,0xb9,0x21,0x7e]
116 // CHECK: fcvtmu d21, d14    // encoding: [0xd5,0xb9,0x61,0x7e]
117
118 //----------------------------------------------------------------------
119 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
120 // With Ties To Even
121 //----------------------------------------------------------------------
122
123     fcvtns s22, s13
124     fcvtns d21, d14
125
126 // CHECK: fcvtns s22, s13    // encoding: [0xb6,0xa9,0x21,0x5e]
127 // CHECK: fcvtns d21, d14    // encoding: [0xd5,0xa9,0x61,0x5e]
128
129 //----------------------------------------------------------------------
130 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
131 // Nearest With Ties To Even
132 //----------------------------------------------------------------------
133
134     fcvtnu s12, s13
135     fcvtnu d21, d14
136
137 // CHECK: fcvtnu s12, s13    // encoding: [0xac,0xa9,0x21,0x7e]
138 // CHECK: fcvtnu d21, d14    // encoding: [0xd5,0xa9,0x61,0x7e]
139         
140 //----------------------------------------------------------------------
141 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
142 // Positive Infinity
143 //----------------------------------------------------------------------
144
145     fcvtps s22, s13
146     fcvtps d21, d14
147
148 // CHECK: fcvtps s22, s13    // encoding: [0xb6,0xa9,0xa1,0x5e]
149 // CHECK: fcvtps d21, d14    // encoding: [0xd5,0xa9,0xe1,0x5e]
150         
151 //----------------------------------------------------------------------
152 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
153 // Positive Infinity
154 //----------------------------------------------------------------------
155
156     fcvtpu s12, s13
157     fcvtpu d21, d14
158
159 // CHECK: fcvtpu s12, s13    // encoding: [0xac,0xa9,0xa1,0x7e]
160 // CHECK: fcvtpu d21, d14    // encoding: [0xd5,0xa9,0xe1,0x7e]
161
162 //----------------------------------------------------------------------
163 // Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
164 //----------------------------------------------------------------------
165
166     fcvtzs s12, s13
167     fcvtzs d21, d14
168
169 // CHECK: fcvtzs s12, s13    // encoding: [0xac,0xb9,0xa1,0x5e]
170 // CHECK: fcvtzs d21, d14    // encoding: [0xd5,0xb9,0xe1,0x5e]
171         
172 //----------------------------------------------------------------------
173 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 
174 // Zero
175 //----------------------------------------------------------------------
176
177     fcvtzu s12, s13
178     fcvtzu d21, d14
179
180 // CHECK: fcvtzu s12, s13    // encoding: [0xac,0xb9,0xa1,0x7e]
181 // CHECK: fcvtzu d21, d14    // encoding: [0xd5,0xb9,0xe1,0x7e]