xref: /aosp_15_r20/external/llvm/test/MC/AArch64/neon-scalar-mul.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon,+fullfp16 -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 Integer Saturating Doubling Multiply Half High
7*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker    sqdmulh h10, h11, h12
10*9880d681SAndroid Build Coastguard Worker    sqdmulh s20, s21, s2
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmulh h10, h11, h12     // encoding: [0x6a,0xb5,0x6c,0x5e]
13*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmulh s20, s21, s2      // encoding: [0xb4,0xb6,0xa2,0x5e]
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
16*9880d681SAndroid Build Coastguard Worker// Scalar Integer Saturating Rounding Doubling Multiply Half High
17*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker    sqrdmulh h10, h11, h12
20*9880d681SAndroid Build Coastguard Worker    sqrdmulh s20, s21, s2
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker// CHECK: sqrdmulh h10, h11, h12     // encoding: [0x6a,0xb5,0x6c,0x7e]
23*9880d681SAndroid Build Coastguard Worker// CHECK: sqrdmulh s20, s21, s2      // encoding: [0xb4,0xb6,0xa2,0x7e]
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
26*9880d681SAndroid Build Coastguard Worker// Floating-point Multiply Extended
27*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker    fmulx h20, h22, h15
30*9880d681SAndroid Build Coastguard Worker    fmulx s20, s22, s15
31*9880d681SAndroid Build Coastguard Worker    fmulx d23, d11, d1
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker// CHECK: fmulx   h20, h22, h15           // encoding: [0xd4,0x1e,0x4f,0x5e]
34*9880d681SAndroid Build Coastguard Worker// CHECK: fmulx s20, s22, s15   // encoding: [0xd4,0xde,0x2f,0x5e]
35*9880d681SAndroid Build Coastguard Worker// CHECK: fmulx d23, d11, d1    // encoding: [0x77,0xdd,0x61,0x5e]
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
38*9880d681SAndroid Build Coastguard Worker// Signed Saturating Doubling Multiply-Add Long
39*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker    sqdmlal s17, h27, h12
42*9880d681SAndroid Build Coastguard Worker    sqdmlal d19, s24, s12
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmlal s17, h27, h12  // encoding: [0x71,0x93,0x6c,0x5e]
45*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmlal d19, s24, s12  // encoding: [0x13,0x93,0xac,0x5e]
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
48*9880d681SAndroid Build Coastguard Worker// Signed Saturating Doubling Multiply-Subtract Long
49*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker    sqdmlsl s14, h12, h25
52*9880d681SAndroid Build Coastguard Worker    sqdmlsl d12, s23, s13
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmlsl s14, h12, h25  // encoding: [0x8e,0xb1,0x79,0x5e]
55*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmlsl d12, s23, s13  // encoding: [0xec,0xb2,0xad,0x5e]
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
58*9880d681SAndroid Build Coastguard Worker// Signed Saturating Doubling Multiply Long
59*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker    sqdmull s12, h22, h12
62*9880d681SAndroid Build Coastguard Worker    sqdmull d15, s22, s12
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmull s12, h22, h12  // encoding: [0xcc,0xd2,0x6c,0x5e]
65*9880d681SAndroid Build Coastguard Worker// CHECK: sqdmull d15, s22, s12  // encoding: [0xcf,0xd2,0xac,0x5e]
66