shader: Implement LEA
This commit is contained in:
		| @@ -132,7 +132,7 @@ void EmitBitCastU64F64(EmitContext& ctx); | ||||
| void EmitBitCastF16U16(EmitContext& ctx); | ||||
| Id EmitBitCastF32U32(EmitContext& ctx, Id value); | ||||
| void EmitBitCastF64U64(EmitContext& ctx); | ||||
| void EmitPackUint2x32(EmitContext& ctx); | ||||
| Id EmitPackUint2x32(EmitContext& ctx, Id value); | ||||
| Id EmitUnpackUint2x32(EmitContext& ctx, Id value); | ||||
| Id EmitPackFloat2x16(EmitContext& ctx, Id value); | ||||
| Id EmitUnpackFloat2x16(EmitContext& ctx, Id value); | ||||
| @@ -229,9 +229,11 @@ Id EmitISub32(EmitContext& ctx, Id a, Id b); | ||||
| void EmitISub64(EmitContext& ctx); | ||||
| Id EmitIMul32(EmitContext& ctx, Id a, Id b); | ||||
| Id EmitINeg32(EmitContext& ctx, Id value); | ||||
| Id EmitINeg64(EmitContext& ctx, Id value); | ||||
| Id EmitIAbs32(EmitContext& ctx, Id value); | ||||
| Id EmitShiftLeftLogical32(EmitContext& ctx, Id base, Id shift); | ||||
| Id EmitShiftRightLogical32(EmitContext& ctx, Id a, Id b); | ||||
| Id EmitShiftRightLogical64(EmitContext& ctx, Id a, Id b); | ||||
| Id EmitShiftRightArithmetic32(EmitContext& ctx, Id a, Id b); | ||||
| Id EmitBitwiseAnd32(EmitContext& ctx, Id a, Id b); | ||||
| Id EmitBitwiseOr32(EmitContext& ctx, Id a, Id b); | ||||
|   | ||||
| @@ -30,8 +30,8 @@ void EmitBitCastF64U64(EmitContext&) { | ||||
|     throw NotImplementedException("SPIR-V Instruction"); | ||||
| } | ||||
|  | ||||
| void EmitPackUint2x32(EmitContext&) { | ||||
|     throw NotImplementedException("SPIR-V Instruction"); | ||||
| Id EmitPackUint2x32(EmitContext& ctx, Id value) { | ||||
|     return ctx.OpBitcast(ctx.U64, value); | ||||
| } | ||||
|  | ||||
| Id EmitUnpackUint2x32(EmitContext& ctx, Id value) { | ||||
|   | ||||
| @@ -62,6 +62,10 @@ Id EmitINeg32(EmitContext& ctx, Id value) { | ||||
|     return ctx.OpSNegate(ctx.U32[1], value); | ||||
| } | ||||
|  | ||||
| Id EmitINeg64(EmitContext& ctx, Id value) { | ||||
|     return ctx.OpSNegate(ctx.U64, value); | ||||
| } | ||||
|  | ||||
| Id EmitIAbs32(EmitContext& ctx, Id value) { | ||||
|     return ctx.OpSAbs(ctx.U32[1], value); | ||||
| } | ||||
| @@ -74,6 +78,10 @@ Id EmitShiftRightLogical32(EmitContext& ctx, Id a, Id b) { | ||||
|     return ctx.OpShiftRightLogical(ctx.U32[1], a, b); | ||||
| } | ||||
|  | ||||
| Id EmitShiftRightLogical64(EmitContext& ctx, Id a, Id b) { | ||||
|     return ctx.OpShiftRightLogical(ctx.U64, a, b); | ||||
| } | ||||
|  | ||||
| Id EmitShiftRightArithmetic32(EmitContext& ctx, Id a, Id b) { | ||||
|     return ctx.OpShiftRightArithmetic(ctx.U32[1], a, b); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user