Proposed Mips patches for LLVM 3.6.1

Hi Tom,

Here are the patches I’d like to merge into 3.6.1.

For clang:

· r228918 - [mips] Partially revert r223927: Removing SIZEOF_INT128 macro for MIPS64

· r230469 - [Mips] Support mips-r6 path suffix for Adnroid MIPS toolchain

· r229680,r230253 - Change representation of member function pointers for MIPS targets

o This is a scary-sounding change but it only matters for microMIPS where member function pointers are currently broken.

o This fixes the remaining test-suite failure for microMIPS.

· r233508 - Add check for kind of UnqualifiedId in Declarator::isStaticMember()

For llvm:

· r226151,r226164,r226165,r226166,r226407,r226408,r226409 – Disassembler tests for various mips ISA’s.

o These mostly make merging r226652 easier but are good to have anyway.

· r226652 - [Mips][Disassembler]When disassembler meets load/store from coprocessor 2 instructions…

· r226905 - [mips] Add new error message and improve testing for parsing the .module directive.

· r227087 - [mips] Add tests for bitwise binary and integer arithmetic operators.

o Needed for the following patch.

· r227089 - [mips] Enable arithmetic and binary operations for the i128 data type.

· r227269 - [mips] Use __clear_cache builtin instead of cacheflush()

· r227084 - When disassembler meets compact jump instructions for r6 it crashes…

· r227430 - [Mips][Disassembler] When disassembler meets cache/pref instructions for r6 it crashes…

· r229675 - [mips] Avoid redundant sign extension of the result of binary bitwise instructions.

· r230235 - [mips] Honour -mno-odd-spreg for vector insert/extract when MSA is enabled.

· r230657 - Fix justify error for small structures in varargs for MIPS64BE

· r230742 - [mips] Account for constant-zero operands in ADDE nodes.

· r230748 - [mips] Remove redundant periods from -mattr=help descriptions for MIPS.

· r232382 - [MIPS] Fix justify error for small structures

· r232943 - Fix sign extension for MIPS64 in makeLibCall function

· r233904 - [mips] Make sure that we don’t adjust the stack pointer by zero amount.

· r228403 - [mips] Fix FileCheck prefixes with whitespace between ‘CHECK’ and ‘:’

· r230500 - [MIPS]Multiple and add instructions for Mips are currently available in mips32r2/mips64r2…

o Makes the madd.[sd] instructions and similar available to some ISA’s they were wrongly omitted from.

· r230956 - [mips] Optimize conditional moves where RHS is zero.

o This fixes a particularly embarrassing case of suboptimal code generation where zero was stored to memory with a ‘addiu $1, $zero, 0’ and a store instead of simply using $zero as the operand to the store.

· r231237 - [mips] Specify the correct value type when combining a CMovFP node

· r228765 - Fix makeLibCall argument (signed) in SoftenFloatRes_XINT_TO_FP function

Daniel Sanders

Leading Software Design Engineer, MIPS Processor IP

Imagination Technologies Limited

www.imgtec.com

Hi Tom,

Here are the patches I'd like to merge into 3.6.1.

For clang:

* r228918 - [mips] Partially revert r223927: Removing __SIZEOF_INT128__ macro for MIPS64

* r230469 - [Mips] Support mips-r6 path suffix for Adnroid MIPS toolchain

* r229680,r230253 - Change representation of member function pointers for MIPS targets

o This is a scary-sounding change but it only matters for microMIPS where member function pointers are currently broken.

o This fixes the remaining test-suite failure for microMIPS.

* r233508 - Add check for kind of UnqualifiedId in Declarator::isStaticMember()

This one looks OK to me, but you should run it by the Sema code owner.

The rest of the clang commits are OK to merge.

For llvm:

* r226151,r226164,r226165,r226166,r226407,r226408,r226409 - Disassembler tests for various mips ISA's.

o These mostly make merging r226652 easier but are good to have anyway.

* r226652 - [Mips][Disassembler]When disassembler meets load/store from coprocessor 2 instructions...

* r226905 - [mips] Add new error message and improve testing for parsing the .module directive.

* r227087 - [mips] Add tests for bitwise binary and integer arithmetic operators.

o Needed for the following patch.

* r227089 - [mips] Enable arithmetic and binary operations for the i128 data type.

* r227269 - [mips] Use __clear_cache builtin instead of cacheflush()

* r227084 - When disassembler meets compact jump instructions for r6 it crashes...

* r227430 - [Mips][Disassembler] When disassembler meets cache/pref instructions for r6 it crashes...

* r229675 - [mips] Avoid redundant sign extension of the result of binary bitwise instructions.

* r230235 - [mips] Honour -mno-odd-spreg for vector insert/extract when MSA is enabled.

* r230657 - Fix justify error for small structures in varargs for MIPS64BE

* r230742 - [mips] Account for constant-zero operands in ADDE nodes.

* r230748 - [mips] Remove redundant periods from -mattr=help descriptions for MIPS.

* r232382 - [MIPS] Fix justify error for small structures

* r232943 - Fix sign extension for MIPS64 in makeLibCall function

* r233904 - [mips] Make sure that we don't adjust the stack pointer by zero amount.

* r228403 - [mips] Fix FileCheck prefixes with whitespace between 'CHECK' and ':'

* r230500 - [MIPS]Multiple and add instructions for Mips are currently available in mips32r2/mips64r2...

o Makes the madd.[sd] instructions and similar available to some ISA's they were wrongly omitted from.

* r230956 - [mips] Optimize conditional moves where RHS is zero.

o This fixes a particularly embarrassing case of suboptimal code generation where zero was stored to memory with a 'addiu $1, $zero, 0' and a store instead of simply using $zero as the operand to the store.

* r231237 - [mips] Specify the correct value type when combining a CMovFP node

* r228765 - Fix makeLibCall argument (signed) in SoftenFloatRes_XINT_TO_FP function

I took a quick look at these, and you can go ahead and merge all the patches that touch Target/MIPS files.

It looks like r232943 and r228765 touch common code. Can you get approval for these (and any other patches
that impact the core libraries) from the code owner.

Thanks,
Tom