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

Unified Diff: test/NaCl/Bitcode/pnacl-bcdis/fcmp.ll

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/NaCl/Bitcode/pnacl-bcdis/constants.ll ('k') | test/NaCl/Bitcode/pnacl-bcdis/forwarddcl.ll » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/NaCl/Bitcode/pnacl-bcdis/fcmp.ll
diff --git a/test/NaCl/Bitcode/pnacl-bcdis/fcmp.ll b/test/NaCl/Bitcode/pnacl-bcdis/fcmp.ll
new file mode 100644
index 0000000000000000000000000000000000000000..5115f1e4368286d01d29e022ab18e98afae49a25
--- /dev/null
+++ b/test/NaCl/Bitcode/pnacl-bcdis/fcmp.ll
@@ -0,0 +1,226 @@
+; Tests the fcmp instruction.
+
+; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress --remove-abbreviations \
+; RUN: | pnacl-bcdis | FileCheck %s
+
+
+; Test fcmp on primitive types.
+define void @SimpleFcmpOps(float %p0, double %p1) {
+
+; CHECK: | | %b0:
+
+ %v0 = fcmp false float %p0, 2.0
+ %v1 = fcmp false double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 4, 2, 0> | %v0 = fcmp false float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 4, 2, 0> | %v1 = fcmp false double %p1, %c1;
+
+ %v2 = fcmp oeq float %p0, 2.0
+ %v3 = fcmp oeq double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 6, 4, 1> | %v2 = fcmp oeq float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 6, 4, 1> | %v3 = fcmp oeq double %p1, %c1;
+
+ %v4 = fcmp ogt float %p0, 2.0
+ %v5 = fcmp ogt double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 8, 6, 2> | %v4 = fcmp ogt float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 8, 6, 2> | %v5 = fcmp ogt double %p1, %c1;
+
+ %v6 = fcmp oge float %p0, 2.0
+ %v7 = fcmp oge double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 10, 8, 3> | %v6 = fcmp oge float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 10, 8, 3> | %v7 = fcmp oge double %p1, %c1;
+
+ %v8 = fcmp olt float %p0, 2.0
+ %v9 = fcmp olt double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 12, 10, 4> | %v8 = fcmp olt float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 12, 10, 4> | %v9 = fcmp olt double %p1, %c1;
+
+ %v10 = fcmp ole float %p0, 2.0
+ %v11 = fcmp ole double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 14, 12, 5> | %v10 = fcmp ole float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 14, 12, 5> | %v11 = fcmp ole double %p1, %c1;
+
+ %v12 = fcmp one float %p0, 2.0
+ %v13 = fcmp one double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 16, 14, 6> | %v12 = fcmp one float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 16, 14, 6> | %v13 = fcmp one double %p1, %c1;
+
+ %v14 = fcmp ord float %p0, 2.0
+ %v15 = fcmp ord double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 18, 16, 7> | %v14 = fcmp ord float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 18, 16, 7> | %v15 = fcmp ord double %p1, %c1;
+
+ %v16 = fcmp ueq float %p0, 2.0
+ %v17 = fcmp ueq double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 20, 18, 9> | %v16 = fcmp ueq float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 20, 18, 9> | %v17 = fcmp ueq double %p1, %c1;
+
+ %v18 = fcmp ugt float %p0, 2.0
+ %v19 = fcmp ugt double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 22, 20, 10> | %v18 = fcmp ugt float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 22, 20, 10> | %v19 = fcmp ugt double %p1, %c1;
+
+ %v20 = fcmp uge float %p0, 2.0
+ %v21 = fcmp uge double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 24, 22, 11> | %v20 = fcmp uge float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 24, 22, 11> | %v21 = fcmp uge double %p1, %c1;
+
+ %v22 = fcmp ult float %p0, 2.0
+ %v23 = fcmp ult double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 26, 24, 12> | %v22 = fcmp ult float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 26, 24, 12> | %v23 = fcmp ult double %p1, %c1;
+
+ %v24 = fcmp ule float %p0, 2.0
+ %v25 = fcmp ule double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 28, 26, 13> | %v24 = fcmp ule float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 28, 26, 13> | %v25 = fcmp ule double %p1, %c1;
+
+ %v26 = fcmp une float %p0, 2.0
+ %v27 = fcmp une double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 30, 28, 14> | %v26 = fcmp une float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 30, 28, 14> | %v27 = fcmp une double %p1, %c1;
+
+ %v28 = fcmp uno float %p0, 2.0
+ %v29 = fcmp uno double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 32, 30, 8> | %v28 = fcmp uno float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 32, 30, 8> | %v29 = fcmp uno double %p1, %c1;
+
+ %v30 = fcmp true float %p0, 2.0
+ %v31 = fcmp true double %p1, 3.0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 34, 32, 15> | %v30 = fcmp true float %p0, %c0;
+; CHECK-NEXT: {{.*}}| 3: <28, 34, 32, 15> | %v31 = fcmp true double %p1, %c1;
+
+ ; Verifies result is i1.
+ %v32 = and i1 %v0, %v16
+ %v33 = and i1 %v1, %v17
+ %v34 = and i1 %v2, %v18
+ %v35 = and i1 %v3, %v19
+ %v36 = and i1 %v4, %v20
+ %v37 = and i1 %v5, %v21
+ %v38 = and i1 %v6, %v22
+ %v39 = and i1 %v7, %v23
+ %v40 = and i1 %v8, %v24
+ %v41 = and i1 %v9, %v25
+ %v42 = and i1 %v10, %v26
+ %v43 = and i1 %v11, %v27
+ %v44 = and i1 %v12, %v28
+ %v45 = and i1 %v13, %v29
+ %v46 = and i1 %v14, %v30
+ %v47 = and i1 %v15, %v31
+ ret void
+
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v32 = and i1 %v0, %v16;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v33 = and i1 %v1, %v17;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v34 = and i1 %v2, %v18;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v35 = and i1 %v3, %v19;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v36 = and i1 %v4, %v20;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v37 = and i1 %v5, %v21;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v38 = and i1 %v6, %v22;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v39 = and i1 %v7, %v23;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v40 = and i1 %v8, %v24;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v41 = and i1 %v9, %v25;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v42 = and i1 %v10, %v26;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v43 = and i1 %v11, %v27;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v44 = and i1 %v12, %v28;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v45 = and i1 %v13, %v29;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v46 = and i1 %v14, %v30;
+; CHECK-NEXT: {{.*}}| 3: <2, 32, 16, 10> | %v47 = and i1 %v15, %v31;
+; CHECK-NEXT: {{.*}}| 3: <10> | ret void;
+
+}
+
+
+
+; Tests floating vector compares
+define internal void @VecFloatOps(<4 x float> %p0) {
+
+; CHECK: | | %b0:
+
+ %v0 = fcmp false <4 x float> %p0, %p0
+ %v1 = fcmp oeq <4 x float> %p0, %p0
+ %v2 = fcmp ogt <4 x float> %p0, %p0
+ %v3 = fcmp oge <4 x float> %p0, %p0
+ %v4 = fcmp olt <4 x float> %p0, %p0
+ %v5 = fcmp ole <4 x float> %p0, %p0
+ %v6 = fcmp one <4 x float> %p0, %p0
+ %v7 = fcmp ord <4 x float> %p0, %p0
+ %v8 = fcmp ueq <4 x float> %p0, %p0
+ %v9 = fcmp ugt <4 x float> %p0, %p0
+ %v10 = fcmp uge <4 x float> %p0, %p0
+ %v11 = fcmp ult <4 x float> %p0, %p0
+ %v12 = fcmp ule <4 x float> %p0, %p0
+ %v13 = fcmp une <4 x float> %p0, %p0
+ %v14 = fcmp uno <4 x float> %p0, %p0
+ %v15 = fcmp true <4 x float> %p0, %p0
+
+; CHECK-NEXT: {{.*}}| 3: <28, 1, 1, 0> | %v0 = fcmp false <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 2, 2, 1> | %v1 = fcmp oeq <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 3, 3, 2> | %v2 = fcmp ogt <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 4, 4, 3> | %v3 = fcmp oge <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 5, 5, 4> | %v4 = fcmp olt <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 6, 6, 5> | %v5 = fcmp ole <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 7, 7, 6> | %v6 = fcmp one <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 8, 8, 7> | %v7 = fcmp ord <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 9, 9, 9> | %v8 = fcmp ueq <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 10, 10, 10> | %v9 = fcmp ugt <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 11, 11, 11> | %v10 = fcmp uge <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 12, 12, 12> | %v11 = fcmp ult <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 13, 13, 13> | %v12 = fcmp ule <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 14, 14, 14> | %v13 = fcmp une <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 15, 15, 8> | %v14 = fcmp uno <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+; CHECK-NEXT: {{.*}}| 3: <28, 16, 16, 15> | %v15 = fcmp true <4 x float> %p0,
+; CHECK-NEXT: | | %p0;
+
+ ; Verify the result is a vector of the right size.
+ %v16 = and <4 x i1> %v0, %v1
+ %v17 = and <4 x i1> %v2, %v3
+ %v18 = and <4 x i1> %v4, %v5
+ %v19 = and <4 x i1> %v6, %v7
+ %v20 = and <4 x i1> %v8, %v9
+ %v21 = and <4 x i1> %v10, %v11
+ %v22 = and <4 x i1> %v12, %v13
+ %v23 = and <4 x i1> %v14, %v15
+ ret void
+
+; CHECK-NEXT: {{.*}}| 3: <2, 16, 15, 10> | %v16 = and <4 x i1> %v0, %v1;
+; CHECK-NEXT: {{.*}}| 3: <2, 15, 14, 10> | %v17 = and <4 x i1> %v2, %v3;
+; CHECK-NEXT: {{.*}}| 3: <2, 14, 13, 10> | %v18 = and <4 x i1> %v4, %v5;
+; CHECK-NEXT: {{.*}}| 3: <2, 13, 12, 10> | %v19 = and <4 x i1> %v6, %v7;
+; CHECK-NEXT: {{.*}}| 3: <2, 12, 11, 10> | %v20 = and <4 x i1> %v8, %v9;
+; CHECK-NEXT: {{.*}}| 3: <2, 11, 10, 10> | %v21 = and <4 x i1> %v10, %v11;
+; CHECK-NEXT: {{.*}}| 3: <2, 10, 9, 10> | %v22 = and <4 x i1> %v12, %v13;
+; CHECK-NEXT: {{.*}}| 3: <2, 9, 8, 10> | %v23 = and <4 x i1> %v14, %v15;
+; CHECK-NEXT: {{.*}}| 3: <10> | ret void;
+
+}
+
« no previous file with comments | « test/NaCl/Bitcode/pnacl-bcdis/constants.ll ('k') | test/NaCl/Bitcode/pnacl-bcdis/forwarddcl.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698