From 61b922847403ac0e74b6477114c81a28ac2e01a0 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Wed, 11 Oct 2017 13:23:17 +0100 Subject: ART: Introduce Uint8 loads in compiled code. Some vectorization patterns are not recognized anymore. This shall be fixed later. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: testrunner.py --target --optimizing on Nexus 5X Test: Nexus 5X boots. Bug: 23964345 Bug: 67935418 Change-Id: I587a328d4799529949c86fa8045c6df21e3a8617 --- compiler/optimizing/nodes.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'compiler/optimizing/nodes.h') diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 75cdb3ee5e..88609ea790 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -5345,6 +5345,13 @@ class HInstanceFieldGet FINAL : public HExpression<1> { DataType::Type GetFieldType() const { return field_info_.GetFieldType(); } bool IsVolatile() const { return field_info_.IsVolatile(); } + void SetType(DataType::Type new_type) { + DCHECK(DataType::IsIntegralType(GetType())); + DCHECK(DataType::IsIntegralType(new_type)); + DCHECK_EQ(DataType::Size(GetType()), DataType::Size(new_type)); + SetPackedField(new_type); + } + DECLARE_INSTRUCTION(InstanceFieldGet); private: @@ -5468,6 +5475,13 @@ class HArrayGet FINAL : public HExpression<2> { HInstruction* GetArray() const { return InputAt(0); } HInstruction* GetIndex() const { return InputAt(1); } + void SetType(DataType::Type new_type) { + DCHECK(DataType::IsIntegralType(GetType())); + DCHECK(DataType::IsIntegralType(new_type)); + DCHECK_EQ(DataType::Size(GetType()), DataType::Size(new_type)); + SetPackedField(new_type); + } + DECLARE_INSTRUCTION(ArrayGet); private: @@ -6142,6 +6156,13 @@ class HStaticFieldGet FINAL : public HExpression<1> { DataType::Type GetFieldType() const { return field_info_.GetFieldType(); } bool IsVolatile() const { return field_info_.IsVolatile(); } + void SetType(DataType::Type new_type) { + DCHECK(DataType::IsIntegralType(GetType())); + DCHECK(DataType::IsIntegralType(new_type)); + DCHECK_EQ(DataType::Size(GetType()), DataType::Size(new_type)); + SetPackedField(new_type); + } + DECLARE_INSTRUCTION(StaticFieldGet); private: -- cgit v1.2.3-59-g8ed1b