1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=aarch64_be--linux-gnu < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@vec_v8i16 = global <8 x i16> <i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8> 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t1: 6*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t1() nounwind { 7*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 8*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].4s, #1 9*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 10*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 11*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 12*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 1, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 0> 13*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 14*9880d681SAndroid Build Coastguard Worker ret i16 %el 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t2: 18*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t2() nounwind { 19*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 20*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].4s, #1, lsl #8 21*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 22*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 23*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 24*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 256, i16 0, i16 256, i16 0, i16 256, i16 0, i16 256, i16 0> 25*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 26*9880d681SAndroid Build Coastguard Worker ret i16 %el 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t3: 30*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t3() nounwind { 31*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 32*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].4s, #1, lsl #16 33*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 34*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 35*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 36*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1> 37*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 38*9880d681SAndroid Build Coastguard Worker ret i16 %el 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t4: 42*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t4() nounwind { 43*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 44*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].4s, #1, lsl #24 45*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 46*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 47*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 48*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 0, i16 256, i16 0, i16 256, i16 0, i16 256, i16 0, i16 256> 49*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 50*9880d681SAndroid Build Coastguard Worker ret i16 %el 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t5: 54*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t5() nounwind { 55*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 56*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].8h, #1 57*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 58*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 59*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 60*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 61*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 62*9880d681SAndroid Build Coastguard Worker ret i16 %el 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t6: 66*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t6() nounwind { 67*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 68*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].8h, #1, lsl #8 69*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 70*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 71*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 72*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 256, i16 256, i16 256, i16 256, i16 256, i16 256, i16 256, i16 256> 73*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 74*9880d681SAndroid Build Coastguard Worker ret i16 %el 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t7: 78*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t7() nounwind { 79*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 80*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].4s, #1, msl #8 81*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 82*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 83*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 84*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 511, i16 0, i16 511, i16 0, i16 511, i16 0, i16 511, i16 0> 85*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 86*9880d681SAndroid Build Coastguard Worker ret i16 %el 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t8: 90*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t8() nounwind { 91*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 92*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].4s, #1, msl #16 93*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 94*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 95*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 96*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65535, i16 1, i16 65535, i16 1, i16 65535, i16 1, i16 65535, i16 1> 97*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 98*9880d681SAndroid Build Coastguard Worker ret i16 %el 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t9: 102*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t9() nounwind { 103*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 104*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].16b, #1 105*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 106*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 107*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 108*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 257, i16 257, i16 257, i16 257, i16 257, i16 257, i16 257, i16 257> 109*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 110*9880d681SAndroid Build Coastguard Worker ret i16 %el 111*9880d681SAndroid Build Coastguard Worker} 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: movi_modimm_t10: 114*9880d681SAndroid Build Coastguard Workerdefine i16 @movi_modimm_t10() nounwind { 115*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 116*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: movi v[[REG2:[0-9]+]].2d, #0x00ffff0000ffff 117*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 118*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 119*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 120*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 -1, i16 0, i16 -1, i16 0, i16 -1, i16 0, i16 -1, i16 0> 121*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 122*9880d681SAndroid Build Coastguard Worker ret i16 %el 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fmov_modimm_t11: 126*9880d681SAndroid Build Coastguard Workerdefine i16 @fmov_modimm_t11() nounwind { 127*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 128*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: fmov v[[REG2:[0-9]+]].4s, #3.00000000 129*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 130*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 131*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 132*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 0, i16 16448, i16 0, i16 16448, i16 0, i16 16448, i16 0, i16 16448> 133*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 134*9880d681SAndroid Build Coastguard Worker ret i16 %el 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fmov_modimm_t12: 138*9880d681SAndroid Build Coastguard Workerdefine i16 @fmov_modimm_t12() nounwind { 139*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 140*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: fmov v[[REG2:[0-9]+]].2d, #0.17968750 141*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 142*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 143*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 144*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 0, i16 0, i16 0, i16 16327, i16 0, i16 0, i16 0, i16 16327> 145*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 146*9880d681SAndroid Build Coastguard Worker ret i16 %el 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t1: 150*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t1() nounwind { 151*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 152*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].4s, #1 153*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 154*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 155*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 156*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65534, i16 65535, i16 65534, i16 65535, i16 65534, i16 65535, i16 65534, i16 65535> 157*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 158*9880d681SAndroid Build Coastguard Worker ret i16 %el 159*9880d681SAndroid Build Coastguard Worker} 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t2: 162*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t2() nounwind { 163*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 164*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].4s, #1, lsl #8 165*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 166*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 167*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 168*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65279, i16 65535, i16 65279, i16 65535, i16 65279, i16 65535, i16 65279, i16 65535> 169*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 170*9880d681SAndroid Build Coastguard Worker ret i16 %el 171*9880d681SAndroid Build Coastguard Worker} 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t3: 174*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t3() nounwind { 175*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 176*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].4s, #1, lsl #16 177*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 178*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 179*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 180*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65535, i16 65534, i16 65535, i16 65534, i16 65535, i16 65534, i16 65535, i16 65534> 181*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 182*9880d681SAndroid Build Coastguard Worker ret i16 %el 183*9880d681SAndroid Build Coastguard Worker} 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t4: 186*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t4() nounwind { 187*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 188*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].4s, #1, lsl #24 189*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 190*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 191*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 192*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65535, i16 65279, i16 65535, i16 65279, i16 65535, i16 65279, i16 65535, i16 65279> 193*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 194*9880d681SAndroid Build Coastguard Worker ret i16 %el 195*9880d681SAndroid Build Coastguard Worker} 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t5: 198*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t5() nounwind { 199*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 200*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].8h, #1 201*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 202*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 203*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 204*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65534, i16 65534, i16 65534, i16 65534, i16 65534, i16 65534, i16 65534, i16 65534> 205*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 206*9880d681SAndroid Build Coastguard Worker ret i16 %el 207*9880d681SAndroid Build Coastguard Worker} 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t6: 210*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t6() nounwind { 211*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 212*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].8h, #1, lsl #8 213*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 214*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 215*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 216*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65279, i16 65279, i16 65279, i16 65279, i16 65279, i16 65279, i16 65279, i16 65279> 217*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 218*9880d681SAndroid Build Coastguard Worker ret i16 %el 219*9880d681SAndroid Build Coastguard Worker} 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t7: 222*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t7() nounwind { 223*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 224*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].4s, #1, msl #8 225*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 226*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 227*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 228*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 65024, i16 65535, i16 65024, i16 65535, i16 65024, i16 65535, i16 65024, i16 65535> 229*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 230*9880d681SAndroid Build Coastguard Worker ret i16 %el 231*9880d681SAndroid Build Coastguard Worker} 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mvni_modimm_t8: 234*9880d681SAndroid Build Coastguard Workerdefine i16 @mvni_modimm_t8() nounwind { 235*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 236*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: mvni v[[REG2:[0-9]+]].4s, #1, msl #16 237*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: add v[[REG1]].8h, v[[REG1]].8h, v[[REG2]].8h 238*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 239*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 240*9880d681SAndroid Build Coastguard Worker %rv = add <8 x i16> %in, <i16 0, i16 65534, i16 0, i16 65534, i16 0, i16 65534, i16 0, i16 65534> 241*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 242*9880d681SAndroid Build Coastguard Worker ret i16 %el 243*9880d681SAndroid Build Coastguard Worker} 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic_modimm_t1: 246*9880d681SAndroid Build Coastguard Workerdefine i16 @bic_modimm_t1() nounwind { 247*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 248*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bic v[[REG2:[0-9]+]].4s, #1 249*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 250*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 251*9880d681SAndroid Build Coastguard Worker %rv = and <8 x i16> %in, <i16 65534, i16 65535, i16 65534, i16 65535, i16 65534, i16 65535, i16 65534, i16 65535> 252*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 253*9880d681SAndroid Build Coastguard Worker ret i16 %el 254*9880d681SAndroid Build Coastguard Worker} 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic_modimm_t2: 257*9880d681SAndroid Build Coastguard Workerdefine i16 @bic_modimm_t2() nounwind { 258*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 259*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bic v[[REG2:[0-9]+]].4s, #1, lsl #8 260*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 261*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 262*9880d681SAndroid Build Coastguard Worker %rv = and <8 x i16> %in, <i16 65279, i16 65535, i16 65279, i16 65535, i16 65279, i16 65535, i16 65279, i16 65535> 263*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 264*9880d681SAndroid Build Coastguard Worker ret i16 %el 265*9880d681SAndroid Build Coastguard Worker} 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic_modimm_t3: 268*9880d681SAndroid Build Coastguard Workerdefine i16 @bic_modimm_t3() nounwind { 269*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 270*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bic v[[REG2:[0-9]+]].4s, #1, lsl #16 271*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 272*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 273*9880d681SAndroid Build Coastguard Worker %rv = and <8 x i16> %in, <i16 65535, i16 65534, i16 65535, i16 65534, i16 65535, i16 65534, i16 65535, i16 65534> 274*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 275*9880d681SAndroid Build Coastguard Worker ret i16 %el 276*9880d681SAndroid Build Coastguard Worker} 277*9880d681SAndroid Build Coastguard Worker 278*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic_modimm_t4: 279*9880d681SAndroid Build Coastguard Workerdefine i16 @bic_modimm_t4() nounwind { 280*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 281*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bic v[[REG2:[0-9]+]].4s, #1, lsl #24 282*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 283*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 284*9880d681SAndroid Build Coastguard Worker %rv = and <8 x i16> %in, <i16 65535, i16 65279, i16 65535, i16 65279, i16 65535, i16 65279, i16 65535, i16 65279> 285*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 286*9880d681SAndroid Build Coastguard Worker ret i16 %el 287*9880d681SAndroid Build Coastguard Worker} 288*9880d681SAndroid Build Coastguard Worker 289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic_modimm_t5: 290*9880d681SAndroid Build Coastguard Workerdefine i16 @bic_modimm_t5() nounwind { 291*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 292*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bic v[[REG2:[0-9]+]].8h, #1 293*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 294*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 295*9880d681SAndroid Build Coastguard Worker %rv = and <8 x i16> %in, <i16 65534, i16 65534, i16 65534, i16 65534, i16 65534, i16 65534, i16 65534, i16 65534> 296*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 297*9880d681SAndroid Build Coastguard Worker ret i16 %el 298*9880d681SAndroid Build Coastguard Worker} 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bic_modimm_t6: 301*9880d681SAndroid Build Coastguard Workerdefine i16 @bic_modimm_t6() nounwind { 302*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 303*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bic v[[REG2:[0-9]+]].8h, #1, lsl #8 304*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 305*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 306*9880d681SAndroid Build Coastguard Worker %rv = and <8 x i16> %in, <i16 65279, i16 65279, i16 65279, i16 65279, i16 65279, i16 65279, i16 65279, i16 65279> 307*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 308*9880d681SAndroid Build Coastguard Worker ret i16 %el 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr_modimm_t1: 312*9880d681SAndroid Build Coastguard Workerdefine i16 @orr_modimm_t1() nounwind { 313*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 314*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: orr v[[REG2:[0-9]+]].4s, #1 315*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 316*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 317*9880d681SAndroid Build Coastguard Worker %rv = or <8 x i16> %in, <i16 1, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 0> 318*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 319*9880d681SAndroid Build Coastguard Worker ret i16 %el 320*9880d681SAndroid Build Coastguard Worker} 321*9880d681SAndroid Build Coastguard Worker 322*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr_modimm_t2: 323*9880d681SAndroid Build Coastguard Workerdefine i16 @orr_modimm_t2() nounwind { 324*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 325*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: orr v[[REG2:[0-9]+]].4s, #1, lsl #8 326*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 327*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 328*9880d681SAndroid Build Coastguard Worker %rv = or <8 x i16> %in, <i16 256, i16 0, i16 256, i16 0, i16 256, i16 0, i16 256, i16 0> 329*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 330*9880d681SAndroid Build Coastguard Worker ret i16 %el 331*9880d681SAndroid Build Coastguard Worker} 332*9880d681SAndroid Build Coastguard Worker 333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr_modimm_t3: 334*9880d681SAndroid Build Coastguard Workerdefine i16 @orr_modimm_t3() nounwind { 335*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 336*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: orr v[[REG2:[0-9]+]].4s, #1, lsl #16 337*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 338*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 339*9880d681SAndroid Build Coastguard Worker %rv = or <8 x i16> %in, <i16 0, i16 1, i16 0, i16 1, i16 0, i16 1, i16 0, i16 1> 340*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 341*9880d681SAndroid Build Coastguard Worker ret i16 %el 342*9880d681SAndroid Build Coastguard Worker} 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr_modimm_t4: 345*9880d681SAndroid Build Coastguard Workerdefine i16 @orr_modimm_t4() nounwind { 346*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 347*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: orr v[[REG2:[0-9]+]].4s, #1, lsl #24 348*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 349*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 350*9880d681SAndroid Build Coastguard Worker %rv = or <8 x i16> %in, <i16 0, i16 256, i16 0, i16 256, i16 0, i16 256, i16 0, i16 256> 351*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 352*9880d681SAndroid Build Coastguard Worker ret i16 %el 353*9880d681SAndroid Build Coastguard Worker} 354*9880d681SAndroid Build Coastguard Worker 355*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr_modimm_t5: 356*9880d681SAndroid Build Coastguard Workerdefine i16 @orr_modimm_t5() nounwind { 357*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 358*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: orr v[[REG2:[0-9]+]].8h, #1 359*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 360*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 361*9880d681SAndroid Build Coastguard Worker %rv = or <8 x i16> %in, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 362*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 363*9880d681SAndroid Build Coastguard Worker ret i16 %el 364*9880d681SAndroid Build Coastguard Worker} 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: orr_modimm_t6: 367*9880d681SAndroid Build Coastguard Workerdefine i16 @orr_modimm_t6() nounwind { 368*9880d681SAndroid Build Coastguard Worker ; CHECK: ld1 { v[[REG1:[0-9]+]].8h }, [x{{[0-9]+}}] 369*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: orr v[[REG2:[0-9]+]].8h, #1, lsl #8 370*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: umov w{{[0-9]+}}, v[[REG1]].h[0] 371*9880d681SAndroid Build Coastguard Worker %in = load <8 x i16>, <8 x i16>* @vec_v8i16 372*9880d681SAndroid Build Coastguard Worker %rv = or <8 x i16> %in, <i16 256, i16 256, i16 256, i16 256, i16 256, i16 256, i16 256, i16 256> 373*9880d681SAndroid Build Coastguard Worker %el = extractelement <8 x i16> %rv, i32 0 374*9880d681SAndroid Build Coastguard Worker ret i16 %el 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Workerdeclare i8 @f_v8i8(<8 x i8> %arg) 378*9880d681SAndroid Build Coastguard Workerdeclare i16 @f_v4i16(<4 x i16> %arg) 379*9880d681SAndroid Build Coastguard Workerdeclare i32 @f_v2i32(<2 x i32> %arg) 380*9880d681SAndroid Build Coastguard Workerdeclare i64 @f_v1i64(<1 x i64> %arg) 381*9880d681SAndroid Build Coastguard Workerdeclare i8 @f_v16i8(<16 x i8> %arg) 382*9880d681SAndroid Build Coastguard Workerdeclare i16 @f_v8i16(<8 x i16> %arg) 383*9880d681SAndroid Build Coastguard Workerdeclare i32 @f_v4i32(<4 x i32> %arg) 384*9880d681SAndroid Build Coastguard Workerdeclare i64 @f_v2i64(<2 x i64> %arg) 385*9880d681SAndroid Build Coastguard Worker 386*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t1_call: 387*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t1_call() { 388*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #8 389*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 390*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 391*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 8, i8 0, i8 0, i8 0, i8 8, i8 0, i8 0, i8 0>) 392*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #7 393*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 394*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 395*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 7, i16 0, i16 7, i16 0>) 396*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #6 397*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 398*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 399*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 6, i32 6>) 400*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.2s, #5 401*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 402*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 21474836485>) 403*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #5 404*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 405*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 406*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 407*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0>) 408*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #4 409*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 410*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 411*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 412*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 4, i16 0, i16 4, i16 0, i16 4, i16 0, i16 4, i16 0>) 413*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #3 414*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 415*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 416*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 417*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 3, i32 3, i32 3, i32 3>) 418*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].4s, #2 419*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 420*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 421*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 8589934594, i64 8589934594>) 422*9880d681SAndroid Build Coastguard Worker 423*9880d681SAndroid Build Coastguard Worker ret void 424*9880d681SAndroid Build Coastguard Worker} 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t2_call: 427*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t2_call() { 428*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #8, lsl #8 429*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 430*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 431*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 0, i8 8, i8 0, i8 0, i8 0, i8 8, i8 0, i8 0>) 432*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #7, lsl #8 433*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 434*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 435*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 1792, i16 0, i16 1792, i16 0>) 436*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #6, lsl #8 437*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 438*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 439*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 1536, i32 1536>) 440*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.2s, #5, lsl #8 441*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 442*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 5497558140160>) 443*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #5, lsl #8 444*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 445*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 446*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 447*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0>) 448*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #4, lsl #8 449*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 450*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 451*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 452*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 1024, i16 0, i16 1024, i16 0, i16 1024, i16 0, i16 1024, i16 0>) 453*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #3, lsl #8 454*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 455*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 456*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 457*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 768, i32 768, i32 768, i32 768>) 458*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].4s, #2, lsl #8 459*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 460*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 461*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 2199023256064, i64 2199023256064>) 462*9880d681SAndroid Build Coastguard Worker 463*9880d681SAndroid Build Coastguard Worker ret void 464*9880d681SAndroid Build Coastguard Worker} 465*9880d681SAndroid Build Coastguard Worker 466*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t3_call: 467*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t3_call() { 468*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #8, lsl #16 469*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 470*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 471*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 0, i8 0, i8 8, i8 0, i8 0, i8 0, i8 8, i8 0>) 472*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #7, lsl #16 473*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 474*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 475*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 0, i16 7, i16 0, i16 7>) 476*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #6, lsl #16 477*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 478*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 479*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 393216, i32 393216>) 480*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.2s, #5, lsl #16 481*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 482*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 1407374883880960>) 483*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #5, lsl #16 484*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 485*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 486*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 487*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0>) 488*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #4, lsl #16 489*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 490*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 491*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 492*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 0, i16 4, i16 0, i16 4, i16 0, i16 4, i16 0, i16 4>) 493*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #3, lsl #16 494*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 495*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 496*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 497*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 196608, i32 196608, i32 196608, i32 196608>) 498*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].4s, #2, lsl #16 499*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 500*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 501*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 562949953552384, i64 562949953552384>) 502*9880d681SAndroid Build Coastguard Worker 503*9880d681SAndroid Build Coastguard Worker ret void 504*9880d681SAndroid Build Coastguard Worker} 505*9880d681SAndroid Build Coastguard Worker 506*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t4_call: 507*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t4_call() { 508*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #8, lsl #24 509*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 510*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 511*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 0, i8 0, i8 0, i8 8, i8 0, i8 0, i8 0, i8 8>) 512*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #7, lsl #24 513*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 514*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 515*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 0, i16 1792, i16 0, i16 1792>) 516*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #6, lsl #24 517*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 518*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 519*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 100663296, i32 100663296>) 520*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.2s, #5, lsl #24 521*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 522*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 360287970273525760>) 523*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #5, lsl #24 524*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 525*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 526*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 527*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5, i8 0, i8 0, i8 0, i8 5>) 528*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #4, lsl #24 529*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 530*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 531*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 532*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 0, i16 1024, i16 0, i16 1024, i16 0, i16 1024, i16 0, i16 1024>) 533*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #3, lsl #24 534*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 535*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 536*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 537*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 50331648, i32 50331648, i32 50331648, i32 50331648>) 538*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].4s, #2, lsl #24 539*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 540*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 541*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 144115188109410304, i64 144115188109410304>) 542*9880d681SAndroid Build Coastguard Worker 543*9880d681SAndroid Build Coastguard Worker ret void 544*9880d681SAndroid Build Coastguard Worker} 545*9880d681SAndroid Build Coastguard Worker 546*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t5_call: 547*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t5_call() { 548*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4h, #8 549*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 550*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 551*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 8, i8 0, i8 8, i8 0, i8 8, i8 0, i8 8, i8 0>) 552*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4h, #7 553*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 554*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 555*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 7, i16 7, i16 7, i16 7>) 556*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4h, #6 557*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 558*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 559*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 393222, i32 393222>) 560*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.4h, #5 561*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 562*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 1407396358717445>) 563*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8h, #5 564*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 565*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 566*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 567*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0>) 568*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8h, #4 569*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 570*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 571*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 572*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4>) 573*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8h, #3 574*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 575*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 576*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 577*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 196611, i32 196611, i32 196611, i32 196611>) 578*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].8h, #2 579*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 580*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 581*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 562958543486978, i64 562958543486978>) 582*9880d681SAndroid Build Coastguard Worker 583*9880d681SAndroid Build Coastguard Worker ret void 584*9880d681SAndroid Build Coastguard Worker} 585*9880d681SAndroid Build Coastguard Worker 586*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t6_call: 587*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t6_call() { 588*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4h, #8, lsl #8 589*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 590*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 591*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 0, i8 8, i8 0, i8 8, i8 0, i8 8, i8 0, i8 8>) 592*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4h, #7, lsl #8 593*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 594*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 595*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 1792, i16 1792, i16 1792, i16 1792>) 596*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4h, #6, lsl #8 597*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 598*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 599*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 100664832, i32 100664832>) 600*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.4h, #5, lsl #8 601*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 602*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 360293467831665920>) 603*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8h, #5, lsl #8 604*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 605*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 606*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 607*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5, i8 0, i8 5>) 608*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8h, #4, lsl #8 609*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 610*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 611*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 612*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024, i16 1024>) 613*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8h, #3, lsl #8 614*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 615*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 616*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 617*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 50332416, i32 50332416, i32 50332416, i32 50332416>) 618*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].8h, #2, lsl #8 619*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 620*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 621*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 144117387132666368, i64 144117387132666368>) 622*9880d681SAndroid Build Coastguard Worker 623*9880d681SAndroid Build Coastguard Worker ret void 624*9880d681SAndroid Build Coastguard Worker} 625*9880d681SAndroid Build Coastguard Worker 626*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t7_call: 627*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t7_call() { 628*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #8, msl #8 629*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 630*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 631*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 255, i8 8, i8 0, i8 0, i8 255, i8 8, i8 0, i8 0>) 632*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #7, msl #8 633*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 634*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 635*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 2047, i16 0, i16 2047, i16 0>) 636*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #6, msl #8 637*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 638*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 639*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 1791, i32 1791>) 640*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.2s, #5, msl #8 641*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 642*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 6592774800895>) 643*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #5, msl #8 644*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 645*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 646*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 647*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 255, i8 5, i8 0, i8 0, i8 255, i8 5, i8 0, i8 0, i8 255, i8 5, i8 0, i8 0, i8 255, i8 5, i8 0, i8 0>) 648*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #4, msl #8 649*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 650*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 651*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 652*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 1279, i16 0, i16 1279, i16 0, i16 1279, i16 0, i16 1279, i16 0>) 653*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #3, msl #8 654*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 655*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 656*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 657*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 1023, i32 1023, i32 1023, i32 1023>) 658*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].4s, #2, msl #8 659*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 660*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 661*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 3294239916799, i64 3294239916799>) 662*9880d681SAndroid Build Coastguard Worker 663*9880d681SAndroid Build Coastguard Worker ret void 664*9880d681SAndroid Build Coastguard Worker} 665*9880d681SAndroid Build Coastguard Worker 666*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t8_call: 667*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t8_call() { 668*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #8, msl #16 669*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 670*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 671*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 255, i8 255, i8 8, i8 0, i8 255, i8 255, i8 8, i8 0>) 672*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #7, msl #16 673*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 674*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 675*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 65535, i16 7, i16 65535, i16 7>) 676*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2s, #6, msl #16 677*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 678*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 679*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 458751, i32 458751>) 680*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v{{[0-9]+}}.2s, #5, msl #16 681*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 682*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 1688845565689855>) 683*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #5, msl #16 684*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 685*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 686*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 687*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 255, i8 255, i8 5, i8 0, i8 255, i8 255, i8 5, i8 0, i8 255, i8 255, i8 5, i8 0, i8 255, i8 255, i8 5, i8 0>) 688*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #4, msl #16 689*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 690*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 691*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 692*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 65535, i16 4, i16 65535, i16 4, i16 65535, i16 4, i16 65535, i16 4>) 693*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].4s, #3, msl #16 694*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 695*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 696*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 697*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 262143, i32 262143, i32 262143, i32 262143>) 698*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG:[0-9]+]].4s, #2, msl #16 699*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 700*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 701*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 844420635361279, i64 844420635361279>) 702*9880d681SAndroid Build Coastguard Worker 703*9880d681SAndroid Build Coastguard Worker ret void 704*9880d681SAndroid Build Coastguard Worker} 705*9880d681SAndroid Build Coastguard Worker 706*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t9_call: 707*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t9_call() { 708*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8b, #8 709*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 710*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 711*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>) 712*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8b, #7 713*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 714*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 715*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 1799, i16 1799, i16 1799, i16 1799>) 716*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].8b, #6 717*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 718*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 719*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 101058054, i32 101058054>) 720*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].16b, #5 721*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 722*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 723*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 724*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>) 725*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].16b, #4 726*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 727*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 728*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 729*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 1028, i16 1028, i16 1028, i16 1028, i16 1028, i16 1028, i16 1028, i16 1028>) 730*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].16b, #3 731*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 732*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 733*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 734*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 50529027, i32 50529027, i32 50529027, i32 50529027>) 735*9880d681SAndroid Build Coastguard Worker 736*9880d681SAndroid Build Coastguard Worker ret void 737*9880d681SAndroid Build Coastguard Worker} 738*9880d681SAndroid Build Coastguard Worker 739*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t10_call: 740*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t10_call() { 741*9880d681SAndroid Build Coastguard Worker ; CHECK: movi d[[REG1:[0-9]+]], #0x0000ff000000ff 742*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 743*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 744*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 -1, i8 0, i8 0, i8 0, i8 -1, i8 0, i8 0, i8 0>) 745*9880d681SAndroid Build Coastguard Worker ; CHECK: movi d[[REG1:[0-9]+]], #0x00ffff0000ffff 746*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 747*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 748*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 -1, i16 0, i16 -1, i16 0>) 749*9880d681SAndroid Build Coastguard Worker ; CHECK: movi d[[REG1:[0-9]+]], #0xffffffffffffffff 750*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 751*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 752*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 -1, i32 -1>) 753*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2d, #0xffffff00ffffff 754*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 755*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 756*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 757*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <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>) 758*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2d, #0xffffffffffff0000 759*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 760*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 761*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 762*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 0, i16 -1, i16 -1, i16 -1, i16 0, i16 -1, i16 -1, i16 -1>) 763*9880d681SAndroid Build Coastguard Worker ; CHECK: movi v[[REG1:[0-9]+]].2d, #0xffffffff00000000 764*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 765*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 766*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 767*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 0, i32 -1, i32 0, i32 -1>) 768*9880d681SAndroid Build Coastguard Worker 769*9880d681SAndroid Build Coastguard Worker ret void 770*9880d681SAndroid Build Coastguard Worker} 771*9880d681SAndroid Build Coastguard Worker 772*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t11_call: 773*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t11_call() { 774*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].2s, #4.00000000 775*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.8b, v[[REG1]].8b 776*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i8 777*9880d681SAndroid Build Coastguard Worker call i8 @f_v8i8(<8 x i8> <i8 0, i8 0, i8 128, i8 64, i8 0, i8 0, i8 128, i8 64>) 778*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].2s, #3.75000000 779*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.4h, v[[REG1]].4h 780*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i16 781*9880d681SAndroid Build Coastguard Worker call i16 @f_v4i16(<4 x i16> <i16 0, i16 16496, i16 0, i16 16496>) 782*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].2s, #3.50000000 783*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v{{[0-9]+}}.2s, v[[REG1]].2s 784*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i32 785*9880d681SAndroid Build Coastguard Worker call i32 @f_v2i32(<2 x i32> <i32 1080033280, i32 1080033280>) 786*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v{{[0-9]+}}.2s, #0.39062500 787*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v1i64 788*9880d681SAndroid Build Coastguard Worker call i64 @f_v1i64(<1 x i64> <i64 4523865826746957824>) 789*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].4s, #3.25000000 790*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 791*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 792*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 793*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 0, i8 0, i8 80, i8 64, i8 0, i8 0, i8 80, i8 64, i8 0, i8 0, i8 80, i8 64, i8 0, i8 0, i8 80, i8 64>) 794*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].4s, #3.00000000 795*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 796*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 797*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 798*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 0, i16 16448, i16 0, i16 16448, i16 0, i16 16448, i16 0, i16 16448>) 799*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].4s, #2.75000000 800*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 801*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 802*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 803*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 1076887552, i32 1076887552, i32 1076887552, i32 1076887552>) 804*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG:[0-9]+]].4s, #2.5000000 805*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 806*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v2i64 807*9880d681SAndroid Build Coastguard Worker call i64 @f_v2i64(<2 x i64> <i64 4620693218757967872, i64 4620693218757967872>) 808*9880d681SAndroid Build Coastguard Worker 809*9880d681SAndroid Build Coastguard Worker ret void 810*9880d681SAndroid Build Coastguard Worker} 811*9880d681SAndroid Build Coastguard Worker 812*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: modimm_t12_call: 813*9880d681SAndroid Build Coastguard Workerdefine void @modimm_t12_call() { 814*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].2d, #0.18750000 815*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].16b, v[[REG1]].16b 816*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 817*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v16i8 818*9880d681SAndroid Build Coastguard Worker call i8 @f_v16i8(<16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 200, i8 63, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 200, i8 63>) 819*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].2d, #0.17968750 820*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].8h, v[[REG1]].8h 821*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 822*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v8i16 823*9880d681SAndroid Build Coastguard Worker call i16 @f_v8i16(<8 x i16> <i16 0, i16 0, i16 0, i16 16327, i16 0, i16 0, i16 0, i16 16327>) 824*9880d681SAndroid Build Coastguard Worker ; CHECK: fmov v[[REG1:[0-9]+]].2d, #0.17187500 825*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: rev64 v[[REG2:[0-9]+]].4s, v[[REG1]].4s 826*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: ext v[[REG2]].16b, v[[REG2]].16b, v[[REG2]].16b, #8 827*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl f_v4i32 828*9880d681SAndroid Build Coastguard Worker call i32 @f_v4i32(<4 x i32> <i32 0, i32 1069940736, i32 0, i32 1069940736>) 829*9880d681SAndroid Build Coastguard Worker 830*9880d681SAndroid Build Coastguard Worker ret void 831*9880d681SAndroid Build Coastguard Worker} 832