Source/Packages

Accelerator.SM121.Lowering

packages/hardware/architectures/nvidia-sm121/src/Accelerator/SM121/Lowering.alpha

2,621 lines365 declarations134.1 KiBSHA-256 b7b3bbc05e9c

def · lines 1015–1145

sm121LowerShapeOf

Full file
The shape of each SM86 instruction.
1015def sm121LowerShapeOf =
1016  (lambda unrestricted body : (family SM86InstructionBody) .
1017    (eliminate
1018      SM86InstructionBody
1019      (lambda unrestricted current : (family SM86InstructionBody) . (family SM121LowerShape))
1020      body
1021      (branch SM86MoveConstant d bank offset control .
1022        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleConstantMove) (constructor SM121LowerClass SM121LowerVariable) sm121LowerNone
1023          (sm121LowerOne (sm121LowerRegister d))))
1024      (branch SM86SpecialToRegister d special control .
1025        (sm121LowerSame (constructor SM121LowerClass SM121LowerVariable) sm121LowerNone (sm121LowerOne (sm121LowerRegister d))))
1026      (branch SM86MoveImmediate d value control .
1027        (sm121LowerSame (constructor SM121LowerClass SM121LowerDualAlu) sm121LowerNone (sm121LowerOne (sm121LowerRegister d))))
1028      (branch SM86IntegerMultiplyAddConstant d a bank offset c control .
1029        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleConstantMultiplyAdd) (constructor SM121LowerClass SM121LowerFma)
1030          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister c))
1031          (sm121LowerOne (sm121LowerRegister d))))
1032      (branch SM86IntegerMultiplyAddImmediate d a value c control .
1033        (sm121LowerSame (constructor SM121LowerClass SM121LowerFma)
1034          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister c))
1035          (sm121LowerOne (sm121LowerRegister d))))
1036      (branch SM86IntegerMultiplyAddWideConstant d a b bank offset control .
1037        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleConstantMultiplyAddWide) (constructor SM121LowerClass SM121LowerWide)
1038          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1039          (sm121LowerSpan (sm121LowerRegister d) 2)))
1040      (branch SM86IntegerAddThreeImmediate d a value control .
1041        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1042      (branch SM86IntegerAddThreeRegister d a b control .
1043        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu)
1044          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1045          (sm121LowerOne (sm121LowerRegister d))))
1046      (branch SM86ShiftRightImmediate d a amount control .
1047        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1048      (branch SM86LogicThreeInputTruthTable d a b table control .
1049        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu)
1050          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1051          (sm121LowerOne (sm121LowerRegister d))))
1052      (branch SM86IntegerToFloat d a control .
1053        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1054      (branch SM86FloatAdd d a b control .
1055        (sm121LowerSame (constructor SM121LowerClass SM121LowerFma)
1056          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1057          (sm121LowerOne (sm121LowerRegister d))))
1058      (branch SM86FloatMultiply d a b control .
1059        (sm121LowerSame (constructor SM121LowerClass SM121LowerFma)
1060          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1061          (sm121LowerOne (sm121LowerRegister d))))
1062      (branch SM86FloatFusedMultiplyAdd d a b c control .
1063        (sm121LowerSame (constructor SM121LowerClass SM121LowerFma)
1064          (sm121LowerThree (sm121LowerRegister a) (sm121LowerRegister b) (sm121LowerRegister c))
1065          (sm121LowerOne (sm121LowerRegister d))))
1066      (branch SM86MultiFunctionUnitApproximation d a operation control .
1067        (sm121LowerSame (constructor SM121LowerClass SM121LowerVariable) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1068      (branch SM86FloatMinimumOrMaximum d a b mode control .
1069        (sm121LowerSame (constructor SM121LowerClass SM121LowerDualAlu)
1070          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1071          (sm121LowerOne (sm121LowerRegister d))))
1072      (branch SM86FloatNegate d a control .
1073        (sm121LowerSame (constructor SM121LowerClass SM121LowerFma) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1074      (branch SM86FloatPairToPackedHalfPair d a b control .
1075        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu)
1076          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1077          (sm121LowerOne (sm121LowerRegister d))))
1078      (branch SM86FloatPairToPackedBFloat16Pair d a b control .
1079        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu)
1080          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister b))
1081          (sm121LowerOne (sm121LowerRegister d))))
1082      (branch SM86HalfToFloat d a selector control .
1083        (sm121LowerSame (constructor SM121LowerClass SM121LowerHalfToFloat) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1084      (branch SM86BFloat16ToFloat d a selector control .
1085        (sm121LowerSame (constructor SM121LowerClass SM121LowerAlu) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1086      (branch SM86TensorCoreHalfMatrixMultiplyAccumulate16x8x16Float32 d a b c control .
1087        (sm121LowerSame (constructor SM121LowerClass SM121LowerTensor)
1088          (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister a) 4)
1089            (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister b) 2) (sm121LowerSpan (sm121LowerRegister c) 4)))
1090          (sm121LowerSpan (sm121LowerRegister d) 4)))
1091      (branch SM86TensorCoreBFloat16MatrixMultiplyAccumulate16x8x16Float32 d a b c control .
1092        (sm121LowerSame (constructor SM121LowerClass SM121LowerTensor)
1093          (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister a) 4)
1094            (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister b) 2) (sm121LowerSpan (sm121LowerRegister c) 4)))
1095          (sm121LowerSpan (sm121LowerRegister d) 4)))
1096      (branch SM86LoadGlobal d a offset control .
1097        (sm121LowerSame (constructor SM121LowerClass SM121LowerMemory) (sm121LowerSpan (sm121LowerRegister a) 2) (sm121LowerOne (sm121LowerRegister d))))
1098      (branch SM86LoadGlobalWide d a offset control .
1099        (sm121LowerSame (constructor SM121LowerClass SM121LowerMemory) (sm121LowerSpan (sm121LowerRegister a) 2) (sm121LowerSpan (sm121LowerRegister d) 4)))
1100      (branch SM86WarpShuffle d a lane segment mode control .
1101        (sm121LowerSame (constructor SM121LowerClass SM121LowerMemory) (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1102      (branch SM86LoadShared d a offset control .
1103        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleShared) (constructor SM121LowerClass SM121LowerMemory)
1104          (sm121LowerOne (sm121LowerRegister a)) (sm121LowerOne (sm121LowerRegister d))))
1105      (branch SM86LoadSharedMatrix d a offset count transpose control .
1106        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleSharedMatrix) (constructor SM121LowerClass SM121LowerMemory)
1107          (sm121LowerOne (sm121LowerRegister a))
1108          (sm121LowerSpan (sm121LowerRegister d) (sm121LowerMatrixCount count))))
1109      (branch SM86StoreShared a v offset control .
1110        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleShared) (constructor SM121LowerClass SM121LowerMemory)
1111          (sm121LowerTwo (sm121LowerRegister a) (sm121LowerRegister v)) sm121LowerNone))
1112      (branch SM86LoadGlobalToShared a offset source sourceOffset control .
1113        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleAsyncCopy) (constructor SM121LowerClass SM121LowerMemory)
1114          (sm121LowerAppend (sm121LowerOne (sm121LowerRegister a)) (sm121LowerSpan (sm121LowerRegister source) 2))
1115          sm121LowerNone))
1116      (branch SM86CommitAsyncGroup control .
1117        (sm121LowerSame (constructor SM121LowerClass SM121LowerNoResult) sm121LowerNone sm121LowerNone))
1118      (branch SM86WaitAsyncGroups count control .
1119        (sm121LowerSame (constructor SM121LowerClass SM121LowerNoResult) sm121LowerNone sm121LowerNone))
1120      (branch SM86BarrierSynchronize control .
1121        (sm121LowerSame (constructor SM121LowerClass SM121LowerNoResult) sm121LowerNone sm121LowerNone))
1122      (branch SM86StoreGlobal a v offset control .
1123        (sm121LowerSame (constructor SM121LowerClass SM121LowerMemory)
1124          (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister a) 2) (sm121LowerOne (sm121LowerRegister v)))
1125          sm121LowerNone))
1126      (branch SM86StoreGlobalWide a v offset control .
1127        (sm121LowerSame (constructor SM121LowerClass SM121LowerMemory)
1128          (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister a) 2) (sm121LowerSpan (sm121LowerRegister v) 4))
1129          sm121LowerNone))
1130      (branch SM86StoreGlobal64 a v offset control .
1131        (sm121LowerSame (constructor SM121LowerClass SM121LowerMemory)
1132          (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister a) 2) (sm121LowerSpan (sm121LowerRegister v) 2))
1133          sm121LowerNone))
1134      (branch SM86ReduceGlobalAddFloat32 a v offset control .
1135        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleReduction) (constructor SM121LowerClass SM121LowerMemory)
1136          (sm121LowerAppend (sm121LowerSpan (sm121LowerRegister a) 2) (sm121LowerOne (sm121LowerRegister v)))
1137          sm121LowerNone))
1138      (branch SM86PredicateGreaterThanImmediate p a value control .
1139        (constructor SM121LowerShape SM121LowerShapeValue (constructor SM121LowerRule SM121LowerRuleSame) (constructor SM121LowerClass SM121LowerDualAlu)
1140          (sm121LowerOne (sm121LowerRegister a)) sm121LowerNone
1141          (sm121LowerCons (byte-to-nat (sm86PredicateNumber p)) sm121LowerNone)))
1142      (branch SM86Branch offset descriptor control .
1143        (sm121LowerShape (constructor SM121LowerRule SM121LowerRuleBranch) (constructor SM121LowerClass SM121LowerNoResult) sm121LowerNone sm121LowerNone))
1144      (branch SM86Exit control .
1145        (sm121LowerSame (constructor SM121LowerClass SM121LowerNoResult) sm121LowerNone sm121LowerNone))))

The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.