i965/fs: print non-1 strides when dumping instructions
[mesa.git] / src / mesa / drivers / dri / i965 / test_vf_float_conversions.cpp
index 6a8bceabf16a9782495ed66ec9737b08b38315c4..7af97d0d09737cf7b69bcd5c38aade4378985deb 100644 (file)
@@ -40,15 +40,10 @@ void vf_float_conversion_test::SetUp() {
       int ebits = (vf >> 4) & 0x7;
       int mbits = vf & 0xf;
 
-      int e = ebits - 3;
+      float x = 1.0f + mbits / 16.0f;
+      int exp = ebits - 3;
 
-      float value = 1.0f;
-
-      value += mbits / 16.0f;
-
-      value *= exp2f(e);
-
-      vf_to_float[vf] = value;
+      vf_to_float[vf] = ldexpf(x, exp);
    }
 }
 
@@ -98,3 +93,18 @@ TEST_F(vf_float_conversion_test, test_special_case_0)
    EXPECT_EQ(f2u(brw_vf_to_float(brw_float_to_vf(+0.0f))), f2u(+0.0f));
    EXPECT_EQ(f2u(brw_vf_to_float(brw_float_to_vf(-0.0f))), f2u(-0.0f));
 }
+
+TEST_F(vf_float_conversion_test, test_nonrepresentable_float_input)
+{
+   EXPECT_EQ(brw_float_to_vf(+32.0f), -1);
+   EXPECT_EQ(brw_float_to_vf(-32.0f), -1);
+
+   EXPECT_EQ(brw_float_to_vf(+16.5f), -1);
+   EXPECT_EQ(brw_float_to_vf(-16.5f), -1);
+
+   EXPECT_EQ(brw_float_to_vf(+8.25f), -1);
+   EXPECT_EQ(brw_float_to_vf(-8.25f), -1);
+
+   EXPECT_EQ(brw_float_to_vf(+4.125f), -1);
+   EXPECT_EQ(brw_float_to_vf(-4.125f), -1);
+}