source: proto/RE/output/demo1src/pr2.ll @ 3803

Last change on this file since 3803 was 3803, checked in by cameron, 5 years ago

I2result files

File size: 6.4 KB
RevLine 
[3803]1; ModuleID = 'pr.cpp'
2target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
3target triple = "x86_64-pc-linux-gnu"
4
5@.str = private unnamed_addr constant [6 x i8] c"temp1\00", align 1
6@.str1 = private unnamed_addr constant [6 x i8] c"temp2\00", align 1
7@.str2 = private unnamed_addr constant [26 x i8] c"simd<8>::eq(temp1, temp2)\00", align 1
8@.str3 = private unnamed_addr constant [34 x i8] c"  hsimd<64>::signmask(rslt) = %u\0A\00", align 1
9@.str4 = private unnamed_addr constant [8 x i8] c"%40s = \00", align 1
10@.str5 = private unnamed_addr constant [6 x i8] c"%02X \00", align 1
11
12; Function Attrs: nounwind uwtable
13define i32 @main(i32 %argc, i8** nocapture readnone %argv) #0 {
14  %temp1 = alloca <2 x i64>, align 16
15  %temp2 = alloca <2 x i64>, align 16
16  store volatile <2 x i64> <i64 3689348814741910323, i64 3689348814741910323>, <2 x i64>* %temp1, align 16
17  %1 = load volatile <2 x i64>* %temp1, align 16
18  tail call void @_Z14print_registerIDv2_xEvPKcT_(i8* getelementptr inbounds ([6 x i8]* @.str, i64 0, i64 0), <2 x i64> %1)
19  store volatile <2 x i64> <i64 3694133962361549636, i64 3694133962361549636>, <2 x i64>* %temp2, align 16
20  %2 = load volatile <2 x i64>* %temp2, align 16
21  tail call void @_Z14print_registerIDv2_xEvPKcT_(i8* getelementptr inbounds ([6 x i8]* @.str1, i64 0, i64 0), <2 x i64> %2)
22  %3 = load volatile <2 x i64>* %temp1, align 16
23  %4 = load volatile <2 x i64>* %temp2, align 16
24  %5 = bitcast <2 x i64> %3 to <16 x i8>
25  %6 = bitcast <2 x i64> %4 to <16 x i8>
26  %7 = icmp eq <16 x i8> %5, %6
27  %8 = sext <16 x i1> %7 to <16 x i8>
28  %9 = bitcast <16 x i8> %8 to <2 x i64>
29  tail call void @_Z14print_registerIDv2_xEvPKcT_(i8* getelementptr inbounds ([26 x i8]* @.str2, i64 0, i64 0), <2 x i64> %9)
30  %10 = bitcast <16 x i8> %8 to <2 x double>
31  %11 = tail call i32 @signmaskd(<2 x double> %10) #3
32  %12 = and i32 %11, 255
33  %13 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([34 x i8]* @.str3, i64 0, i64 0), i32 %12)
34  ret i32 0
35}
36
37; Function Attrs: nounwind uwtable
38define linkonce_odr void @_Z14print_registerIDv2_xEvPKcT_(i8* %var_name, <2 x i64> %v) #0 {
39  %1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8]* @.str4, i64 0, i64 0), i8* %var_name)
40  %2 = bitcast <2 x i64> %v to i128
41  %3 = lshr i128 %2, 120
42  %4 = trunc i128 %3 to i32
43  %5 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %4)
44  %6 = lshr i128 %2, 112
45  %7 = trunc i128 %6 to i32
46  %8 = and i32 %7, 255
47  %9 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %8)
48  %10 = lshr i128 %2, 104
49  %11 = trunc i128 %10 to i32
50  %12 = and i32 %11, 255
51  %13 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %12)
52  %14 = lshr i128 %2, 96
53  %15 = trunc i128 %14 to i32
54  %16 = and i32 %15, 255
55  %17 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %16)
56  %18 = lshr i128 %2, 88
57  %19 = trunc i128 %18 to i32
58  %20 = and i32 %19, 255
59  %21 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %20)
60  %22 = lshr i128 %2, 80
61  %23 = trunc i128 %22 to i32
62  %24 = and i32 %23, 255
63  %25 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %24)
64  %26 = lshr i128 %2, 72
65  %27 = trunc i128 %26 to i32
66  %28 = and i32 %27, 255
67  %29 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %28)
68  %30 = lshr i128 %2, 64
69  %31 = trunc i128 %30 to i32
70  %32 = and i32 %31, 255
71  %33 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %32)
72  %34 = lshr i128 %2, 56
73  %35 = trunc i128 %34 to i32
74  %36 = and i32 %35, 255
75  %37 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %36)
76  %38 = lshr i128 %2, 48
77  %39 = trunc i128 %38 to i32
78  %40 = and i32 %39, 255
79  %41 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %40)
80  %42 = lshr i128 %2, 40
81  %43 = trunc i128 %42 to i32
82  %44 = and i32 %43, 255
83  %45 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %44)
84  %46 = lshr i128 %2, 32
85  %47 = trunc i128 %46 to i32
86  %48 = and i32 %47, 255
87  %49 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %48)
88  %50 = lshr i128 %2, 24
89  %51 = trunc i128 %50 to i32
90  %52 = and i32 %51, 255
91  %53 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %52)
92  %54 = lshr i128 %2, 16
93  %55 = trunc i128 %54 to i32
94  %56 = and i32 %55, 255
95  %57 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %56)
96  %58 = lshr i128 %2, 8
97  %59 = trunc i128 %58 to i32
98  %60 = and i32 %59, 255
99  %61 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %60)
100  %trunc = trunc i128 %2 to i32
101  %62 = and i32 %trunc, 255
102  %63 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([6 x i8]* @.str5, i64 0, i64 0), i32 %62)
103  %putchar = tail call i32 @putchar(i32 10)
104  ret void
105}
106
107; Function Attrs: nounwind
108declare i32 @printf(i8* nocapture readonly, ...) #1
109
110; Function Attrs: nounwind readnone
111declare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) #2
112
113define i32 @signmaskd(<2 x double> %a) alwaysinline #5
114{
115        %bits = bitcast <2 x double> %a to <2 x i64>
116        %b = icmp slt <2 x i64> %bits, zeroinitializer
117        %c = bitcast <2 x i1> %b to i2
118        %result = zext i2 %c to i32
119        ret i32 %result
120}
121; Function Attrs: nounwind
122declare i32 @putchar(i32) #3
123
124attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
125attributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
126attributes #2 = { nounwind readnone }
127attributes #3 = { nounwind }
128
129!llvm.ident = !{!0}
130
131!0 = metadata !{metadata !"Ubuntu clang version 3.4-1~exp1 (trunk) (based on LLVM 3.4)"}
Note: See TracBrowser for help on using the repository browser.