Name Date Size #Lines LOC

..--

DartARM32/H25-Apr-2025-4,7813,607

IceASanInstrumentation.cppH A D25-Apr-202519 KiB495412

IceASanInstrumentation.hH A D25-Apr-20252.7 KiB7245

IceAssembler.cppH A D25-Apr-20255.7 KiB175109

IceAssembler.hH A D25-Apr-202512.5 KiB372198

IceAssemblerARM32.cppH A D25-Apr-2025159.6 KiB4,1002,667

IceAssemblerARM32.hH A D25-Apr-202534.4 KiB906516

IceAssemblerMIPS32.cppH A D25-Apr-202540.6 KiB1,2791,077

IceAssemblerMIPS32.hH A D25-Apr-202512.4 KiB398239

IceAssemblerX8632.cppH A D25-Apr-202592.7 KiB3,2282,810

IceAssemblerX8632.hH A D25-Apr-202535.2 KiB972718

IceAssemblerX8664.cppH A D25-Apr-202599.8 KiB3,3942,982

IceAssemblerX8664.hH A D25-Apr-202539.1 KiB1,049773

IceBitVector.hH A D25-Apr-202523 KiB831599

IceBrowserCompileServer.cppH A D25-Apr-202511.7 KiB340224

IceBrowserCompileServer.hH A D25-Apr-20253.5 KiB11258

IceBuildDefs.hH A D25-Apr-20253.7 KiB12735

IceCfg.cppH A D25-Apr-202563.6 KiB1,7941,284

IceCfg.hH A D25-Apr-202512.4 KiB359208

IceCfgNode.cppH A D25-Apr-202547.6 KiB1,384970

IceCfgNode.hH A D25-Apr-20255.5 KiB160101

IceClFlags.cppH A D25-Apr-20257 KiB235139

IceClFlags.defH A D25-Apr-202525.1 KiB342333

IceClFlags.hH A D25-Apr-20257.5 KiB204129

IceCompileServer.cppH A D25-Apr-20258.9 KiB275213

IceCompileServer.hH A D25-Apr-20252.4 KiB9143

IceCompiler.cppH A D25-Apr-20256.2 KiB187139

IceCompiler.hH A D25-Apr-20251.2 KiB4518

IceConditionCodesARM32.hH A D25-Apr-20251.2 KiB4520

IceConditionCodesMIPS32.hH A D25-Apr-20251.2 KiB4520

IceConditionCodesX86.hH A D25-Apr-20251.3 KiB4822

IceConverter.cppH A D25-Apr-202533.4 KiB930781

IceConverter.hH A D25-Apr-20252.4 KiB7935

IceDefs.hH A D25-Apr-202514.1 KiB447293

IceELFObjectWriter.cppH A D25-Apr-202526.7 KiB686563

IceELFObjectWriter.hH A D25-Apr-20257.7 KiB18377

IceELFSection.cppH A D25-Apr-20258 KiB246183

IceELFSection.hH A D25-Apr-202513.7 KiB393240

IceELFStreamer.hH A D25-Apr-20252.7 KiB10967

IceFixups.cppH A D25-Apr-20252.6 KiB9360

IceFixups.hH A D25-Apr-20253.7 KiB11867

IceGlobalContext.cppH A D25-Apr-202536.6 KiB1,068837

IceGlobalContext.hH A D25-Apr-202521.4 KiB631416

IceGlobalInits.cppH A D25-Apr-20255.5 KiB214174

IceGlobalInits.hH A D25-Apr-202516.8 KiB469335

IceInst.cppH A D25-Apr-202530.9 KiB1,058864

IceInst.defH A D25-Apr-20256.4 KiB10597

IceInst.hH A D25-Apr-202543 KiB1,184836

IceInstARM32.cppH A D25-Apr-2025103.5 KiB3,4653,039

IceInstARM32.defH A D25-Apr-20257.4 KiB127116

IceInstARM32.hH A D25-Apr-202565 KiB1,7961,418

IceInstMIPS32.cppH A D25-Apr-202535.3 KiB1,151962

IceInstMIPS32.defH A D25-Apr-202520.9 KiB295284

IceInstMIPS32.hH A D25-Apr-202554.9 KiB1,5621,327

IceInstVarIter.hH A D25-Apr-20257.8 KiB17429

IceInstX86.defH A D25-Apr-20254.2 KiB7064

IceInstX8632.cppH A D25-Apr-2025102 KiB3,0462,647

IceInstX8632.defH A D25-Apr-202511.5 KiB183173

IceInstX8632.hH A D25-Apr-2025127 KiB3,6122,981

IceInstX8664.cppH A D25-Apr-202599 KiB2,9462,559

IceInstX8664.defH A D25-Apr-202519.3 KiB285275

IceInstX8664.hH A D25-Apr-2025123.7 KiB3,5092,900

IceInstrumentation.cppH A D25-Apr-20253.9 KiB136103

IceInstrumentation.hH A D25-Apr-20253.7 KiB9555

IceIntrinsics.cppH A D25-Apr-20252.9 KiB10982

IceIntrinsics.hH A D25-Apr-20254.9 KiB175104

IceLiveness.cppH A D25-Apr-20255.3 KiB14391

IceLiveness.hH A D25-Apr-20255.8 KiB166103

IceLoopAnalyzer.cppH A D25-Apr-20259.2 KiB309211

IceLoopAnalyzer.hH A D25-Apr-2025955 3414

IceMangling.cppH A D25-Apr-20257.2 KiB194117

IceMangling.hH A D25-Apr-2025729 277

IceMemory.cppH A D25-Apr-20251.7 KiB5833

IceMemory.hH A D25-Apr-20255.3 KiB185123

IceOperand.cppH A D25-Apr-202520.4 KiB673533

IceOperand.hH A D25-Apr-202541.1 KiB1,167822

IcePhiLoweringImpl.hH A D25-Apr-20252.8 KiB8055

IceRangeSpec.cppH A D25-Apr-20255.5 KiB15991

IceRangeSpec.hH A D25-Apr-20252.8 KiB8039

IceRegAlloc.cppH A D25-Apr-202536.8 KiB1,006727

IceRegAlloc.hH A D25-Apr-20255.2 KiB14082

IceRegList.hH A D25-Apr-20251.8 KiB3918

IceRegistersARM32.defH A D25-Apr-202510.3 KiB125117

IceRegistersARM32.hH A D25-Apr-20256.3 KiB227171

IceRegistersMIPS32.hH A D25-Apr-20254.8 KiB14198

IceRegistersX8632.hH A D25-Apr-202516.3 KiB416339

IceRegistersX8664.hH A D25-Apr-202519.1 KiB472372

IceRevision.cppH A D25-Apr-2025803 2810

IceRevision.hH A D25-Apr-20251.1 KiB336

IceStringPool.hH A D25-Apr-20255.6 KiB179125

IceSwitchLowering.cppH A D25-Apr-20253.8 KiB10655

IceSwitchLowering.hH A D25-Apr-20253.7 KiB12176

IceTLS.hH A D25-Apr-20254.6 KiB11942

IceTargetLowering.cppH A D25-Apr-202538 KiB1,086835

IceTargetLowering.defH A D25-Apr-20253.7 KiB6056

IceTargetLowering.hH A D25-Apr-202525.6 KiB611387

IceTargetLoweringARM32.cppH A D25-Apr-2025234.5 KiB6,9825,595

IceTargetLoweringARM32.defH A D25-Apr-20253.7 KiB7065

IceTargetLoweringARM32.hH A D25-Apr-202547.2 KiB1,266856

IceTargetLoweringMIPS32.cppH A D25-Apr-2025200.2 KiB6,0355,274

IceTargetLoweringMIPS32.defH A D25-Apr-2025763 2117

IceTargetLoweringMIPS32.hH A D25-Apr-202534.1 KiB1,035765

IceTargetLoweringX86.hH A D25-Apr-20253.8 KiB12485

IceTargetLoweringX8632.cppH A D25-Apr-2025280.2 KiB8,0046,259

IceTargetLoweringX8632.defH A D25-Apr-20252.6 KiB5449

IceTargetLoweringX8632.hH A D25-Apr-202541 KiB1,069820

IceTargetLoweringX8664.cppH A D25-Apr-2025253.2 KiB7,3125,693

IceTargetLoweringX8664.defH A D25-Apr-20252.6 KiB5449

IceTargetLoweringX8664.hH A D25-Apr-202540.3 KiB1,052809

IceTargetLoweringX86RegClass.hH A D25-Apr-20251.2 KiB3716

IceThreading.cppH A D25-Apr-20251.9 KiB5936

IceThreading.hH A D25-Apr-20258 KiB202101

IceTimerTree.cppH A D25-Apr-202510.4 KiB317235

IceTimerTree.defH A D25-Apr-20255.2 KiB7975

IceTimerTree.hH A D25-Apr-20253.4 KiB9959

IceTranslator.cppH A D25-Apr-20252.1 KiB7046

IceTranslator.hH A D25-Apr-20252.8 KiB9447

IceTypeConverter.cppH A D25-Apr-20252.2 KiB6139

IceTypeConverter.hH A D25-Apr-20251.9 KiB7235

IceTypes.cppH A D25-Apr-20258.8 KiB302237

IceTypes.defH A D25-Apr-20254.9 KiB8680

IceTypes.hH A D25-Apr-20255.9 KiB194118

IceUtils.hH A D25-Apr-20255.9 KiB176107

IceVariableSplitting.cppH A D25-Apr-202523.3 KiB609321

IceVariableSplitting.hH A D25-Apr-2025764 266

LinuxMallocProfiling.cppH A D25-Apr-20252.9 KiB11169

LinuxMallocProfiling.hH A D25-Apr-20251 KiB3917

MakefileH A D25-Apr-2025294 136

PNaClTranslator.cppH A D25-Apr-2025117 KiB3,3152,597

PNaClTranslator.hH A D25-Apr-20251.6 KiB5323

README.SIMD.rstH A D25-Apr-20252.6 KiB6551

SZTargets.defH A D25-Apr-20251 KiB4231

WasmTranslator.cppH A D25-Apr-202554.9 KiB1,6521,405

WasmTranslator.hH A D25-Apr-20252.1 KiB8045

main.cppH A D25-Apr-20251.8 KiB4818

README.SIMD.rst

1Missing support
2===============
3
4* The PNaCl LLVM backend expands shufflevector operations into sequences of
5  insertelement and extractelement operations. For instance:
6
7    define <4 x i32> @shuffle(<4 x i32> %arg1, <4 x i32> %arg2) {
8    entry:
9      %res = shufflevector <4 x i32> %arg1,
10                           <4 x i32> %arg2,
11                           <4 x i32> <i32 4, i32 5, i32 0, i32 1>
12      ret <4 x i32> %res
13    }
14
15  gets expanded into:
16
17    define <4 x i32> @shuffle(<4 x i32> %arg1, <4 x i32> %arg2) {
18    entry:
19      %0 = extractelement <4 x i32> %arg2, i32 0
20      %1 = insertelement <4 x i32> undef, i32 %0, i32 0
21      %2 = extractelement <4 x i32> %arg2, i32 1
22      %3 = insertelement <4 x i32> %1, i32 %2, i32 1
23      %4 = extractelement <4 x i32> %arg1, i32 0
24      %5 = insertelement <4 x i32> %3, i32 %4, i32 2
25      %6 = extractelement <4 x i32> %arg1, i32 1
26      %7 = insertelement <4 x i32> %5, i32 %6, i32 3
27      ret <4 x i32> %7
28    }
29
30  Subzero should recognize these sequences and recombine them into
31  shuffle operations where appropriate.
32
33* Add support for vector constants in the backend. The current code
34  materializes the vector constants it needs (eg. for performing icmp on
35  unsigned operands) using register operations, but this should be changed to
36  loading them from a constant pool if the register initialization is too
37  complicated (such as in TargetX8632::makeVectorOfHighOrderBits()).
38
39* [x86 specific] llvm-mc does not allow lea to take a mem128 memory operand
40  when assembling x86-32 code. The current InstX8632Lea::emit() code uses
41  Variable::asType() to convert any mem128 Variables into a compatible memory
42  operand type. However, the emit code does not do any conversions of
43  OperandX8632Mem, so if an OperandX8632Mem is passed to lea as mem128 the
44  resulting code will not assemble.  One way to fix this is by implementing
45  OperandX8632Mem::asType().
46
47* [x86 specific] Lower shl with <4 x i32> using some clever float conversion:
48http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20100726/105087.html
49
50* [x86 specific] Add support for using aligned mov operations (movaps). This
51  will require passing alignment information to loads and stores.
52
53x86 SIMD Diversification
54========================
55
56* Vector "bitwise" operations have several variant instructions: the AND
57  operation can be implemented with pand, andpd, or andps. This pattern also
58  holds for ANDN, OR, and XOR.
59
60* Vector "mov" instructions can be diversified (eg. movdqu instead of movups)
61  at the cost of a possible performance penalty.
62
63* Scalar FP arithmetic can be diversified by performing the operations with the
64  vector version of the instructions.
65