Matrix inversion optimizations and benchmark; originally by whunt@google.com.

https://codereview.appspot.com/6901046/



git-svn-id: http://skia.googlecode.com/svn/trunk@6775 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/Matrix44Bench.cpp b/bench/Matrix44Bench.cpp
index f10870c..653f2b2 100644
--- a/bench/Matrix44Bench.cpp
+++ b/bench/Matrix44Bench.cpp
@@ -76,6 +76,37 @@
     typedef Matrix44Bench INHERITED;
 };
 
+class InvertMatrix44Bench : public Matrix44Bench {
+public:
+    InvertMatrix44Bench(void* param) : INHERITED(param, "invert") {
+	fM0.set(0, 0, -1.1);
+	fM0.set(0, 1, 2.1);
+	fM0.set(0, 2, -3.1);
+	fM0.set(0, 3, 4.1);
+	fM0.set(1, 0, 5.1);
+	fM0.set(1, 1, -6.1);
+	fM0.set(1, 2, 7.1);
+	fM0.set(1, 3, 8.1);
+	fM0.set(2, 0, -9.1);
+	fM0.set(2, 1, 10.1);
+	fM0.set(2, 2, 11.1);
+	fM0.set(2, 3, -12.1);
+	fM0.set(3, 0, -13.1);
+	fM0.set(3, 1, 14.1);
+	fM0.set(3, 2, -15.1);
+	fM0.set(3, 3, 16.1);
+    }
+protected:
+    virtual void performTest() {
+        for (int i = 0; i < 10; ++i) {
+            fM0.invert(&fM1);
+        }
+    }
+private:
+    SkMatrix44 fM0, fM1;
+    typedef Matrix44Bench INHERITED;
+};
+
 class PostScaleMatrix44Bench : public Matrix44Bench {
 public:
     PostScaleMatrix44Bench(void* param) : INHERITED(param, "postscale") {
@@ -135,6 +166,7 @@
 DEF_BENCH( return new EqualsMatrix44Bench(p); )
 DEF_BENCH( return new PreScaleMatrix44Bench(p); )
 DEF_BENCH( return new PostScaleMatrix44Bench(p); )
+DEF_BENCH( return new InvertMatrix44Bench(p); )
 DEF_BENCH( return new SetConcatMatrix44Bench(p); )
 DEF_BENCH( return new GetTypeMatrix44Bench(p); )