1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=aarch64-none-eabi | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v4f16_to_v4i16(float, <4 x half> %a) #0 { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f16_to_v4i16: 5*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x half> %a to <4 x i16> 8*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %1 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v4f16_to_v2i32(float, <4 x half> %a) #0 { 12*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f16_to_v2i32: 13*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x half> %a to <2 x i32> 16*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %1 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @v4f16_to_v1i64(float, <4 x half> %a) #0 { 20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f16_to_v1i64: 21*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x half> %a to <1 x i64> 24*9880d681SAndroid Build Coastguard Worker ret <1 x i64> %1 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdefine i64 @v4f16_to_i64(float, <4 x half> %a) #0 { 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f16_to_i64: 29*9880d681SAndroid Build Coastguard Worker; CHECK: fmov x0, d1 30*9880d681SAndroid Build Coastguard Workerentry: 31*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x half> %a to i64 32*9880d681SAndroid Build Coastguard Worker ret i64 %1 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @v4f16_to_v2float(float, <4 x half> %a) #0 { 36*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f16_to_v2float: 37*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 38*9880d681SAndroid Build Coastguard Workerentry: 39*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x half> %a to <2 x float> 40*9880d681SAndroid Build Coastguard Worker ret <2 x float> %1 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerdefine <1 x double> @v4f16_to_v1double(float, <4 x half> %a) #0 { 44*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f16_to_v1double: 45*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 46*9880d681SAndroid Build Coastguard Workerentry: 47*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x half> %a to <1 x double> 48*9880d681SAndroid Build Coastguard Worker ret <1 x double> %1 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine double @v4f16_to_double(float, <4 x half> %a) #0 { 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f16_to_double: 53*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 54*9880d681SAndroid Build Coastguard Workerentry: 55*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x half> %a to double 56*9880d681SAndroid Build Coastguard Worker ret double %1 57*9880d681SAndroid Build Coastguard Worker} 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @v4i16_to_v4f16(float, <4 x i16> %a) #0 { 61*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4i16_to_v4f16: 62*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 63*9880d681SAndroid Build Coastguard Workerentry: 64*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x i16> %a to <4 x half> 65*9880d681SAndroid Build Coastguard Worker ret <4 x half> %1 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @v2i32_to_v4f16(float, <2 x i32> %a) #0 { 69*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2i32_to_v4f16: 70*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 71*9880d681SAndroid Build Coastguard Workerentry: 72*9880d681SAndroid Build Coastguard Worker %1 = bitcast <2 x i32> %a to <4 x half> 73*9880d681SAndroid Build Coastguard Worker ret <4 x half> %1 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @v1i64_to_v4f16(float, <1 x i64> %a) #0 { 77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v1i64_to_v4f16: 78*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 79*9880d681SAndroid Build Coastguard Workerentry: 80*9880d681SAndroid Build Coastguard Worker %1 = bitcast <1 x i64> %a to <4 x half> 81*9880d681SAndroid Build Coastguard Worker ret <4 x half> %1 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @i64_to_v4f16(float, i64 %a) #0 { 85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: i64_to_v4f16: 86*9880d681SAndroid Build Coastguard Worker; CHECK: fmov d0, x0 87*9880d681SAndroid Build Coastguard Workerentry: 88*9880d681SAndroid Build Coastguard Worker %1 = bitcast i64 %a to <4 x half> 89*9880d681SAndroid Build Coastguard Worker ret <4 x half> %1 90*9880d681SAndroid Build Coastguard Worker} 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @v2float_to_v4f16(float, <2 x float> %a) #0 { 93*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2float_to_v4f16: 94*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 95*9880d681SAndroid Build Coastguard Workerentry: 96*9880d681SAndroid Build Coastguard Worker %1 = bitcast <2 x float> %a to <4 x half> 97*9880d681SAndroid Build Coastguard Worker ret <4 x half> %1 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @v1double_to_v4f16(float, <1 x double> %a) #0 { 101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v1double_to_v4f16: 102*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 103*9880d681SAndroid Build Coastguard Workerentry: 104*9880d681SAndroid Build Coastguard Worker %1 = bitcast <1 x double> %a to <4 x half> 105*9880d681SAndroid Build Coastguard Worker ret <4 x half> %1 106*9880d681SAndroid Build Coastguard Worker} 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @double_to_v4f16(float, double %a) #0 { 109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: double_to_v4f16: 110*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 111*9880d681SAndroid Build Coastguard Workerentry: 112*9880d681SAndroid Build Coastguard Worker %1 = bitcast double %a to <4 x half> 113*9880d681SAndroid Build Coastguard Worker ret <4 x half> %1 114*9880d681SAndroid Build Coastguard Worker} 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8f16_to_v8i16(float, <8 x half> %a) #0 { 126*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8f16_to_v8i16: 127*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 128*9880d681SAndroid Build Coastguard Workerentry: 129*9880d681SAndroid Build Coastguard Worker %1 = bitcast <8 x half> %a to <8 x i16> 130*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %1 131*9880d681SAndroid Build Coastguard Worker} 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v8f16_to_v4i32(float, <8 x half> %a) #0 { 134*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8f16_to_v4i32: 135*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %1 = bitcast <8 x half> %a to <4 x i32> 138*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %1 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @v8f16_to_v2i64(float, <8 x half> %a) #0 { 142*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8f16_to_v2i64: 143*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 144*9880d681SAndroid Build Coastguard Workerentry: 145*9880d681SAndroid Build Coastguard Worker %1 = bitcast <8 x half> %a to <2 x i64> 146*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %1 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v8f16_to_v4float(float, <8 x half> %a) #0 { 150*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8f16_to_v4float: 151*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 152*9880d681SAndroid Build Coastguard Workerentry: 153*9880d681SAndroid Build Coastguard Worker %1 = bitcast <8 x half> %a to <4 x float> 154*9880d681SAndroid Build Coastguard Worker ret <4 x float> %1 155*9880d681SAndroid Build Coastguard Worker} 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @v8f16_to_v2double(float, <8 x half> %a) #0 { 158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8f16_to_v2double: 159*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 160*9880d681SAndroid Build Coastguard Workerentry: 161*9880d681SAndroid Build Coastguard Worker %1 = bitcast <8 x half> %a to <2 x double> 162*9880d681SAndroid Build Coastguard Worker ret <2 x double> %1 163*9880d681SAndroid Build Coastguard Worker} 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Workerdefine <8 x half> @v8i16_to_v8f16(float, <8 x i16> %a) #0 { 166*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8i16_to_v8f16: 167*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 168*9880d681SAndroid Build Coastguard Workerentry: 169*9880d681SAndroid Build Coastguard Worker %1 = bitcast <8 x i16> %a to <8 x half> 170*9880d681SAndroid Build Coastguard Worker ret <8 x half> %1 171*9880d681SAndroid Build Coastguard Worker} 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workerdefine <8 x half> @v4i32_to_v8f16(float, <4 x i32> %a) #0 { 174*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4i32_to_v8f16: 175*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 176*9880d681SAndroid Build Coastguard Workerentry: 177*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x i32> %a to <8 x half> 178*9880d681SAndroid Build Coastguard Worker ret <8 x half> %1 179*9880d681SAndroid Build Coastguard Worker} 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Workerdefine <8 x half> @v2i64_to_v8f16(float, <2 x i64> %a) #0 { 182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2i64_to_v8f16: 183*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 184*9880d681SAndroid Build Coastguard Workerentry: 185*9880d681SAndroid Build Coastguard Worker %1 = bitcast <2 x i64> %a to <8 x half> 186*9880d681SAndroid Build Coastguard Worker ret <8 x half> %1 187*9880d681SAndroid Build Coastguard Worker} 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Workerdefine <8 x half> @v4float_to_v8f16(float, <4 x float> %a) #0 { 190*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4float_to_v8f16: 191*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 192*9880d681SAndroid Build Coastguard Workerentry: 193*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x float> %a to <8 x half> 194*9880d681SAndroid Build Coastguard Worker ret <8 x half> %1 195*9880d681SAndroid Build Coastguard Worker} 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Workerdefine <8 x half> @v2double_to_v8f16(float, <2 x double> %a) #0 { 198*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2double_to_v8f16: 199*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b 200*9880d681SAndroid Build Coastguard Workerentry: 201*9880d681SAndroid Build Coastguard Worker %1 = bitcast <2 x double> %a to <8 x half> 202*9880d681SAndroid Build Coastguard Worker ret <8 x half> %1 203*9880d681SAndroid Build Coastguard Worker} 204