Changeset 575 for trunk/lib


Ignore:
Timestamp:
Aug 11, 2010, 5:55:10 PM (9 years ago)
Author:
cameron
Message:

Logic Ops have fieldwidth 1

Location:
trunk/lib/libgen
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/libgen/CppTranslator.py

    r574 r575  
    185185                elif "simd_" in nameStr:
    186186                        #print self.arch
    187                         return (nameStr.replace("simd_", "")) + "_" + str(configure.RegisterSize[self.arch])
     187                        return (nameStr.replace("simd_", "")) + "_" + str(configure.LogicOpsFW)
    188188                elif nameStr in self.builtIns['others']:
    189189                        return nameStr
  • trunk/lib/libgen/OperationSet.py

    r574 r575  
    2121neededOps = ['and', 'andc', 'or', 'xor', 'not', 'nor', 'if', 'add', 'sub', 'umult', 'mult', 'eq', 'gt', 'ugt', 'lt', 'ult', 'max', 'umax', 'min', 'umin', 'srli', 'slli', 'srai']
    2222
    23 neededFws = [2, 4, 8, 16, 32, 64, 128]
     23neededFws = [1, 2, 4, 8, 16, 32, 64, 128]
    2424
    2525def GetOperationSet(arch, lang):
     
    5555                for op in neededOps:
    5656                        if op in logicOps:
    57                                 self.optOpNum[op+"_"+str(configure.RegisterSize[self.arch])] = self.opMaxNum
     57                                self.optOpNum[op+"_"+str(configure.LogicOpsFW)] = self.opMaxNum
    5858                        else:
    5959                                for fw in neededFws:
     
    8484                                for fw in neededFws:
    8585                                        op_fw = str(op) + "_" + str(fw)
    86                                         if op in ops and (fw in fws or (op in logicOps and fw == configure.RegisterSize[self.arch])):                                           
     86                                        if op in ops and (fw in fws or (op in logicOps and fw == configure.LogicOpsFW)):                                               
    8787                                                curOpUnit = self.Translate(astPattern, op, fw)
    8888                                                if op_fw in self.opUnits:
  • trunk/lib/libgen/SSEInstruction.py

    r574 r575  
    88SSE2_BuiltIns = \
    99{\
    10         'and':('_mm_and_si$fw$(arg1, arg2)', [128]),\
    11         'andc':('_mm_andnot_si$fw$(arg2, arg1)', [128]),\
    12         'or':('_mm_or_si$fw$(arg1, arg2)', [128]),\
    13         'xor':('_mm_xor_si$fw$(arg1, arg2)', [128]),\
     10        'and':('_mm_and_si128(arg1, arg2)', [1]),\
     11        'andc':('_mm_andnot_si128(arg2, arg1)', [1]),\
     12        'or':('_mm_or_si128(arg1, arg2)', [1]),\
     13        'xor':('_mm_xor_si128(arg1, arg2)', [1]),\
    1414        'not':('', []),\
    1515        'nor':('', []),\
     
    3737SSE4_BuiltIns = \
    3838{\
    39         'and':('_mm_and_si$fw$(arg1, arg2)', [128]),\
    40         'andc':('_mm_andnot_si$fw$(arg2, arg1)', [128]),\
    41         'or':('_mm_or_si$fw$(arg1, arg2)', [128]),\
    42         'xor':('_mm_xor_si$fw$(arg1, arg2)', [128]),\
     39        'and':('_mm_and_si128(arg1, arg2)', [1]),\
     40        'andc':('_mm_andnot_si128(arg2, arg1)', [1]),\
     41        'or':('_mm_or_si128(arg1, arg2)', [1]),\
     42        'xor':('_mm_xor_si128(arg1, arg2)', [1]),\
    4343        'not':('', []),\
    4444        'nor':('', []),\
  • trunk/lib/libgen/Strategies.py

    r574 r575  
    8282
    8383        'not_blend':\
    84         ('''return simd_xor(arg1, simd_constant(128, -1))\n''', ['not'], [128]),\
     84        ('''return simd_xor(arg1, simd_constant(128, -1))\n''', ['not'], [1]),\
    8585       
    8686        'nor_blend':\
    87         ('''return simd_not(simd_or(arg1, arg2))\n''', ['nor'], [128]),\
     87        ('''return simd_not(simd_or(arg1, arg2))\n''', ['nor'], [1]),\
    8888       
    8989        'if_blend':\
    90         ('''return simd_or(simd_and(arg2, arg1), simd_andc(arg3, arg1))\n''', ['if'], [128]),\
     90        ('''return simd_or(simd_and(arg2, arg1), simd_andc(arg3, arg1))\n''', ['if'], [1]),\
    9191}
    9292
Note: See TracChangeset for help on using the changeset viewer.