[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / AArch64 / complex-fp-to-int.ll
blob6024e70789a3401d7dd138baff054fa57b2458d7
1 ; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple | FileCheck %s
3 define <2 x i64> @test_v2f32_to_signed_v2i64(<2 x float> %in) {
4 ; CHECK-LABEL: test_v2f32_to_signed_v2i64:
5 ; CHECK: fcvtl [[VAL64:v[0-9]+]].2d, v0.2s
6 ; CHECK: fcvtzs.2d v0, [[VAL64]]
8   %val = fptosi <2 x float> %in to <2 x i64>
9   ret <2 x i64> %val
12 define <2 x i64> @test_v2f32_to_unsigned_v2i64(<2 x float> %in) {
13 ; CHECK-LABEL: test_v2f32_to_unsigned_v2i64:
14 ; CHECK: fcvtl [[VAL64:v[0-9]+]].2d, v0.2s
15 ; CHECK: fcvtzu.2d v0, [[VAL64]]
17   %val = fptoui <2 x float> %in to <2 x i64>
18   ret <2 x i64> %val
21 define <2 x i16> @test_v2f32_to_signed_v2i16(<2 x float> %in) {
22 ; CHECK-LABEL: test_v2f32_to_signed_v2i16:
23 ; CHECK: fcvtzs.2s v0, v0
25   %val = fptosi <2 x float> %in to <2 x i16>
26   ret <2 x i16> %val
29 define <2 x i16> @test_v2f32_to_unsigned_v2i16(<2 x float> %in) {
30 ; CHECK-LABEL: test_v2f32_to_unsigned_v2i16:
31 ; CHECK: fcvtzs.2s v0, v0
33   %val = fptoui <2 x float> %in to <2 x i16>
34   ret <2 x i16> %val
37 define <2 x i8> @test_v2f32_to_signed_v2i8(<2 x float> %in) {
38 ; CHECK-LABEL: test_v2f32_to_signed_v2i8:
39 ; CHECK: fcvtzs.2s v0, v0
41   %val = fptosi <2 x float> %in to <2 x i8>
42   ret <2 x i8> %val
45 define <2 x i8> @test_v2f32_to_unsigned_v2i8(<2 x float> %in) {
46 ; CHECK-LABEL: test_v2f32_to_unsigned_v2i8:
47 ; CHECK: fcvtzs.2s v0, v0
49   %val = fptoui <2 x float> %in to <2 x i8>
50   ret <2 x i8> %val
53 define <4 x i16> @test_v4f32_to_signed_v4i16(<4 x float> %in) {
54 ; CHECK-LABEL: test_v4f32_to_signed_v4i16:
55 ; CHECK: fcvtzs.4s [[VAL64:v[0-9]+]], v0
56 ; CHECK: xtn.4h v0, [[VAL64]]
58   %val = fptosi <4 x float> %in to <4 x i16>
59   ret <4 x i16> %val
62 define <4 x i16> @test_v4f32_to_unsigned_v4i16(<4 x float> %in) {
63 ; CHECK-LABEL: test_v4f32_to_unsigned_v4i16:
64 ; CHECK: fcvtzu.4s [[VAL64:v[0-9]+]], v0
65 ; CHECK: xtn.4h v0, [[VAL64]]
67   %val = fptoui <4 x float> %in to <4 x i16>
68   ret <4 x i16> %val
71 define <4 x i8> @test_v4f32_to_signed_v4i8(<4 x float> %in) {
72 ; CHECK-LABEL: test_v4f32_to_signed_v4i8:
73 ; CHECK: fcvtzs.4s [[VAL64:v[0-9]+]], v0
74 ; CHECK: xtn.4h v0, [[VAL64]]
76   %val = fptosi <4 x float> %in to <4 x i8>
77   ret <4 x i8> %val
80 define <4 x i8> @test_v4f32_to_unsigned_v4i8(<4 x float> %in) {
81 ; CHECK-LABEL: test_v4f32_to_unsigned_v4i8:
82 ; CHECK: fcvtzs.4s [[VAL64:v[0-9]+]], v0
83 ; CHECK: xtn.4h v0, [[VAL64]]
85   %val = fptoui <4 x float> %in to <4 x i8>
86   ret <4 x i8> %val
89 define <2 x i32> @test_v2f64_to_signed_v2i32(<2 x double> %in) {
90 ; CHECK-LABEL: test_v2f64_to_signed_v2i32:
91 ; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0
92 ; CHECK: xtn.2s v0, [[VAL64]]
94   %val = fptosi <2 x double> %in to <2 x i32>
95   ret <2 x i32> %val
98 define <2 x i32> @test_v2f64_to_unsigned_v2i32(<2 x double> %in) {
99 ; CHECK-LABEL: test_v2f64_to_unsigned_v2i32:
100 ; CHECK: fcvtzu.2d [[VAL64:v[0-9]+]], v0
101 ; CHECK: xtn.2s v0, [[VAL64]]
103   %val = fptoui <2 x double> %in to <2 x i32>
104   ret <2 x i32> %val
107 define <2 x i16> @test_v2f64_to_signed_v2i16(<2 x double> %in) {
108 ; CHECK-LABEL: test_v2f64_to_signed_v2i16:
109 ; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0
110 ; CHECK: xtn.2s v0, [[VAL64]]
112   %val = fptosi <2 x double> %in to <2 x i16>
113   ret <2 x i16> %val
116 define <2 x i16> @test_v2f64_to_unsigned_v2i16(<2 x double> %in) {
117 ; CHECK-LABEL: test_v2f64_to_unsigned_v2i16:
118 ; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0
119 ; CHECK: xtn.2s v0, [[VAL64]]
121   %val = fptoui <2 x double> %in to <2 x i16>
122   ret <2 x i16> %val
125 define <2 x i8> @test_v2f64_to_signed_v2i8(<2 x double> %in) {
126 ; CHECK-LABEL: test_v2f64_to_signed_v2i8:
127 ; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0
128 ; CHECK: xtn.2s v0, [[VAL64]]
130   %val = fptosi <2 x double> %in to <2 x i8>
131   ret <2 x i8> %val
134 define <2 x i8> @test_v2f64_to_unsigned_v2i8(<2 x double> %in) {
135 ; CHECK-LABEL: test_v2f64_to_unsigned_v2i8:
136 ; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0
137 ; CHECK: xtn.2s v0, [[VAL64]]
139   %val = fptoui <2 x double> %in to <2 x i8>
140   ret <2 x i8> %val