aboutsummaryrefslogtreecommitdiffstats
path: root/test/MC/AArch64/neon-across.s
blob: 60b766d8c881aa853f6232ff711756295353225a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s

// Check that the assembler can handle the documented syntax for AArch64

//------------------------------------------------------------------------------
// Instructions across vector registers
//------------------------------------------------------------------------------

        saddlv h0, v1.8b
        saddlv h0, v1.16b
        saddlv s0, v1.4h
        saddlv s0, v1.8h
        saddlv d0, v1.4s

// CHECK: saddlv	h0, v1.8b               // encoding: [0x20,0x38,0x30,0x0e]
// CHECK: saddlv	h0, v1.16b              // encoding: [0x20,0x38,0x30,0x4e]
// CHECK: saddlv	s0, v1.4h               // encoding: [0x20,0x38,0x70,0x0e]
// CHECK: saddlv	s0, v1.8h               // encoding: [0x20,0x38,0x70,0x4e]
// CHECK: saddlv	d0, v1.4s               // encoding: [0x20,0x38,0xb0,0x4e]

        uaddlv h0, v1.8b
        uaddlv h0, v1.16b
        uaddlv s0, v1.4h
        uaddlv s0, v1.8h
        uaddlv d0, v1.4s

// CHECK: uaddlv	h0, v1.8b               // encoding: [0x20,0x38,0x30,0x2e]
// CHECK: uaddlv	h0, v1.16b              // encoding: [0x20,0x38,0x30,0x6e]
// CHECK: uaddlv	s0, v1.4h               // encoding: [0x20,0x38,0x70,0x2e]
// CHECK: uaddlv	s0, v1.8h               // encoding: [0x20,0x38,0x70,0x6e]
// CHECK: uaddlv	d0, v1.4s               // encoding: [0x20,0x38,0xb0,0x6e]

        smaxv b0, v1.8b
        smaxv b0, v1.16b
        smaxv h0, v1.4h
        smaxv h0, v1.8h
        smaxv s0, v1.4s

// CHECK: smaxv	b0, v1.8b               // encoding: [0x20,0xa8,0x30,0x0e]
// CHECK: smaxv	b0, v1.16b              // encoding: [0x20,0xa8,0x30,0x4e]
// CHECK: smaxv	h0, v1.4h               // encoding: [0x20,0xa8,0x70,0x0e]
// CHECK: smaxv	h0, v1.8h               // encoding: [0x20,0xa8,0x70,0x4e]
// CHECK: smaxv	s0, v1.4s               // encoding: [0x20,0xa8,0xb0,0x4e]

        sminv b0, v1.8b
        sminv b0, v1.16b
        sminv h0, v1.4h
        sminv h0, v1.8h
        sminv s0, v1.4s

// CHECK: sminv	b0, v1.8b               // encoding: [0x20,0xa8,0x31,0x0e]
// CHECK: sminv	b0, v1.16b              // encoding: [0x20,0xa8,0x31,0x4e]
// CHECK: sminv	h0, v1.4h               // encoding: [0x20,0xa8,0x71,0x0e]
// CHECK: sminv	h0, v1.8h               // encoding: [0x20,0xa8,0x71,0x4e]
// CHECK: sminv	s0, v1.4s               // encoding: [0x20,0xa8,0xb1,0x4e]

        umaxv b0, v1.8b
        umaxv b0, v1.16b
        umaxv h0, v1.4h
        umaxv h0, v1.8h
        umaxv s0, v1.4s

// CHECK: umaxv	b0, v1.8b               // encoding: [0x20,0xa8,0x30,0x2e]
// CHECK: umaxv	b0, v1.16b              // encoding: [0x20,0xa8,0x30,0x6e]
// CHECK: umaxv	h0, v1.4h               // encoding: [0x20,0xa8,0x70,0x2e]
// CHECK: umaxv	h0, v1.8h               // encoding: [0x20,0xa8,0x70,0x6e]
// CHECK: umaxv	s0, v1.4s               // encoding: [0x20,0xa8,0xb0,0x6e]

        uminv b0, v1.8b
        uminv b0, v1.16b
        uminv h0, v1.4h
        uminv h0, v1.8h
        uminv s0, v1.4s

// CHECK: uminv	b0, v1.8b               // encoding: [0x20,0xa8,0x31,0x2e]
// CHECK: uminv	b0, v1.16b              // encoding: [0x20,0xa8,0x31,0x6e]
// CHECK: uminv	h0, v1.4h               // encoding: [0x20,0xa8,0x71,0x2e]
// CHECK: uminv	h0, v1.8h               // encoding: [0x20,0xa8,0x71,0x6e]
// CHECK: uminv	s0, v1.4s               // encoding: [0x20,0xa8,0xb1,0x6e]

        addv b0, v1.8b
        addv b0, v1.16b
        addv h0, v1.4h
        addv h0, v1.8h
        addv s0, v1.4s

// CHECK: addv	b0, v1.8b               // encoding: [0x20,0xb8,0x31,0x0e]
// CHECK: addv	b0, v1.16b              // encoding: [0x20,0xb8,0x31,0x4e]
// CHECK: addv	h0, v1.4h               // encoding: [0x20,0xb8,0x71,0x0e]
// CHECK: addv	h0, v1.8h               // encoding: [0x20,0xb8,0x71,0x4e]
// CHECK: addv	s0, v1.4s               // encoding: [0x20,0xb8,0xb1,0x4e]

        fmaxnmv s0, v1.4s
        fminnmv s0, v1.4s
        fmaxv s0, v1.4s
        fminv s0, v1.4s

// CHECK: fmaxnmv	s0, v1.4s               // encoding: [0x20,0xc8,0x30,0x6e]
// CHECK: fminnmv	s0, v1.4s               // encoding: [0x20,0xc8,0xb0,0x6e]
// CHECK: fmaxv	s0, v1.4s               // encoding: [0x20,0xf8,0x30,0x6e]
// CHECK: fminv	s0, v1.4s               // encoding: [0x20,0xf8,0xb0,0x6e]