v8/test/unittests/compiler
Seth Brenith 98438d8619 [torque] Generate better code when using & operator on bitfields
Sometimes CSA code carefully constructs a mask to check several
bitfields at once. Thus far, such a check has been very awkward to write
in Torque. This change adds a way to do so, using the
non-short-circuiting binary `&` operator. So now you can write an
expression that depends on several bitfields from a bitfield struct,
like `x.a == 5 & x.b & !x.c & x.d == 2` (assuming b is a one-bit value),
and it will be reduced to a single mask and equality check. To
demonstrate a usage of this new reduction, this change ports the trivial
macro IsSimpleObjectMap to Torque. I manually verified that the
generated code for the builtin SetDataProperties, which uses that macro,
is unchanged.

Bug: v8:7793
Change-Id: I4a23e0005d738a6699ea0f2a63f9fd67b01e7026
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2183276
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#67948}
2020-05-22 21:59:06 +00:00
..
arm Revert "Move branch inversion on ==0 into platform-agnostic reducer" 2020-03-25 16:47:48 +00:00
arm64 [turbofan] Add SIMD multiply-add/sub on arm64 2020-05-13 09:40:00 +00:00
backend [compiler] Don't calculate StateValueAccess::size in InstructionSelector 2020-02-14 10:30:31 +00:00
ia32 [interpreter,compiler] Remove CodeAssembler::LoadStackPointer 2019-08-12 14:49:47 +00:00
mips Move architecture dependent files 2019-05-28 14:02:15 +00:00
mips64 Move architecture dependent files 2019-05-28 14:02:15 +00:00
ppc Move code generation related files to src/codegen 2019-05-21 10:33:39 +00:00
regalloc [tests] Fix subobject-linkage error when building with GCC 2019-10-07 11:11:39 +00:00
s390 Move architecture dependent files 2019-05-28 14:02:15 +00:00
x64 [interpreter,compiler] Remove CodeAssembler::LoadStackPointer 2019-08-12 14:49:47 +00:00
branch-elimination-unittest.cc [compiler]Use Phi in Branch if control flow is known 2019-08-28 19:12:03 +00:00
bytecode-analysis-unittest.cc [interpreter] Make IterationBody StackChecks implicit within JumpLoop 2020-03-20 13:22:41 +00:00
checkpoint-elimination-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
common-operator-reducer-unittest.cc Revert "Move branch inversion on ==0 into platform-agnostic reducer" 2020-03-25 16:47:48 +00:00
common-operator-unittest.cc [tests] Fix subobject-linkage error when building with GCC 2019-10-07 11:11:39 +00:00
compiler-test-utils.h [turbofan] Drop V8_TURBOFAN_BACKEND and V8_TURBOFAN_TARGET defines. 2015-08-10 07:17:34 +00:00
constant-folding-reducer-unittest.cc Reland "[turbofan] Clean up ConstantFoldingReducer" 2020-03-17 09:49:24 +00:00
control-equivalence-unittest.cc Move utility code to src/utils 2019-05-23 14:13:34 +00:00
control-flow-optimizer-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
dead-code-elimination-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
decompression-optimizer-unittest.cc [ptr-compr] Added BitcastTaggedToWord* to DecompressionOptimizer 2020-01-08 21:48:29 +00:00
diamond-unittest.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
effect-control-linearizer-unittest.cc [TurboProp] Fully remove successors from schedule on unreachable. 2020-05-06 10:55:30 +00:00
graph-reducer-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
graph-reducer-unittest.h [turbofan] Add AdvancedReducer::ReplaceWithValue() method and convert JSInlining to an AdvancedReducer. 2015-05-12 12:41:36 +00:00
graph-trimmer-unittest.cc [turbofan] Proper dead code elimination as regular reducer. 2015-06-19 12:07:26 +00:00
graph-unittest.cc [turbofan] Normalize types for Oddball constants 2020-03-12 14:28:52 +00:00
graph-unittest.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
int64-lowering-unittest.cc Add bit left-rotation machine operator 2020-05-01 18:09:16 +00:00
js-call-reducer-unittest.cc [gasm] Implement parts of js call reducer using the graph assembler 2019-11-21 13:00:44 +00:00
js-create-lowering-unittest.cc [objects] rename kSize to kHeaderSize for JSObject subclasses 2019-11-18 15:17:52 +00:00
js-intrinsic-lowering-unittest.cc [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
js-native-context-specialization-unittest.cc Move number related files to src/numbers 2019-05-15 19:34:44 +00:00
js-operator-unittest.cc [tests] Fix subobject-linkage error when building with GCC 2019-10-07 11:11:39 +00:00
js-typed-lowering-unittest.cc [turbofan] Avoid widening type when reducing JSStrictEqual 2020-03-18 10:08:58 +00:00
linkage-tail-call-unittest.cc [turbofan][cleanup] Remove Node-use in linkage.cc 2019-08-21 14:49:06 +00:00
load-elimination-unittest.cc Retire PretenureFlag and use AllocationType everywhere. 2019-03-12 08:10:44 +00:00
loop-peeling-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
machine-operator-reducer-unittest.cc [torque] Generate better code when using & operator on bitfields 2020-05-22 21:59:06 +00:00
machine-operator-unittest.cc Reland "[compiler] Optionally apply an offset to stack checks" 2019-10-30 10:23:05 +00:00
node-cache-unittest.cc [turbofan] use ZoneUnorderedMap for NodeCache 2020-03-05 13:00:34 +00:00
node-matchers-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
node-properties-unittest.cc [jumbo] add unittests jumbo support 2017-09-28 22:19:40 +00:00
node-test-utils.cc Reland "Reland "[turbofan][csa] optimize Smi untagging better"" 2020-04-29 07:30:11 +00:00
node-test-utils.h Reland "Reland "[turbofan][csa] optimize Smi untagging better"" 2020-04-29 07:30:11 +00:00
node-unittest.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
opcodes-unittest.cc [ubsan][compiler] Avoid out-of-range casts to IrOpcode::Value 2019-01-25 20:55:25 +00:00
persistent-unittest.cc [ubsan] Fix numerical overflows in the compiler 2019-01-10 11:17:37 +00:00
redundancy-elimination-unittest.cc [turbofan] Distinguish two further modes of CheckBounds 2020-04-27 19:45:35 +00:00
schedule-unittest.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
scheduler-rpo-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
scheduler-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
simplified-lowering-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
simplified-operator-reducer-unittest.cc [turbofan] Disable concurrent inlining for OSR 2020-01-09 18:24:12 +00:00
simplified-operator-unittest.cc [ptr-compr] Remove Compressed mentions from in the pipeline 2019-11-11 12:23:41 +00:00
state-values-utils-unittest.cc [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
typed-optimization-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
typer-unittest.cc Reland "[turbofan] Fix bug in Number.Min/Max typings" 2020-04-21 07:45:22 +00:00
value-numbering-reducer-unittest.cc [jumbo] fix another set of unittest compilation errors 2017-10-19 09:15:44 +00:00
zone-stats-unittest.cc [cleanup] Don't use virtual inheritance in gtest fixtures 2018-10-30 06:28:42 +00:00