1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// Check that the assembler can handle the documented syntax for AArch64 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 6*9880d681SAndroid Build Coastguard Worker// Scalar Signed Shift Right (Immediate) 7*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 8*9880d681SAndroid Build Coastguard Worker sshr d15, d16, #12 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker// CHECK: sshr d15, d16, #12 // encoding: [0x0f,0x06,0x74,0x5f] 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 13*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Shift Right (Immediate) 14*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 15*9880d681SAndroid Build Coastguard Worker ushr d10, d17, #18 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker// CHECK: ushr d10, d17, #18 // encoding: [0x2a,0x06,0x6e,0x7f] 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 20*9880d681SAndroid Build Coastguard Worker// Scalar Signed Rounding Shift Right (Immediate) 21*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 22*9880d681SAndroid Build Coastguard Worker srshr d19, d18, #7 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker// CHECK: srshr d19, d18, #7 // encoding: [0x53,0x26,0x79,0x5f] 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 27*9880d681SAndroid Build Coastguard Worker// Scalar Unigned Rounding Shift Right (Immediate) 28*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 29*9880d681SAndroid Build Coastguard Worker urshr d20, d23, #31 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker// CHECK: urshr d20, d23, #31 // encoding: [0xf4,0x26,0x61,0x7f] 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 34*9880d681SAndroid Build Coastguard Worker// Scalar Signed Shift Right and Accumulate (Immediate) 35*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 36*9880d681SAndroid Build Coastguard Worker ssra d18, d12, #21 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker// CHECK: ssra d18, d12, #21 // encoding: [0x92,0x15,0x6b,0x5f] 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 41*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Shift Right and Accumulate (Immediate) 42*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 43*9880d681SAndroid Build Coastguard Worker usra d20, d13, #61 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker// CHECK: usra d20, d13, #61 // encoding: [0xb4,0x15,0x43,0x7f] 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 48*9880d681SAndroid Build Coastguard Worker// Scalar Signed Rounding Shift Right and Accumulate (Immediate) 49*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 50*9880d681SAndroid Build Coastguard Worker srsra d15, d11, #19 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker// CHECK: srsra d15, d11, #19 // encoding: [0x6f,0x35,0x6d,0x5f] 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 55*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Rounding Shift Right and Accumulate (Immediate) 56*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 57*9880d681SAndroid Build Coastguard Worker ursra d18, d10, #13 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker// CHECK: ursra d18, d10, #13 // encoding: [0x52,0x35,0x73,0x7f] 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 62*9880d681SAndroid Build Coastguard Worker// Scalar Shift Left (Immediate) 63*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 64*9880d681SAndroid Build Coastguard Worker shl d7, d10, #12 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker// CHECK: shl d7, d10, #12 // encoding: [0x47,0x55,0x4c,0x5f] 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 69*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Left (Immediate) 70*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 71*9880d681SAndroid Build Coastguard Worker sqshl b11, b19, #7 72*9880d681SAndroid Build Coastguard Worker sqshl h13, h18, #11 73*9880d681SAndroid Build Coastguard Worker sqshl s14, s17, #22 74*9880d681SAndroid Build Coastguard Worker sqshl d15, d16, #51 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl b11, b19, #7 // encoding: [0x6b,0x76,0x0f,0x5f] 77*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl h13, h18, #11 // encoding: [0x4d,0x76,0x1b,0x5f] 78*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl s14, s17, #22 // encoding: [0x2e,0x76,0x36,0x5f] 79*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl d15, d16, #51 // encoding: [0x0f,0x76,0x73,0x5f] 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 82*9880d681SAndroid Build Coastguard Worker// Unsigned Saturating Shift Left (Immediate) 83*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 84*9880d681SAndroid Build Coastguard Worker uqshl b18, b15, #6 85*9880d681SAndroid Build Coastguard Worker uqshl h11, h18, #7 86*9880d681SAndroid Build Coastguard Worker uqshl s14, s19, #18 87*9880d681SAndroid Build Coastguard Worker uqshl d15, d12, #19 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl b18, b15, #6 // encoding: [0xf2,0x75,0x0e,0x7f] 90*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl h11, h18, #7 // encoding: [0x4b,0x76,0x17,0x7f] 91*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl s14, s19, #18 // encoding: [0x6e,0x76,0x32,0x7f] 92*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl d15, d12, #19 // encoding: [0x8f,0x75,0x53,0x7f] 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 95*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Left Unsigned (Immediate) 96*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 97*9880d681SAndroid Build Coastguard Worker sqshlu b15, b18, #6 98*9880d681SAndroid Build Coastguard Worker sqshlu h19, h17, #6 99*9880d681SAndroid Build Coastguard Worker sqshlu s16, s14, #25 100*9880d681SAndroid Build Coastguard Worker sqshlu d11, d13, #32 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu b15, b18, #6 // encoding: [0x4f,0x66,0x0e,0x7f] 103*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu h19, h17, #6 // encoding: [0x33,0x66,0x16,0x7f] 104*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu s16, s14, #25 // encoding: [0xd0,0x65,0x39,0x7f] 105*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu d11, d13, #32 // encoding: [0xab,0x65,0x60,0x7f] 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 108*9880d681SAndroid Build Coastguard Worker// Shift Right And Insert (Immediate) 109*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 110*9880d681SAndroid Build Coastguard Worker sri d10, d12, #14 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker// CHECK: sri d10, d12, #14 // encoding: [0x8a,0x45,0x72,0x7f] 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 115*9880d681SAndroid Build Coastguard Worker// Shift Left And Insert (Immediate) 116*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 117*9880d681SAndroid Build Coastguard Worker sli d10, d14, #12 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker// CHECK: sli d10, d14, #12 // encoding: [0xca,0x55,0x4c,0x7f] 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 122*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Right Narrow (Immediate) 123*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 124*9880d681SAndroid Build Coastguard Worker sqshrn b10, h15, #5 125*9880d681SAndroid Build Coastguard Worker sqshrn h17, s10, #4 126*9880d681SAndroid Build Coastguard Worker sqshrn s18, d10, #31 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrn b10, h15, #5 // encoding: [0xea,0x95,0x0b,0x5f] 129*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrn h17, s10, #4 // encoding: [0x51,0x95,0x1c,0x5f] 130*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrn s18, d10, #31 // encoding: [0x52,0x95,0x21,0x5f] 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 133*9880d681SAndroid Build Coastguard Worker// Unsigned Saturating Shift Right Narrow (Immediate) 134*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 135*9880d681SAndroid Build Coastguard Worker uqshrn b12, h10, #7 136*9880d681SAndroid Build Coastguard Worker uqshrn h10, s14, #5 137*9880d681SAndroid Build Coastguard Worker uqshrn s10, d12, #13 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker// CHECK: uqshrn b12, h10, #7 // encoding: [0x4c,0x95,0x09,0x7f] 140*9880d681SAndroid Build Coastguard Worker// CHECK: uqshrn h10, s14, #5 // encoding: [0xca,0x95,0x1b,0x7f] 141*9880d681SAndroid Build Coastguard Worker// CHECK: uqshrn s10, d12, #13 // encoding: [0x8a,0x95,0x33,0x7f] 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 144*9880d681SAndroid Build Coastguard Worker// Signed Saturating Rounded Shift Right Narrow (Immediate) 145*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 146*9880d681SAndroid Build Coastguard Worker sqrshrn b10, h13, #2 147*9880d681SAndroid Build Coastguard Worker sqrshrn h15, s10, #6 148*9880d681SAndroid Build Coastguard Worker sqrshrn s15, d12, #9 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrn b10, h13, #2 // encoding: [0xaa,0x9d,0x0e,0x5f] 151*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrn h15, s10, #6 // encoding: [0x4f,0x9d,0x1a,0x5f] 152*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrn s15, d12, #9 // encoding: [0x8f,0x9d,0x37,0x5f] 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 155*9880d681SAndroid Build Coastguard Worker// Unsigned Saturating Rounded Shift Right Narrow (Immediate) 156*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 157*9880d681SAndroid Build Coastguard Worker uqrshrn b10, h12, #5 158*9880d681SAndroid Build Coastguard Worker uqrshrn h12, s10, #14 159*9880d681SAndroid Build Coastguard Worker uqrshrn s10, d10, #25 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker// CHECK: uqrshrn b10, h12, #5 // encoding: [0x8a,0x9d,0x0b,0x7f] 162*9880d681SAndroid Build Coastguard Worker// CHECK: uqrshrn h12, s10, #14 // encoding: [0x4c,0x9d,0x12,0x7f] 163*9880d681SAndroid Build Coastguard Worker// CHECK: uqrshrn s10, d10, #25 // encoding: [0x4a,0x9d,0x27,0x7f] 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 166*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Right Unsigned Narrow (Immediate) 167*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 168*9880d681SAndroid Build Coastguard Worker sqshrun b15, h10, #7 169*9880d681SAndroid Build Coastguard Worker sqshrun h20, s14, #3 170*9880d681SAndroid Build Coastguard Worker sqshrun s10, d15, #15 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrun b15, h10, #7 // encoding: [0x4f,0x85,0x09,0x7f] 173*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrun h20, s14, #3 // encoding: [0xd4,0x85,0x1d,0x7f] 174*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrun s10, d15, #15 // encoding: [0xea,0x85,0x31,0x7f] 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 177*9880d681SAndroid Build Coastguard Worker// Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate) 178*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker sqrshrun b17, h10, #6 181*9880d681SAndroid Build Coastguard Worker sqrshrun h10, s13, #15 182*9880d681SAndroid Build Coastguard Worker sqrshrun s22, d16, #31 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrun b17, h10, #6 // encoding: [0x51,0x8d,0x0a,0x7f] 185*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrun h10, s13, #15 // encoding: [0xaa,0x8d,0x11,0x7f] 186*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrun s22, d16, #31 // encoding: [0x16,0x8e,0x21,0x7f] 187