Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1302)

Side by Side Diff: tests_lit/llvm2ice_tests/fp.convert.ll

Issue 2316933002: [SubZero] Implement GP to/from FP moves for MIPS (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Rebase to master Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | tests_lit/llvm2ice_tests/fp.load_store.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; This tries to be a comprehensive test of f32 and f64 convert operations. 1 ; This tries to be a comprehensive test of f32 and f64 convert operations.
2 ; The CHECK lines are only checking for basic instruction patterns 2 ; The CHECK lines are only checking for basic instruction patterns
3 ; that should be present regardless of the optimization level, so 3 ; that should be present regardless of the optimization level, so
4 ; there are no special OPTM1 match lines. 4 ; there are no special OPTM1 match lines.
5 5
6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s 6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s
7 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s 7 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s
8 8
9 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \ 9 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \
10 ; RUN: --target arm32 -i %s --args -O2 --skip-unimplemented \ 10 ; RUN: --target arm32 -i %s --args -O2 --skip-unimplemented \
11 ; RUN: | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \ 11 ; RUN: | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \
12 ; RUN: --check-prefix=ARM32 12 ; RUN: --check-prefix=ARM32
13 13
14 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \ 14 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \
15 ; RUN: --target arm32 -i %s --args -Om1 --skip-unimplemented \ 15 ; RUN: --target arm32 -i %s --args -Om1 --skip-unimplemented \
16 ; RUN: | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \ 16 ; RUN: | %if --need=allow_dump --need=target_ARM32 --command FileCheck %s \
17 ; RUN: --check-prefix=ARM32 17 ; RUN: --check-prefix=ARM32
18 18
19 ; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \ 19 ; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
20 ; RUN: --filetype=asm --target mips32 -i %s --args -Om1 --skip-unimplemented \ 20 ; RUN: --filetype=asm --target mips32 -i %s --args -Om1 --skip-unimplemented \
21 ; RUN: | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \ 21 ; RUN: | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
22 ; RUN: --check-prefix=MIPS32 22 ; RUN: --check-prefix=MIPS32
23 23
24 ; RUN: %if --need=allow_dump --need=target_MIPS32 --command %p2i \
25 ; RUN: --filetype=asm --target mips32 -i %s --args -O2 --skip-unimplemented \
26 ; RUN: | %if --need=allow_dump --need=target_MIPS32 --command FileCheck %s \
27 ; RUN: --check-prefix=MIPS32O2
28
24 define internal float @fptrunc(double %a) { 29 define internal float @fptrunc(double %a) {
25 entry: 30 entry:
26 %conv = fptrunc double %a to float 31 %conv = fptrunc double %a to float
27 ret float %conv 32 ret float %conv
28 } 33 }
29 ; CHECK-LABEL: fptrunc 34 ; CHECK-LABEL: fptrunc
30 ; CHECK: cvtsd2ss 35 ; CHECK: cvtsd2ss
31 ; CHECK: fld 36 ; CHECK: fld
32 ; ARM32-LABEL: fptrunc 37 ; ARM32-LABEL: fptrunc
33 ; ARM32: vcvt.f32.f64 {{s[0-9]+}}, {{d[0-9]+}} 38 ; ARM32: vcvt.f32.f64 {{s[0-9]+}}, {{d[0-9]+}}
34 ; MIPS32-LABEL: fptrunc 39 ; MIPS32-LABEL: fptrunc
35 ; MIPS32: cvt.s.d 40 ; MIPS32: cvt.s.d
41 ; MIPS32O2-LABEL: fptrunc
42 ; MIPS32O2: cvt.s.d
36 43
37 define internal double @fpext(float %a) { 44 define internal double @fpext(float %a) {
38 entry: 45 entry:
39 %conv = fpext float %a to double 46 %conv = fpext float %a to double
40 ret double %conv 47 ret double %conv
41 } 48 }
42 ; CHECK-LABEL: fpext 49 ; CHECK-LABEL: fpext
43 ; CHECK: cvtss2sd 50 ; CHECK: cvtss2sd
44 ; CHECK: fld 51 ; CHECK: fld
45 ; ARM32-LABEL: fpext 52 ; ARM32-LABEL: fpext
46 ; ARM32: vcvt.f64.f32 {{d[0-9]+}}, {{s[0-9]+}} 53 ; ARM32: vcvt.f64.f32 {{d[0-9]+}}, {{s[0-9]+}}
47 ; MIPS32-LABEL: fpext 54 ; MIPS32-LABEL: fpext
48 ; MIPS32: cvt.d.s 55 ; MIPS32: cvt.d.s
56 ; MIPS32O2-LABEL: fpext
57 ; MIPS32O2: cvt.d.s
49 58
50 define internal i64 @doubleToSigned64(double %a) { 59 define internal i64 @doubleToSigned64(double %a) {
51 entry: 60 entry:
52 %conv = fptosi double %a to i64 61 %conv = fptosi double %a to i64
53 ret i64 %conv 62 ret i64 %conv
54 } 63 }
55 ; CHECK-LABEL: doubleToSigned64 64 ; CHECK-LABEL: doubleToSigned64
56 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptosi_f64_i64 65 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptosi_f64_i64
57 ; ARM32-LABEL: doubleToSigned64 66 ; ARM32-LABEL: doubleToSigned64
58 ; TODO(jpp): implement this test. 67 ; TODO(jpp): implement this test.
68 ; MIPS32-LABEL: doubleToSigned64
69 ; MIPS32: jal __Sz_fptosi_f64_i64
70 ; MIPS32O2-LABEL: doubleToSigned64
71 ; MIPS32O2: jal __Sz_fptosi_f64_i64
59 72
60 define internal i64 @floatToSigned64(float %a) { 73 define internal i64 @floatToSigned64(float %a) {
61 entry: 74 entry:
62 %conv = fptosi float %a to i64 75 %conv = fptosi float %a to i64
63 ret i64 %conv 76 ret i64 %conv
64 } 77 }
65 ; CHECK-LABEL: floatToSigned64 78 ; CHECK-LABEL: floatToSigned64
66 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptosi_f32_i64 79 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptosi_f32_i64
67 ; ARM32-LABEL: floatToSigned64 80 ; ARM32-LABEL: floatToSigned64
68 ; TODO(jpp): implement this test. 81 ; TODO(jpp): implement this test.
82 ; MIPS32-LABEL: floatToSigned64
83 ; MIPS32: jal __Sz_fptosi_f32_i64
84 ; MIPS32O2-LABEL: floatToSigned64
85 ; MIPS32O2: jal __Sz_fptosi_f32_i64
69 86
70 define internal i64 @doubleToUnsigned64(double %a) { 87 define internal i64 @doubleToUnsigned64(double %a) {
71 entry: 88 entry:
72 %conv = fptoui double %a to i64 89 %conv = fptoui double %a to i64
73 ret i64 %conv 90 ret i64 %conv
74 } 91 }
75 ; CHECK-LABEL: doubleToUnsigned64 92 ; CHECK-LABEL: doubleToUnsigned64
76 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f64_i64 93 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f64_i64
77 ; ARM32-LABEL: doubleToUnsigned64 94 ; ARM32-LABEL: doubleToUnsigned64
78 ; TODO(jpp): implement this test. 95 ; TODO(jpp): implement this test.
96 ; MIPS32-LABEL: doubleToUnsigned64
97 ; MIPS32: jal __Sz_fptoui_f64_i64
98 ; MIPS32O2-LABEL: doubleToUnsigned64
99 ; MIPS32O2: jal __Sz_fptoui_f64_i64
79 100
80 define internal i64 @floatToUnsigned64(float %a) { 101 define internal i64 @floatToUnsigned64(float %a) {
81 entry: 102 entry:
82 %conv = fptoui float %a to i64 103 %conv = fptoui float %a to i64
83 ret i64 %conv 104 ret i64 %conv
84 } 105 }
85 ; CHECK-LABEL: floatToUnsigned64 106 ; CHECK-LABEL: floatToUnsigned64
86 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f32_i64 107 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f32_i64
87 ; ARM32-LABEL: floatToUnsigned64 108 ; ARM32-LABEL: floatToUnsigned64
88 ; TODO(jpp): implement this test. 109 ; TODO(jpp): implement this test.
110 ; MIPS32-LABEL: floatToUnsigned64
111 ; MIPS32: jal __Sz_fptoui_f32_i64
112 ; MIPS32O2-LABEL: floatToUnsigned64
113 ; MIPS32O2: jal __Sz_fptoui_f32_i64
89 114
90 define internal i32 @doubleToSigned32(double %a) { 115 define internal i32 @doubleToSigned32(double %a) {
91 entry: 116 entry:
92 %conv = fptosi double %a to i32 117 %conv = fptosi double %a to i32
93 ret i32 %conv 118 ret i32 %conv
94 } 119 }
95 ; CHECK-LABEL: doubleToSigned32 120 ; CHECK-LABEL: doubleToSigned32
96 ; CHECK: cvttsd2si 121 ; CHECK: cvttsd2si
97 ; ARM32-LABEL: doubleToSigned32 122 ; ARM32-LABEL: doubleToSigned32
98 ; ARM32-DAG: vcvt.s32.f64 [[REG:s[0-9]*]], {{d[0-9]*}} 123 ; ARM32-DAG: vcvt.s32.f64 [[REG:s[0-9]*]], {{d[0-9]*}}
(...skipping 16 matching lines...) Expand all
115 define internal i32 @floatToSigned32(float %a) { 140 define internal i32 @floatToSigned32(float %a) {
116 entry: 141 entry:
117 %conv = fptosi float %a to i32 142 %conv = fptosi float %a to i32
118 ret i32 %conv 143 ret i32 %conv
119 } 144 }
120 ; CHECK-LABEL: floatToSigned32 145 ; CHECK-LABEL: floatToSigned32
121 ; CHECK: cvttss2si 146 ; CHECK: cvttss2si
122 ; ARM32-LABEL: floatToSigned32 147 ; ARM32-LABEL: floatToSigned32
123 ; ARM32-DAG: vcvt.s32.f32 [[REG:s[0-9]+]], {{s[0-9]+}} 148 ; ARM32-DAG: vcvt.s32.f32 [[REG:s[0-9]+]], {{s[0-9]+}}
124 ; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]] 149 ; ARM32-DAG: vmov {{r[0-9]+}}, [[REG]]
150 ; MIPS32-LABEL: floatToSigned32
151 ; MIPS32: trunc.w.s $f{{.*}}, $f{{.*}}
152 ; MIPS32O2-LABEL: floatToSigned32
153 ; MIPS32O2: trunc.w.s $[[REG:f[0-9]+]], $f{{.*}}
154 ; MIPS32O2: mfc1 $v0, $[[REG]]
125 155
126 define internal i32 @doubleToUnsigned32(double %a) { 156 define internal i32 @doubleToUnsigned32(double %a) {
127 entry: 157 entry:
128 %conv = fptoui double %a to i32 158 %conv = fptoui double %a to i32
129 ret i32 %conv 159 ret i32 %conv
130 } 160 }
131 ; CHECK-LABEL: doubleToUnsigned32 161 ; CHECK-LABEL: doubleToUnsigned32
132 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f64_i32 162 ; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_f64_i32
133 ; ARM32-LABEL: doubleToUnsigned32 163 ; ARM32-LABEL: doubleToUnsigned32
134 ; ARM32-DAG: vcvt.u32.f64 [[REG:s[0-9]+]], {{d[0-9]+}} 164 ; ARM32-DAG: vcvt.u32.f64 [[REG:s[0-9]+]], {{d[0-9]+}}
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 entry: 405 entry:
376 %conv = sitofp i32 %a to float 406 %conv = sitofp i32 %a to float
377 ret float %conv 407 ret float %conv
378 } 408 }
379 ; CHECK-LABEL: signed32ToFloat 409 ; CHECK-LABEL: signed32ToFloat
380 ; CHECK: cvtsi2ss 410 ; CHECK: cvtsi2ss
381 ; CHECK: fld 411 ; CHECK: fld
382 ; ARM32-LABEL: signed32ToFloat 412 ; ARM32-LABEL: signed32ToFloat
383 ; ARM32-DAG: vmov [[SRC:s[0-9]+]], {{r[0-9]+}} 413 ; ARM32-DAG: vmov [[SRC:s[0-9]+]], {{r[0-9]+}}
384 ; ARM32-DAG: vcvt.f32.s32 {{s[0-9]+}}, [[SRC]] 414 ; ARM32-DAG: vcvt.f32.s32 {{s[0-9]+}}, [[SRC]]
415 ; MIPS32-LABEL: signed32ToFloat
416 ; MIPS32: cvt.s.w $f{{.*}}, $f{{.*}}
417 ; MIPS32O2-LABEL: signed32ToFloat
418 ; MIPS32O2: mtc1 $a0, $[[REG:f[0-9]+]]
419 ; MIPS32O2: cvt.s.w $f{{.*}}, $[[REG]]
385 420
386 define internal double @unsigned32ToDouble(i32 %a) { 421 define internal double @unsigned32ToDouble(i32 %a) {
387 entry: 422 entry:
388 %conv = uitofp i32 %a to double 423 %conv = uitofp i32 %a to double
389 ret double %conv 424 ret double %conv
390 } 425 }
391 ; CHECK-LABEL: unsigned32ToDouble 426 ; CHECK-LABEL: unsigned32ToDouble
392 ; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_i32_f64 427 ; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_i32_f64
393 ; CHECK: fstp QWORD 428 ; CHECK: fstp QWORD
394 ; ARM32-LABEL: unsigned32ToDouble 429 ; ARM32-LABEL: unsigned32ToDouble
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 %conv = bitcast i64 9035768 to double 632 %conv = bitcast i64 9035768 to double
598 ret double %conv 633 ret double %conv
599 } 634 }
600 ; CHECK-LABEL: int64BitcastToDoubleConst 635 ; CHECK-LABEL: int64BitcastToDoubleConst
601 ; CHECK: mov 636 ; CHECK: mov
602 ; ARM32-LABEL: int64BitcastToDoubleConst 637 ; ARM32-LABEL: int64BitcastToDoubleConst
603 ; ARM32-DAG: movw [[REG0:r[0-9]+]], #57336 638 ; ARM32-DAG: movw [[REG0:r[0-9]+]], #57336
604 ; ARM32-DAG: movt [[REG0]], #137 639 ; ARM32-DAG: movt [[REG0]], #137
605 ; ARM32-DAG: mov [[REG1:r[0-9]+]], #0 640 ; ARM32-DAG: mov [[REG1:r[0-9]+]], #0
606 ; ARM32-DAG: vmov d{{[0-9]+}}, [[REG0]], [[REG1]] 641 ; ARM32-DAG: vmov d{{[0-9]+}}, [[REG0]], [[REG1]]
OLDNEW
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | tests_lit/llvm2ice_tests/fp.load_store.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698