~ubuntu-branches/ubuntu/maverick/clamav/maverick-security

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/CodeGen/ARM/vld4.ll

  • Committer: Bazaar Package Importer
  • Author(s): Marc Deslauriers
  • Date: 2011-02-23 14:27:51 UTC
  • mfrom: (0.35.17 sid)
  • Revision ID: james.westby@ubuntu.com-20110223142751-o9xb8jyvhkh75d0n
Tags: 0.96.5+dfsg-1ubuntu1.10.10.2
* SECURITY UPDATE: denial of service via double free in vba processing
  - libclamav/vba_extract.c: set buf to NULL when it gets freed.
  - http://git.clamav.net/gitweb?p=clamav-devel.git;a=commit;h=d21fb8d975f8c9688894a8cef4d50d977022e09f
  - CVE-2011-1003

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
2
 
 
3
 
%struct.__neon_int8x8x4_t = type { <8 x i8>,  <8 x i8>,  <8 x i8>, <8 x i8> }
4
 
%struct.__neon_int16x4x4_t = type { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }
5
 
%struct.__neon_int32x2x4_t = type { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }
6
 
%struct.__neon_float32x2x4_t = type { <2 x float>, <2 x float>, <2 x float>, <2 x float> }
7
 
%struct.__neon_int64x1x4_t = type { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }
8
 
 
9
 
%struct.__neon_int8x16x4_t = type { <16 x i8>,  <16 x i8>,  <16 x i8>, <16 x i8> }
10
 
%struct.__neon_int16x8x4_t = type { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }
11
 
%struct.__neon_int32x4x4_t = type { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }
12
 
%struct.__neon_float32x4x4_t = type { <4 x float>, <4 x float>, <4 x float>, <4 x float> }
13
 
 
14
 
define <8 x i8> @vld4i8(i8* %A) nounwind {
15
 
;CHECK: vld4i8:
16
 
;CHECK: vld4.8
17
 
        %tmp1 = call %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8(i8* %A)
18
 
        %tmp2 = extractvalue %struct.__neon_int8x8x4_t %tmp1, 0
19
 
        %tmp3 = extractvalue %struct.__neon_int8x8x4_t %tmp1, 2
20
 
        %tmp4 = add <8 x i8> %tmp2, %tmp3
21
 
        ret <8 x i8> %tmp4
22
 
}
23
 
 
24
 
define <4 x i16> @vld4i16(i16* %A) nounwind {
25
 
;CHECK: vld4i16:
26
 
;CHECK: vld4.16
27
 
        %tmp1 = call %struct.__neon_int16x4x4_t @llvm.arm.neon.vld4.v4i16(i16* %A)
28
 
        %tmp2 = extractvalue %struct.__neon_int16x4x4_t %tmp1, 0
29
 
        %tmp3 = extractvalue %struct.__neon_int16x4x4_t %tmp1, 2
30
 
        %tmp4 = add <4 x i16> %tmp2, %tmp3
31
 
        ret <4 x i16> %tmp4
32
 
}
33
 
 
34
 
define <2 x i32> @vld4i32(i32* %A) nounwind {
35
 
;CHECK: vld4i32:
36
 
;CHECK: vld4.32
37
 
        %tmp1 = call %struct.__neon_int32x2x4_t @llvm.arm.neon.vld4.v2i32(i32* %A)
38
 
        %tmp2 = extractvalue %struct.__neon_int32x2x4_t %tmp1, 0
39
 
        %tmp3 = extractvalue %struct.__neon_int32x2x4_t %tmp1, 2
40
 
        %tmp4 = add <2 x i32> %tmp2, %tmp3
41
 
        ret <2 x i32> %tmp4
42
 
}
43
 
 
44
 
define <2 x float> @vld4f(float* %A) nounwind {
45
 
;CHECK: vld4f:
46
 
;CHECK: vld4.32
47
 
        %tmp1 = call %struct.__neon_float32x2x4_t @llvm.arm.neon.vld4.v2f32(float* %A)
48
 
        %tmp2 = extractvalue %struct.__neon_float32x2x4_t %tmp1, 0
49
 
        %tmp3 = extractvalue %struct.__neon_float32x2x4_t %tmp1, 2
50
 
        %tmp4 = add <2 x float> %tmp2, %tmp3
51
 
        ret <2 x float> %tmp4
52
 
}
53
 
 
54
 
define <1 x i64> @vld4i64(i64* %A) nounwind {
55
 
;CHECK: vld4i64:
56
 
;CHECK: vld1.64
57
 
        %tmp1 = call %struct.__neon_int64x1x4_t @llvm.arm.neon.vld4.v1i64(i64* %A)
58
 
        %tmp2 = extractvalue %struct.__neon_int64x1x4_t %tmp1, 0
59
 
        %tmp3 = extractvalue %struct.__neon_int64x1x4_t %tmp1, 2
60
 
        %tmp4 = add <1 x i64> %tmp2, %tmp3
61
 
        ret <1 x i64> %tmp4
62
 
}
63
 
 
64
 
define <16 x i8> @vld4Qi8(i8* %A) nounwind {
65
 
;CHECK: vld4Qi8:
66
 
;CHECK: vld4.8
67
 
;CHECK: vld4.8
68
 
        %tmp1 = call %struct.__neon_int8x16x4_t @llvm.arm.neon.vld4.v16i8(i8* %A)
69
 
        %tmp2 = extractvalue %struct.__neon_int8x16x4_t %tmp1, 0
70
 
        %tmp3 = extractvalue %struct.__neon_int8x16x4_t %tmp1, 2
71
 
        %tmp4 = add <16 x i8> %tmp2, %tmp3
72
 
        ret <16 x i8> %tmp4
73
 
}
74
 
 
75
 
define <8 x i16> @vld4Qi16(i16* %A) nounwind {
76
 
;CHECK: vld4Qi16:
77
 
;CHECK: vld4.16
78
 
;CHECK: vld4.16
79
 
        %tmp1 = call %struct.__neon_int16x8x4_t @llvm.arm.neon.vld4.v8i16(i16* %A)
80
 
        %tmp2 = extractvalue %struct.__neon_int16x8x4_t %tmp1, 0
81
 
        %tmp3 = extractvalue %struct.__neon_int16x8x4_t %tmp1, 2
82
 
        %tmp4 = add <8 x i16> %tmp2, %tmp3
83
 
        ret <8 x i16> %tmp4
84
 
}
85
 
 
86
 
define <4 x i32> @vld4Qi32(i32* %A) nounwind {
87
 
;CHECK: vld4Qi32:
88
 
;CHECK: vld4.32
89
 
;CHECK: vld4.32
90
 
        %tmp1 = call %struct.__neon_int32x4x4_t @llvm.arm.neon.vld4.v4i32(i32* %A)
91
 
        %tmp2 = extractvalue %struct.__neon_int32x4x4_t %tmp1, 0
92
 
        %tmp3 = extractvalue %struct.__neon_int32x4x4_t %tmp1, 2
93
 
        %tmp4 = add <4 x i32> %tmp2, %tmp3
94
 
        ret <4 x i32> %tmp4
95
 
}
96
 
 
97
 
define <4 x float> @vld4Qf(float* %A) nounwind {
98
 
;CHECK: vld4Qf:
99
 
;CHECK: vld4.32
100
 
;CHECK: vld4.32
101
 
        %tmp1 = call %struct.__neon_float32x4x4_t @llvm.arm.neon.vld4.v4f32(float* %A)
102
 
        %tmp2 = extractvalue %struct.__neon_float32x4x4_t %tmp1, 0
103
 
        %tmp3 = extractvalue %struct.__neon_float32x4x4_t %tmp1, 2
104
 
        %tmp4 = add <4 x float> %tmp2, %tmp3
105
 
        ret <4 x float> %tmp4
106
 
}
107
 
 
108
 
declare %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4.v8i8(i8*) nounwind readonly
109
 
declare %struct.__neon_int16x4x4_t @llvm.arm.neon.vld4.v4i16(i8*) nounwind readonly
110
 
declare %struct.__neon_int32x2x4_t @llvm.arm.neon.vld4.v2i32(i8*) nounwind readonly
111
 
declare %struct.__neon_float32x2x4_t @llvm.arm.neon.vld4.v2f32(i8*) nounwind readonly
112
 
declare %struct.__neon_int64x1x4_t @llvm.arm.neon.vld4.v1i64(i8*) nounwind readonly
113
 
 
114
 
declare %struct.__neon_int8x16x4_t @llvm.arm.neon.vld4.v16i8(i8*) nounwind readonly
115
 
declare %struct.__neon_int16x8x4_t @llvm.arm.neon.vld4.v8i16(i8*) nounwind readonly
116
 
declare %struct.__neon_int32x4x4_t @llvm.arm.neon.vld4.v4i32(i8*) nounwind readonly
117
 
declare %struct.__neon_float32x4x4_t @llvm.arm.neon.vld4.v4f32(i8*) nounwind readonly