1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_orrimm(<8 x i8>* %A) nounwind { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_orrimm: 5*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov 6*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn 7*9880d681SAndroid Build Coastguard Worker; CHECK: orr 8*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 9*9880d681SAndroid Build Coastguard Worker %tmp3 = or <8 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1> 10*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_orrimmQ(<16 x i8>* %A) nounwind { 14*9880d681SAndroid Build Coastguard Worker; CHECK: v_orrimmQ 15*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov 16*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn 17*9880d681SAndroid Build Coastguard Worker; CHECK: orr 18*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 19*9880d681SAndroid Build Coastguard Worker %tmp3 = or <16 x i8> %tmp1, <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 1> 20*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v_bicimm(<8 x i8>* %A) nounwind { 24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_bicimm: 25*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov 26*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn 27*9880d681SAndroid Build Coastguard Worker; CHECK: bic 28*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 29*9880d681SAndroid Build Coastguard Worker %tmp3 = and <8 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 > 30*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v_bicimmQ(<16 x i8>* %A) nounwind { 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v_bicimmQ: 35*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mov 36*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: mvn 37*9880d681SAndroid Build Coastguard Worker; CHECK: bic 38*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 39*9880d681SAndroid Build Coastguard Worker %tmp3 = and <16 x i8> %tmp1, < i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0, i8 -1, i8 -1, i8 -1, i8 0 > 40*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @foo(<2 x double> %bar) nounwind { 44*9880d681SAndroid Build Coastguard Worker; CHECK: foo 45*9880d681SAndroid Build Coastguard Worker; CHECK: fmov.2d v1, #1.0000000 46*9880d681SAndroid Build Coastguard Worker %add = fadd <2 x double> %bar, <double 1.0, double 1.0> 47*9880d681SAndroid Build Coastguard Worker ret <2 x double> %add 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t1() nounwind readnone ssp { 51*9880d681SAndroid Build Coastguard Workerentry: 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t1: 53*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75 54*9880d681SAndroid Build Coastguard Worker ret <4 x i32> <i32 75, i32 75, i32 75, i32 75> 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t2() nounwind readnone ssp { 58*9880d681SAndroid Build Coastguard Workerentry: 59*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t2: 60*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, lsl #8 61*9880d681SAndroid Build Coastguard Worker ret <4 x i32> <i32 19200, i32 19200, i32 19200, i32 19200> 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t3() nounwind readnone ssp { 65*9880d681SAndroid Build Coastguard Workerentry: 66*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t3: 67*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, lsl #16 68*9880d681SAndroid Build Coastguard Worker ret <4 x i32> <i32 4915200, i32 4915200, i32 4915200, i32 4915200> 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t4() nounwind readnone ssp { 72*9880d681SAndroid Build Coastguard Workerentry: 73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t4: 74*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, lsl #24 75*9880d681SAndroid Build Coastguard Worker ret <4 x i32> <i32 1258291200, i32 1258291200, i32 1258291200, i32 1258291200> 76*9880d681SAndroid Build Coastguard Worker} 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @movi_8h_imm_t5() nounwind readnone ssp { 79*9880d681SAndroid Build Coastguard Workerentry: 80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_8h_imm_t5: 81*9880d681SAndroid Build Coastguard Worker; CHECK: movi.8h v0, #75 82*9880d681SAndroid Build Coastguard Worker ret <8 x i16> <i16 75, i16 75, i16 75, i16 75, i16 75, i16 75, i16 75, i16 75> 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker; rdar://11989841 86*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @movi_8h_imm_t6() nounwind readnone ssp { 87*9880d681SAndroid Build Coastguard Workerentry: 88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_8h_imm_t6: 89*9880d681SAndroid Build Coastguard Worker; CHECK: movi.8h v0, #75, lsl #8 90*9880d681SAndroid Build Coastguard Worker ret <8 x i16> <i16 19200, i16 19200, i16 19200, i16 19200, i16 19200, i16 19200, i16 19200, i16 19200> 91*9880d681SAndroid Build Coastguard Worker} 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t7() nounwind readnone ssp { 94*9880d681SAndroid Build Coastguard Workerentry: 95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t7: 96*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, msl #8 97*9880d681SAndroid Build Coastguard Workerret <4 x i32> <i32 19455, i32 19455, i32 19455, i32 19455> 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t8() nounwind readnone ssp { 101*9880d681SAndroid Build Coastguard Workerentry: 102*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t8: 103*9880d681SAndroid Build Coastguard Worker; CHECK: movi.4s v0, #75, msl #16 104*9880d681SAndroid Build Coastguard Workerret <4 x i32> <i32 4980735, i32 4980735, i32 4980735, i32 4980735> 105*9880d681SAndroid Build Coastguard Worker} 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @movi_16b_imm_t9() nounwind readnone ssp { 108*9880d681SAndroid Build Coastguard Workerentry: 109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_16b_imm_t9: 110*9880d681SAndroid Build Coastguard Worker; CHECK: movi.16b v0, #75 111*9880d681SAndroid Build Coastguard Workerret <16 x i8> <i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, 112*9880d681SAndroid Build Coastguard Worker i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75, i8 75> 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @movi_2d_imm_t10() nounwind readnone ssp { 116*9880d681SAndroid Build Coastguard Workerentry: 117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_2d_imm_t10: 118*9880d681SAndroid Build Coastguard Worker; CHECK: movi.2d v0, #0xff00ff00ff00ff 119*9880d681SAndroid Build Coastguard Workerret <2 x i64> <i64 71777214294589695, i64 71777214294589695> 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @movi_4s_imm_t11() nounwind readnone ssp { 123*9880d681SAndroid Build Coastguard Workerentry: 124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_4s_imm_t11: 125*9880d681SAndroid Build Coastguard Worker; CHECK: fmov.4s v0, #-0.32812500 126*9880d681SAndroid Build Coastguard Workerret <4 x i32> <i32 3198681088, i32 3198681088, i32 3198681088, i32 3198681088> 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @movi_2d_imm_t12() nounwind readnone ssp { 130*9880d681SAndroid Build Coastguard Workerentry: 131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_2d_imm_t12: 132*9880d681SAndroid Build Coastguard Worker; CHECK: fmov.2d v0, #-0.17187500 133*9880d681SAndroid Build Coastguard Workerret <2 x i64> <i64 13818732506632945664, i64 13818732506632945664> 134*9880d681SAndroid Build Coastguard Worker} 135