| Summary: | [WHLSL] Make the C++ compiler pass all tests in JS reference compiler | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Myles C. Maxfield <mmaxfield> |
| Component: | WebGPU | Assignee: | Saam Barati <saam> |
| Status: | RESOLVED WONTFIX | ||
| Severity: | Normal | CC: | jonlee, justin_fan, saam, webkit-bug-importer |
| Priority: | P1 | Keywords: | InRadar |
| Version: | Other | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Bug Depends on: | 198414, 199028, 199088, 199093, 199595, 199602, 199603, 199630, 199634, 199766, 199978 | ||
| Bug Blocks: | |||
|
Description
Myles C. Maxfield
2019-03-13 10:13:56 PDT
All tests: add1 andReturnedArrayRef anderDoesntReturnPointer anderDoesntTakeReference anderWithArrayRef anderWithBadIndex anderWithNothingWrong anderWithWrongNumberOfArguments arrayIndex arrayLoad arrayRefToArrayRef assignLength assignLengthHelper assignUintToInt atomics atomicsNull badAdd badIntLiteralForFloat badIntLiteralForInt badIntLiteralForUint bitAndWrongArgumentLength bitNotWrongArgumentLength bitOrWrongArgumentLength bitXorWrongArgumentLength boolBitAnd boolBitNot boolBitOr boolBitXor booleanMath booleanShortcircuiting break buildArrayThenSumIt buildArrayThenSumItUsingArrayReference builtinMatrices builtinVectorGetters builtinVectorIndexSetters builtinVectorSetters builtinVectors callArgumentsAreCopiedImmediatelyAfterEvaluation cannotCallAnotherEntryPoint casts commentParsing constantAddressSpace continue convertLocalVariableToArrayRef convertPtrToArrayRef copyArray copyConstructors decWrongArgumentLength decWrongTypes defaultEnumConstructor defaultInitializedNull defaultInitializedNullArrayRef defaultInitializedNullArrayRefIntLiteral dereferenceDefaultNull dereferenceDefaultNullArrayRef dereferenceStore deviceArrayRefLoad deviceArrayRefStore deviceArrayRefStoreIntLiteral devicePointerLoad devicePointerStore divideEquals divideEqualsResult divideWrongArgumentLength doWhile dotOperatorSetterWrongArgumentLength dotOperatorWrongArgumentLength doubleNot duplicateFunctions duplicateTypes emptyStruct enumArrayRefBase enumDuplicates enumFloatBase enumNoMembers enumPtrBase enumStructBase enumSwitchBreakExhaustive enumSwitchBreakNotQuiteExhaustive enumSwitchBreakNotQuiteExhaustiveWithDefault enumWithExplicitIntBase enumWithManualValues enumWithSomeManualValues enumWithUintBase enumWithoutZero equality equalityTypeFailure equalsWrongArgumentLength equalsWrongReturnType evaluationOrderForArguments exhaustiveUcharSwitch floatMath forLoop generalNegation getterType greaterEqualWrongArgumentLength greaterEqualWrongReturnType greaterThanWrongReturnType greaterWrongArgumentLength halfSimpleMath identityBool ifElseIfElseStatement ifElseIfStatement ifElseStatement ifStatement incWrongArgumentLength incWrongTypes incrementAndDecrement indexAnderDoesntReturnPointer indexAnderDoesntTakeReference indexAnderWithArrayRef indexAnderWithNothingWrong indexAnderWithWrongNumberOfArguments indexOperatorSetterWrongArgumentLength indexOperatorWrongArgumentLength indexSetterWithMismatchedType indexSetterWithNoGetterOverload indexSetterWithNoGetterOverloadFixed inliningDoesNotAffectNestedCalls inliningDoesntProduceAliasingIssues intBitAnd intBitNot intBitOr intBitXor intLShift intOverloadResolution intOverloadResolutionReverseOrder intRShift intSimpleMath lShiftWrongArgumentLength lValues lessEqualWrongArgumentLength lessEqualWrongReturnType lessThanWrongArgumentLength lessThanWrongReturnType lexerKeyword linkedList literalBool loadNull loadNullArrayRef logicalNegation loneIndexSetter loneIndexSetterPointer loneSetter loneSetterPointer lotsOfLocalVariables makeArrayRefFromArrayRef makeArrayRefFromLocal makeArrayRefFromPointer matrixMultiplication minusEquals minusEqualsResult minusWrongArgumentLength moduloWrongArgumentLength mutuallyRecursiveStruct mutuallyRecursiveStructWithPointers mutuallyRecursiveStructWithPointersBroken nameResolutionFailure nestedSubscript nestedSubscriptLValueEmulationSimple nestedSubscriptWithArraysInStructs nonArrayRefArrayLengthFail nonArrayRefArrayLengthSucceed notEquality notEqualsOverload notLoneIndexSetter notQuiteExhaustiveUcharSwitch notQuiteExhaustiveUcharSwitchWithDefault numThreads operatorBool operatorWithoutUninferrableTypeVariable overrideSubscriptStruct overrideSubscriptStructAndDoStores overrideSubscriptStructAndUsePointers overrideSubscriptStructAndUsePointersIncorrectly passNullToPtrMonomorphic passNullToPtrMonomorphicArrayRef passingArrayToFunction plusEquals plusEqualsResult plusWrongArgumentLength pointerGetter pointerIndexGetter pointerToMember pointerToPointer postfixMinusMinus postfixMinusMinusResult postfixPlusPlus postfixPlusPlusResult prefixMinusMinus prefixMinusMinusResult prefixPlusPlus prefixPlusPlusResult rShiftWrongArgumentLength recursiveSetters referenceEquality referenceTakenToLocalVariableInEntryPointShouldntMoveAnything returnAnArrayFromAFunction returnIf returnIntLiteralFloat returnIntLiteralUint returnNull returnNullArrayRef returnReferenceToLocalVariable returnReferenceToLocalVariableWithNesting returnReferenceToParameter returnReferenceToParameterWithDifferentFunctions returnReferenceToSameParameter selfCasts setterType setterWithMatchedType setterWithMismatchedType setterWithNoGetterOverload setterWithNoGetterOverloadFixed settingAnArrayInsideAStruct shaderStages shaderTypes simpleAssignment simpleDefault simpleDereference simpleEnum simpleGetter simpleLength simpleMakePtr simpleNoReturn simpleRecursion simpleRecursiveStruct simpleSetter simpleStruct simpleSwitch simpleUnreachableCode simpleVariable simpleWhile standardLibraryDevicePointers storeNull storeNullArrayRef structFieldEnumElemClash switchBreak switchFallThrough ternaryExpression textureDimensions textureDimensionsNull textureGather textureLoad textureSample textureStore threadArrayRefLoad threadArrayRefLoadIntLiteral threadArrayRefStore threadPointerLoad threadPointerStore timesEquals timesEqualsResult timesWrongArgumentLength trap trapBecauseOfIndexAcesss trapTransitively twoIntLiterals typeMismatchAssignment typeMismatchReturn typeMismatchReturnParam typeMismatchVariableDecl typedefArray ucharBitAnd ucharBitNot ucharBitOr ucharBitXor ucharLShift ucharRShift ucharSimpleMath uintBitAnd uintBitNot uintBitOr uintBitXor uintLShift uintRShift uintSimpleMath variableShadowing vectorTypeSyntax Status after https://bugs.webkit.org/show_bug.cgi?id=199604 lands done: boolBitAnd boolBitNot boolBitOr boolBitXor simpleAssignment simpleDefault simpleVariable simpleDereference simpleStruct simpleMakePtr simpleLength simpleUnreachableCode simpleNoReturn simpleRecursiveStruct simpleRecursion twoIntLiterals typeMismatchAssignment typeMismatchReturn typeMismatchReturnParam typeMismatchVariableDecl uintBitAnd uintBitNot uintBitOr uintBitXor uintLShift uintRShift uintSimpleMath not done: add1 andReturnedArrayRef anderDoesntReturnPointer anderDoesntTakeReference anderWithArrayRef anderWithBadIndex anderWithNothingWrong anderWithWrongNumberOfArguments arrayIndex arrayLoad arrayRefToArrayRef assignLength assignLengthHelper assignUintToInt atomics atomicsNull badAdd badIntLiteralForFloat badIntLiteralForInt badIntLiteralForUint bitAndWrongArgumentLength bitNotWrongArgumentLength bitOrWrongArgumentLength bitXorWrongArgumentLength booleanMath booleanShortcircuiting break buildArrayThenSumIt buildArrayThenSumItUsingArrayReference builtinMatrices builtinVectorGetters builtinVectorIndexSetters builtinVectorSetters builtinVectors callArgumentsAreCopiedImmediatelyAfterEvaluation cannotCallAnotherEntryPoint casts commentParsing constantAddressSpace continue convertLocalVariableToArrayRef convertPtrToArrayRef copyArray copyConstructors decWrongArgumentLength decWrongTypes defaultEnumConstructor defaultInitializedNull defaultInitializedNullArrayRef defaultInitializedNullArrayRefIntLiteral dereferenceDefaultNull dereferenceDefaultNullArrayRef dereferenceStore deviceArrayRefLoad deviceArrayRefStore deviceArrayRefStoreIntLiteral devicePointerLoad devicePointerStore divideEquals divideEqualsResult divideWrongArgumentLength doWhile dotOperatorSetterWrongArgumentLength dotOperatorWrongArgumentLength doubleNot duplicateFunctions duplicateTypes emptyStruct enumArrayRefBase enumDuplicates enumFloatBase enumNoMembers enumPtrBase enumStructBase enumSwitchBreakExhaustive enumSwitchBreakNotQuiteExhaustive enumSwitchBreakNotQuiteExhaustiveWithDefault enumWithExplicitIntBase enumWithManualValues enumWithSomeManualValues enumWithUintBase enumWithoutZero equality equalityTypeFailure equalsWrongArgumentLength equalsWrongReturnType evaluationOrderForArguments exhaustiveUcharSwitch floatMath forLoop generalNegation getterType greaterEqualWrongArgumentLength greaterEqualWrongReturnType greaterThanWrongReturnType greaterWrongArgumentLength halfSimpleMath identityBool ifElseIfElseStatement ifElseIfStatement ifElseStatement ifStatement incWrongArgumentLength incWrongTypes incrementAndDecrement indexAnderDoesntReturnPointer indexAnderDoesntTakeReference indexAnderWithArrayRef indexAnderWithNothingWrong indexAnderWithWrongNumberOfArguments indexOperatorSetterWrongArgumentLength indexOperatorWrongArgumentLength indexSetterWithMismatchedType indexSetterWithNoGetterOverload indexSetterWithNoGetterOverloadFixed inliningDoesNotAffectNestedCalls inliningDoesntProduceAliasingIssues intBitAnd intBitNot intBitOr intBitXor intLShift intOverloadResolution intOverloadResolutionReverseOrder intRShift intSimpleMath lShiftWrongArgumentLength lValues lessEqualWrongArgumentLength lessEqualWrongReturnType lessThanWrongArgumentLength lessThanWrongReturnType lexerKeyword linkedList literalBool loadNull loadNullArrayRef logicalNegation loneIndexSetter loneIndexSetterPointer loneSetter loneSetterPointer lotsOfLocalVariables makeArrayRefFromArrayRef makeArrayRefFromLocal makeArrayRefFromPointer matrixMultiplication minusEquals minusEqualsResult minusWrongArgumentLength moduloWrongArgumentLength mutuallyRecursiveStruct mutuallyRecursiveStructWithPointers mutuallyRecursiveStructWithPointersBroken nameResolutionFailure nestedSubscript nestedSubscriptLValueEmulationSimple nestedSubscriptWithArraysInStructs nonArrayRefArrayLengthFail nonArrayRefArrayLengthSucceed notEquality notEqualsOverload notLoneIndexSetter notQuiteExhaustiveUcharSwitch notQuiteExhaustiveUcharSwitchWithDefault numThreads operatorBool operatorWithoutUninferrableTypeVariable overrideSubscriptStruct overrideSubscriptStructAndDoStores overrideSubscriptStructAndUsePointers overrideSubscriptStructAndUsePointersIncorrectly passNullToPtrMonomorphic passNullToPtrMonomorphicArrayRef passingArrayToFunction plusEquals plusEqualsResult plusWrongArgumentLength pointerGetter pointerIndexGetter pointerToMember pointerToPointer postfixMinusMinus postfixMinusMinusResult postfixPlusPlus postfixPlusPlusResult prefixMinusMinus prefixMinusMinusResult prefixPlusPlus prefixPlusPlusResult rShiftWrongArgumentLength recursiveSetters referenceEquality referenceTakenToLocalVariableInEntryPointShouldntMoveAnything returnAnArrayFromAFunction returnIf returnIntLiteralFloat returnIntLiteralUint returnNull returnNullArrayRef returnReferenceToLocalVariable returnReferenceToLocalVariableWithNesting returnReferenceToParameter returnReferenceToParameterWithDifferentFunctions returnReferenceToSameParameter selfCasts setterType setterWithMatchedType setterWithMismatchedType setterWithNoGetterOverload setterWithNoGetterOverloadFixed settingAnArrayInsideAStruct shaderStages shaderTypes simpleEnum simpleGetter simpleSetter simpleSwitch simpleWhile standardLibraryDevicePointers storeNull storeNullArrayRef structFieldEnumElemClash switchBreak switchFallThrough ternaryExpression textureDimensions textureDimensionsNull textureGather textureLoad textureSample textureStore threadArrayRefLoad threadArrayRefLoadIntLiteral threadArrayRefStore threadPointerLoad threadPointerStore timesEquals timesEqualsResult timesWrongArgumentLength trap trapBecauseOfIndexAcesss trapTransitively typedefArray // crashes ucharBitAnd ucharBitNot ucharBitOr ucharBitXor ucharLShift ucharRShift ucharSimpleMath variableShadowing vectorTypeSyntax New status: done: arrayRefToArrayRef assignLength assignLengthHelper buildArrayThenSumIt buildArrayThenSumItUsingArrayReference boolBitAnd boolBitNot boolBitOr boolBitXor builtinMatrices defaultEnumConstructor equality equalityTypeFailure notEquality equalsWrongArgumentLength equalsWrongReturnType lessThanWrongArgumentLength lessThanWrongReturnType lessEqualWrongArgumentLength lessEqualWrongReturnType enumDuplicates enumArrayRefBase enumFloatBase enumPtrBase enumNoMembers enumStructBase matrixMultiplication returnAnArrayFromAFunction returnIf returnReferenceToSameParameter returnReferenceToParameterWithDifferentFunctions returnReferenceToParameter returnReferenceToLocalVariableWithNesting returnReferenceToLocalVariable returnNullArrayRef returnNull referenceTakenToLocalVariableInEntryPointShouldntMoveAnything simpleAssignment simpleDefault simpleVariable simpleDereference simpleStruct simpleMakePtr simpleLength simpleUnreachableCode simpleNoReturn simpleRecursiveStruct simpleRecursion simpleGetter simpleSetter simpleWhile twoIntLiterals typeMismatchAssignment typeMismatchReturn typeMismatchReturnParam typeMismatchVariableDecl uintBitAnd uintBitNot uintBitOr uintBitXor uintLShift uintRShift uintSimpleMath skipping: ucharBitAnd ucharBitNot ucharBitOr ucharBitXor ucharLShift ucharRShift ucharSimpleMath not done: add1 andReturnedArrayRef anderDoesntReturnPointer anderDoesntTakeReference anderWithArrayRef // we fail anderWithBadIndex anderWithNothingWrong anderWithWrongNumberOfArguments arrayIndex // doesn't work with dynamic indices. Also, some of the indices may be backwards w.r.t selecting column/row. arrayLoad // Make test harness support arrays as input types. assignUintToInt atomics atomicsNull badAdd badIntLiteralForFloat badIntLiteralForInt badIntLiteralForUint bitAndWrongArgumentLength bitNotWrongArgumentLength bitOrWrongArgumentLength bitXorWrongArgumentLength booleanMath booleanShortcircuiting break builtinVectorGetters builtinVectorIndexSetters builtinVectorSetters builtinVectors callArgumentsAreCopiedImmediatelyAfterEvaluation cannotCallAnotherEntryPoint casts commentParsing constantAddressSpace continue convertLocalVariableToArrayRef convertPtrToArrayRef copyArray copyConstructors decWrongArgumentLength decWrongTypes defaultInitializedNull defaultInitializedNullArrayRef defaultInitializedNullArrayRefIntLiteral dereferenceDefaultNull dereferenceDefaultNullArrayRef dereferenceStore deviceArrayRefLoad deviceArrayRefStore deviceArrayRefStoreIntLiteral devicePointerLoad devicePointerStore divideEquals divideEqualsResult divideWrongArgumentLength doWhile dotOperatorSetterWrongArgumentLength dotOperatorWrongArgumentLength doubleNot duplicateFunctions duplicateTypes emptyStruct enumSwitchBreakExhaustive enumSwitchBreakNotQuiteExhaustive enumSwitchBreakNotQuiteExhaustiveWithDefault enumWithExplicitIntBase // Need enums working enumWithManualValues // need enums working enumWithSomeManualValues // need enum values enumWithUintBase // need enums working enumWithoutZero evaluationOrderForArguments exhaustiveUcharSwitch floatMath forLoop generalNegation getterType greaterEqualWrongArgumentLength greaterEqualWrongReturnType greaterThanWrongReturnType greaterWrongArgumentLength halfSimpleMath identityBool ifElseIfElseStatement ifElseIfStatement ifElseStatement ifStatement incWrongArgumentLength incWrongTypes incrementAndDecrement indexAnderDoesntReturnPointer indexAnderDoesntTakeReference indexAnderWithArrayRef indexAnderWithNothingWrong indexAnderWithWrongNumberOfArguments indexOperatorSetterWrongArgumentLength indexOperatorWrongArgumentLength indexSetterWithMismatchedType indexSetterWithNoGetterOverload indexSetterWithNoGetterOverloadFixed inliningDoesNotAffectNestedCalls inliningDoesntProduceAliasingIssues intBitAnd intBitNot intBitOr intBitXor intLShift intOverloadResolution intOverloadResolutionReverseOrder intRShift intSimpleMath lShiftWrongArgumentLength lValues lexerKeyword linkedList literalBool loadNull loadNullArrayRef logicalNegation loneIndexSetter loneIndexSetterPointer loneSetter loneSetterPointer lotsOfLocalVariables makeArrayRefFromArrayRef makeArrayRefFromLocal makeArrayRefFromPointer minusEquals minusEqualsResult minusWrongArgumentLength moduloWrongArgumentLength mutuallyRecursiveStruct mutuallyRecursiveStructWithPointers mutuallyRecursiveStructWithPointersBroken nameResolutionFailure nestedSubscript nestedSubscriptLValueEmulationSimple nestedSubscriptWithArraysInStructs nonArrayRefArrayLengthFail nonArrayRefArrayLengthSucceed notEqualsOverload notLoneIndexSetter notQuiteExhaustiveUcharSwitch notQuiteExhaustiveUcharSwitchWithDefault numThreads operatorBool operatorWithoutUninferrableTypeVariable overrideSubscriptStruct overrideSubscriptStructAndDoStores overrideSubscriptStructAndUsePointers overrideSubscriptStructAndUsePointersIncorrectly passNullToPtrMonomorphic passNullToPtrMonomorphicArrayRef passingArrayToFunction plusEquals plusEqualsResult plusWrongArgumentLength pointerGetter pointerIndexGetter pointerToMember pointerToPointer postfixMinusMinus postfixMinusMinusResult postfixPlusPlus postfixPlusPlusResult prefixMinusMinus prefixMinusMinusResult prefixPlusPlus prefixPlusPlusResult rShiftWrongArgumentLength recursiveSetters referenceEquality // Causes a metal compile error. returnIntLiteralFloat returnIntLiteralUint selfCasts setterType setterWithMatchedType setterWithMismatchedType setterWithNoGetterOverload setterWithNoGetterOverloadFixed settingAnArrayInsideAStruct shaderStages shaderTypes simpleEnum // fails in type name resolution simpleSwitch standardLibraryDevicePointers storeNull storeNullArrayRef structFieldEnumElemClash switchBreak switchFallThrough ternaryExpression textureDimensions textureDimensionsNull textureGather textureLoad textureSample textureStore threadArrayRefLoad threadArrayRefLoadIntLiteral threadArrayRefStore threadPointerLoad threadPointerStore timesEquals timesEqualsResult timesWrongArgumentLength trap trapBecauseOfIndexAcesss trapTransitively typedefArray // crashes variableShadowing vectorTypeSyntax Sorry, prior post was slightly wrong. Here is the updated status: done: arrayRefToArrayRef assignLength assignLengthHelper buildArrayThenSumIt buildArrayThenSumItUsingArrayReference boolBitAnd boolBitNot boolBitOr boolBitXor builtinMatrices defaultEnumConstructor equality equalityTypeFailure notEquality equalsWrongArgumentLength equalsWrongReturnType lessThanWrongArgumentLength lessThanWrongReturnType lessEqualWrongArgumentLength lessEqualWrongReturnType enumDuplicates enumArrayRefBase enumFloatBase enumPtrBase enumNoMembers enumStructBase matrixMultiplication returnAnArrayFromAFunction returnIf returnReferenceToSameParameter returnReferenceToParameterWithDifferentFunctions returnReferenceToParameter returnReferenceToLocalVariableWithNesting returnReferenceToLocalVariable returnNullArrayRef returnNull returnIntLiteralFloat returnIntLiteralUint referenceTakenToLocalVariableInEntryPointShouldntMoveAnything simpleAssignment simpleDefault simpleVariable simpleDereference simpleStruct simpleMakePtr simpleLength simpleUnreachableCode simpleNoReturn simpleRecursiveStruct simpleRecursion simpleGetter simpleSetter simpleWhile twoIntLiterals typeMismatchAssignment typeMismatchReturn typeMismatchReturnParam typeMismatchVariableDecl uintBitAnd uintBitNot uintBitOr uintBitXor uintLShift uintRShift uintSimpleMath skipping: ucharBitAnd ucharBitNot ucharBitOr ucharBitXor ucharLShift ucharRShift ucharSimpleMath not done: add1 andReturnedArrayRef anderDoesntReturnPointer anderDoesntTakeReference anderWithArrayRef // we fail anderWithBadIndex anderWithNothingWrong anderWithWrongNumberOfArguments arrayIndex // doesn't work with dynamic indices. Also, some of the indices may be backwards w.r.t selecting column/row. arrayLoad // Make test harness support arrays as input types. assignUintToInt atomics atomicsNull badAdd badIntLiteralForFloat badIntLiteralForInt badIntLiteralForUint bitAndWrongArgumentLength bitNotWrongArgumentLength bitOrWrongArgumentLength bitXorWrongArgumentLength booleanMath booleanShortcircuiting break builtinVectorGetters builtinVectorIndexSetters builtinVectorSetters builtinVectors callArgumentsAreCopiedImmediatelyAfterEvaluation cannotCallAnotherEntryPoint casts commentParsing constantAddressSpace continue convertLocalVariableToArrayRef convertPtrToArrayRef copyArray copyConstructors decWrongArgumentLength decWrongTypes defaultInitializedNull defaultInitializedNullArrayRef defaultInitializedNullArrayRefIntLiteral dereferenceDefaultNull dereferenceDefaultNullArrayRef dereferenceStore deviceArrayRefLoad deviceArrayRefStore deviceArrayRefStoreIntLiteral devicePointerLoad devicePointerStore divideEquals divideEqualsResult divideWrongArgumentLength doWhile dotOperatorSetterWrongArgumentLength dotOperatorWrongArgumentLength doubleNot duplicateFunctions duplicateTypes emptyStruct enumSwitchBreakExhaustive enumSwitchBreakNotQuiteExhaustive enumSwitchBreakNotQuiteExhaustiveWithDefault enumWithExplicitIntBase // Need enums working enumWithManualValues // need enums working enumWithSomeManualValues // need enum values enumWithUintBase // need enums working enumWithoutZero evaluationOrderForArguments exhaustiveUcharSwitch floatMath forLoop generalNegation getterType greaterEqualWrongArgumentLength greaterEqualWrongReturnType greaterThanWrongReturnType greaterWrongArgumentLength halfSimpleMath identityBool ifElseIfElseStatement ifElseIfStatement ifElseStatement ifStatement incWrongArgumentLength incWrongTypes incrementAndDecrement indexAnderDoesntReturnPointer indexAnderDoesntTakeReference indexAnderWithArrayRef indexAnderWithNothingWrong indexAnderWithWrongNumberOfArguments indexOperatorSetterWrongArgumentLength indexOperatorWrongArgumentLength indexSetterWithMismatchedType indexSetterWithNoGetterOverload indexSetterWithNoGetterOverloadFixed inliningDoesNotAffectNestedCalls inliningDoesntProduceAliasingIssues intBitAnd intBitNot intBitOr intBitXor intLShift intOverloadResolution intOverloadResolutionReverseOrder intRShift intSimpleMath lShiftWrongArgumentLength lValues lexerKeyword linkedList literalBool loadNull loadNullArrayRef logicalNegation loneIndexSetter loneIndexSetterPointer loneSetter loneSetterPointer lotsOfLocalVariables makeArrayRefFromArrayRef makeArrayRefFromLocal makeArrayRefFromPointer minusEquals minusEqualsResult minusWrongArgumentLength moduloWrongArgumentLength mutuallyRecursiveStruct mutuallyRecursiveStructWithPointers mutuallyRecursiveStructWithPointersBroken nameResolutionFailure nestedSubscript nestedSubscriptLValueEmulationSimple nestedSubscriptWithArraysInStructs nonArrayRefArrayLengthFail nonArrayRefArrayLengthSucceed notEqualsOverload notLoneIndexSetter notQuiteExhaustiveUcharSwitch notQuiteExhaustiveUcharSwitchWithDefault numThreads operatorBool operatorWithoutUninferrableTypeVariable overrideSubscriptStruct overrideSubscriptStructAndDoStores overrideSubscriptStructAndUsePointers overrideSubscriptStructAndUsePointersIncorrectly passNullToPtrMonomorphic passNullToPtrMonomorphicArrayRef passingArrayToFunction plusEquals plusEqualsResult plusWrongArgumentLength pointerGetter pointerIndexGetter pointerToMember pointerToPointer postfixMinusMinus postfixMinusMinusResult postfixPlusPlus postfixPlusPlusResult prefixMinusMinus prefixMinusMinusResult prefixPlusPlus prefixPlusPlusResult rShiftWrongArgumentLength recursiveSetters referenceEquality // Causes a metal compile error. selfCasts setterType setterWithMatchedType setterWithMismatchedType setterWithNoGetterOverload setterWithNoGetterOverloadFixed settingAnArrayInsideAStruct shaderStages shaderTypes simpleEnum // fails in type name resolution simpleSwitch standardLibraryDevicePointers storeNull storeNullArrayRef structFieldEnumElemClash switchBreak switchFallThrough ternaryExpression textureDimensions textureDimensionsNull textureGather textureLoad textureSample textureStore threadArrayRefLoad threadArrayRefLoadIntLiteral threadArrayRefStore threadPointerLoad threadPointerStore timesEquals timesEqualsResult timesWrongArgumentLength trap trapBecauseOfIndexAcesss trapTransitively typedefArray // crashes variableShadowing vectorTypeSyntax Current status: done: add1 intSimpleMath intRShift intBitAnd intBitNot intBitOr intBitXor intLShift indexAnderDoesntReturnPointer indexAnderDoesntTakeReference anderDoesntReturnPointer anderDoesntTakeReference anderWithBadIndex anderWithNothingWrong anderWithWrongNumberOfArguments arrayRefToArrayRef assignLength assignLengthHelper badIntLiteralForFloat badIntLiteralForInt buildArrayThenSumIt buildArrayThenSumItUsingArrayReference boolBitAnd boolBitNot boolBitOr boolBitXor builtinMatrices defaultEnumConstructor equality equalityTypeFailure notEquality equalsWrongArgumentLength equalsWrongReturnType floatMath lessThanWrongArgumentLength lessThanWrongReturnType lessEqualWrongArgumentLength lessEqualWrongReturnType enumDuplicates enumArrayRefBase enumFloatBase enumPtrBase enumNoMembers enumStructBase matrixMultiplication makeArrayRefFromArrayRef makeArrayRefFromLocal makeArrayRefFromPointer pointerIndexGetter pointerGetter pointerToPointer pointerToMember postfixMinusMinus postfixMinusMinusResult postfixPlusPlus postfixPlusPlusResult prefixMinusMinus prefixMinusMinusResult prefixPlusPlus prefixPlusPlusResult returnAnArrayFromAFunction returnIf returnReferenceToSameParameter returnReferenceToParameterWithDifferentFunctions returnReferenceToParameter returnReferenceToLocalVariableWithNesting returnReferenceToLocalVariable returnNullArrayRef returnNull returnIntLiteralFloat returnIntLiteralUint referenceTakenToLocalVariableInEntryPointShouldntMoveAnything simpleAssignment simpleDefault simpleVariable simpleDereference simpleStruct simpleMakePtr simpleLength simpleUnreachableCode simpleNoReturn simpleRecursiveStruct simpleRecursion simpleGetter simpleSetter simpleWhile threadArrayRefLoad threadArrayRefLoadIntLiteral threadArrayRefStore twoIntLiterals typeMismatchAssignment typeMismatchReturn typeMismatchReturnParam typeMismatchVariableDecl threadPointerLoad threadPointerStore uintBitAnd uintBitNot uintBitOr uintBitXor uintLShift uintRShift uintSimpleMath skipping: ucharBitAnd ucharBitNot ucharBitOr ucharBitXor ucharLShift ucharRShift ucharSimpleMath not done: andReturnedArrayRef // doesn't work anderWithArrayRef // we fail arrayIndex // doesn't work with dynamic indices. Also, some of the indices may be backwards w.r.t selecting column/row. arrayLoad // Make test harness support arrays as input types. assignUintToInt atomics atomicsNull badAdd badIntLiteralForUint // doesn't work bitAndWrongArgumentLength bitNotWrongArgumentLength bitOrWrongArgumentLength bitXorWrongArgumentLength booleanMath booleanShortcircuiting break builtinVectorGetters builtinVectorIndexSetters builtinVectorSetters builtinVectors callArgumentsAreCopiedImmediatelyAfterEvaluation cannotCallAnotherEntryPoint casts commentParsing constantAddressSpace continue convertLocalVariableToArrayRef convertPtrToArrayRef copyArray copyConstructors decWrongArgumentLength decWrongTypes defaultInitializedNull defaultInitializedNullArrayRef defaultInitializedNullArrayRefIntLiteral dereferenceDefaultNull dereferenceDefaultNullArrayRef dereferenceStore deviceArrayRefLoad deviceArrayRefStore deviceArrayRefStoreIntLiteral devicePointerLoad devicePointerStore divideEquals divideEqualsResult divideWrongArgumentLength doWhile dotOperatorSetterWrongArgumentLength dotOperatorWrongArgumentLength doubleNot duplicateFunctions duplicateTypes emptyStruct enumSwitchBreakExhaustive enumSwitchBreakNotQuiteExhaustive enumSwitchBreakNotQuiteExhaustiveWithDefault enumWithExplicitIntBase // Need enums working enumWithManualValues // need enums working enumWithSomeManualValues // need enum values enumWithUintBase // need enums working enumWithoutZero evaluationOrderForArguments exhaustiveUcharSwitch forLoop generalNegation getterType greaterEqualWrongArgumentLength greaterEqualWrongReturnType greaterThanWrongReturnType greaterWrongArgumentLength halfSimpleMath identityBool ifElseIfElseStatement ifElseIfStatement ifElseStatement ifStatement incWrongArgumentLength incWrongTypes incrementAndDecrement indexAnderWithArrayRef // doesn't work indexAnderWithNothingWrong indexAnderWithWrongNumberOfArguments indexOperatorSetterWrongArgumentLength indexOperatorWrongArgumentLength indexSetterWithMismatchedType indexSetterWithNoGetterOverload indexSetterWithNoGetterOverloadFixed inliningDoesNotAffectNestedCalls inliningDoesntProduceAliasingIssues intOverloadResolution intOverloadResolutionReverseOrder lShiftWrongArgumentLength lValues lexerKeyword linkedList literalBool loadNull loadNullArrayRef logicalNegation loneIndexSetter loneIndexSetterPointer loneSetter loneSetterPointer lotsOfLocalVariables minusEquals minusEqualsResult minusWrongArgumentLength moduloWrongArgumentLength mutuallyRecursiveStruct mutuallyRecursiveStructWithPointers mutuallyRecursiveStructWithPointersBroken nameResolutionFailure nestedSubscript nestedSubscriptLValueEmulationSimple nestedSubscriptWithArraysInStructs nonArrayRefArrayLengthFail nonArrayRefArrayLengthSucceed notEqualsOverload notLoneIndexSetter notQuiteExhaustiveUcharSwitch notQuiteExhaustiveUcharSwitchWithDefault numThreads operatorBool operatorWithoutUninferrableTypeVariable overrideSubscriptStruct overrideSubscriptStructAndDoStores overrideSubscriptStructAndUsePointers overrideSubscriptStructAndUsePointersIncorrectly passNullToPtrMonomorphic passNullToPtrMonomorphicArrayRef passingArrayToFunction plusEquals plusEqualsResult plusWrongArgumentLength rShiftWrongArgumentLength recursiveSetters referenceEquality // Causes a metal compile error. selfCasts setterType setterWithMatchedType setterWithMismatchedType setterWithNoGetterOverload setterWithNoGetterOverloadFixed settingAnArrayInsideAStruct shaderStages shaderTypes simpleEnum // fails in type name resolution simpleSwitch standardLibraryDevicePointers storeNull storeNullArrayRef structFieldEnumElemClash switchBreak switchFallThrough ternaryExpression textureDimensions textureDimensionsNull textureGather textureLoad textureSample textureStore timesEquals timesEqualsResult timesWrongArgumentLength trap trapBecauseOfIndexAcesss trapTransitively typedefArray // crashes variableShadowing vectorTypeSyntax current status: done: ifElseIfElseStatement ifElseIfStatement ifElseStatement ifStatement plusEquals plusEqualsResult overrideSubscriptStructAndUsePointers overrideSubscriptStructAndUsePointersIncorrectly overrideSubscriptStructAndDoStores overrideSubscriptStruct builtinVectorGetters builtinVectorIndexSetters builtinVectorSetters builtinVectors mutuallyRecursiveStruct mutuallyRecursiveStructWithPointersBroken setterType getterType loadNull defaultInitializedNullArrayRefIntLiteral dereferenceDefaultNullArrayRef passNullToPtrMonomorphicArrayRef simpleWhile doWhile decWrongTypes incWrongTypes setterWithMismatchedType indexSetterWithMismatchedType greaterThanWrongReturnType greaterEqualWrongReturnType bitAndWrongArgumentLength bitNotWrongArgumentLength bitOrWrongArgumentLength bitXorWrongArgumentLength decWrongArgumentLength divideWrongArgumentLength dotOperatorSetterWrongArgumentLength dotOperatorWrongArgumentLength greaterEqualWrongArgumentLength greaterWrongArgumentLength incWrongArgumentLength indexOperatorSetterWrongArgumentLength indexOperatorWrongArgumentLength lShiftWrongArgumentLength minusWrongArgumentLength timesWrongArgumentLength rShiftWrongArgumentLength plusWrongArgumentLength moduloWrongArgumentLength add1 intSimpleMath intRShift intBitAnd intBitNot intBitOr intBitXor intLShift indexAnderDoesntReturnPointer indexAnderDoesntTakeReference anderDoesntReturnPointer anderDoesntTakeReference anderWithBadIndex anderWithNothingWrong anderWithWrongNumberOfArguments arrayRefToArrayRef assignLength assignLengthHelper badIntLiteralForFloat badIntLiteralForInt buildArrayThenSumIt buildArrayThenSumItUsingArrayReference boolBitAnd boolBitNot boolBitOr boolBitXor builtinMatrices defaultEnumConstructor equality equalityTypeFailure notEquality equalsWrongArgumentLength equalsWrongReturnType floatMath lessThanWrongArgumentLength lessThanWrongReturnType lessEqualWrongArgumentLength lessEqualWrongReturnType enumDuplicates enumArrayRefBase enumFloatBase enumPtrBase enumNoMembers enumStructBase matrixMultiplication makeArrayRefFromArrayRef makeArrayRefFromLocal makeArrayRefFromPointer pointerIndexGetter pointerGetter pointerToPointer pointerToMember postfixMinusMinus postfixMinusMinusResult postfixPlusPlus postfixPlusPlusResult prefixMinusMinus prefixMinusMinusResult prefixPlusPlus prefixPlusPlusResult returnAnArrayFromAFunction returnIf returnReferenceToSameParameter returnReferenceToParameterWithDifferentFunctions returnReferenceToParameter returnReferenceToLocalVariableWithNesting returnReferenceToLocalVariable returnNullArrayRef returnNull returnIntLiteralFloat returnIntLiteralUint referenceTakenToLocalVariableInEntryPointShouldntMoveAnything simpleAssignment simpleDefault simpleVariable simpleDereference simpleStruct simpleMakePtr simpleLength simpleUnreachableCode simpleNoReturn simpleRecursiveStruct simpleRecursion simpleGetter simpleSetter threadArrayRefLoad threadArrayRefLoadIntLiteral threadArrayRefStore twoIntLiterals typeMismatchAssignment typeMismatchReturn typeMismatchReturnParam typeMismatchVariableDecl threadPointerLoad threadPointerStore uintBitAnd uintBitNot uintBitOr uintBitXor uintLShift uintRShift uintSimpleMath ternaryExpression generalNegation skipping: ucharBitAnd ucharBitNot ucharBitOr ucharBitXor ucharLShift ucharRShift ucharSimpleMath exhaustiveUcharSwitch notQuiteExhaustiveUcharSwitch notQuiteExhaustiveUcharSwitchWithDefault not done: andReturnedArrayRef // doesn't work anderWithArrayRef // we fail arrayIndex // doesn't work with dynamic indices. Also, some of the indices may be backwards w.r.t selecting column/row. arrayLoad // Make test harness support arrays as input types. assignUintToInt atomics atomicsNull badAdd badIntLiteralForUint // doesn't work booleanMath booleanShortcircuiting break callArgumentsAreCopiedImmediatelyAfterEvaluation cannotCallAnotherEntryPoint casts commentParsing constantAddressSpace continue convertLocalVariableToArrayRef convertPtrToArrayRef copyArray copyConstructors defaultInitializedNull defaultInitializedNullArrayRef dereferenceDefaultNull dereferenceStore deviceArrayRefLoad // needs harness changes deviceArrayRefStore // needs harness changes deviceArrayRefStoreIntLiteral // needs harness changes devicePointerLoad // needs harness changes devicePointerStore // needs harness changes divideEquals // divide doesn't work divideEqualsResult // divit doesn't work doubleNot duplicateFunctions duplicateTypes emptyStruct enumSwitchBreakExhaustive // Need enums working enumSwitchBreakNotQuiteExhaustive // Need enums working enumSwitchBreakNotQuiteExhaustiveWithDefault // Need enums working enumWithExplicitIntBase // Need enums working enumWithManualValues // need enums working enumWithSomeManualValues // need enum values enumWithUintBase // need enums working enumWithoutZero // Need enums working evaluationOrderForArguments forLoop // crashes compiler halfSimpleMath identityBool incrementAndDecrement indexAnderWithArrayRef // doesn't work indexAnderWithNothingWrong indexAnderWithWrongNumberOfArguments indexSetterWithNoGetterOverload indexSetterWithNoGetterOverloadFixed inliningDoesNotAffectNestedCalls inliningDoesntProduceAliasingIssues intOverloadResolution intOverloadResolutionReverseOrder lValues lexerKeyword linkedList literalBool loadNullArrayRef // crashes checker logicalNegation loneIndexSetter loneIndexSetterPointer loneSetter loneSetterPointer lotsOfLocalVariables minusEquals minusEqualsResult nameResolutionFailure nestedSubscript nestedSubscriptLValueEmulationSimple nestedSubscriptWithArraysInStructs nonArrayRefArrayLengthFail nonArrayRefArrayLengthSucceed notEqualsOverload notLoneIndexSetter numThreads operatorBool operatorWithoutUninferrableTypeVariable passNullToPtrMonomorphic passingArrayToFunction recursiveSetters referenceEquality // Causes a metal compile error. selfCasts setterWithMatchedType setterWithNoGetterOverload setterWithNoGetterOverloadFixed settingAnArrayInsideAStruct shaderStages shaderTypes simpleEnum // fails in type name resolution simpleSwitch standardLibraryDevicePointers storeNull storeNullArrayRef structFieldEnumElemClash switchBreak switchFallThrough textureDimensions textureDimensionsNull textureGather textureLoad textureSample textureStore timesEquals timesEqualsResult trap trapBecauseOfIndexAcesss trapTransitively typedefArray // crashes variableShadowing vectorTypeSyntax mutuallyRecursiveStructWithPointers // doesn't work latest status:
done:
operatorWithoutUninferrableTypeVariable
lotsOfLocalVariables
logicalNegation
intOverloadResolution
intOverloadResolutionReverseOrder
notEqualsOverload
trapBecauseOfIndexAcesss
incrementAndDecrement
evaluationOrderForArguments
doubleNot
copyArray
callArgumentsAreCopiedImmediatelyAfterEvaluation
lValues
casts
selfCasts
badAdd
break
continue
booleanMath
identityBool
literalBool
operatorBool
duplicateFunctions
variableShadowing
nameResolutionFailure
switchBreak
timesEquals
timesEqualsResult
minusEquals
minusEqualsResult
passingArrayToFunction
passNullToPtrMonomorphic
storeNull
commentParsing
setterWithMatchedType
setterWithNoGetterOverload
setterWithNoGetterOverloadFixed
recursiveSetters
loneSetter
loneSetterPointer
nonArrayRefArrayLengthFail
nonArrayRefArrayLengthSucceed
indexSetterWithNoGetterOverload
indexSetterWithNoGetterOverloadFixed
notLoneIndexSetter
loneIndexSetter
loneIndexSetterPointer
indexAnderWithNothingWrong
indexAnderWithWrongNumberOfArguments
vectorTypeSyntax
settingAnArrayInsideAStruct
emptyStruct
defaultInitializedNull
defaultInitializedNullArrayRef
dereferenceDefaultNull
dereferenceStore
ifElseIfElseStatement
ifElseIfStatement
ifElseStatement
ifStatement
plusEquals
plusEqualsResult
overrideSubscriptStructAndUsePointers
overrideSubscriptStructAndUsePointersIncorrectly
overrideSubscriptStructAndDoStores
overrideSubscriptStruct
builtinVectorGetters
builtinVectorIndexSetters
builtinVectorSetters
builtinVectors
mutuallyRecursiveStruct
mutuallyRecursiveStructWithPointersBroken
setterType
getterType
loadNull
defaultInitializedNullArrayRefIntLiteral
dereferenceDefaultNullArrayRef
passNullToPtrMonomorphicArrayRef
simpleWhile
doWhile
decWrongTypes
incWrongTypes
setterWithMismatchedType
indexSetterWithMismatchedType
greaterThanWrongReturnType
greaterEqualWrongReturnType
bitAndWrongArgumentLength
bitNotWrongArgumentLength
bitOrWrongArgumentLength
bitXorWrongArgumentLength
decWrongArgumentLength
divideWrongArgumentLength
dotOperatorSetterWrongArgumentLength
dotOperatorWrongArgumentLength
greaterEqualWrongArgumentLength
greaterWrongArgumentLength
incWrongArgumentLength
indexOperatorSetterWrongArgumentLength
indexOperatorWrongArgumentLength
lShiftWrongArgumentLength
minusWrongArgumentLength
timesWrongArgumentLength
rShiftWrongArgumentLength
plusWrongArgumentLength
moduloWrongArgumentLength
add1
intSimpleMath
intRShift
intBitAnd
intBitNot
intBitOr
intBitXor
intLShift
indexAnderDoesntReturnPointer
indexAnderDoesntTakeReference
anderDoesntReturnPointer
anderDoesntTakeReference
anderWithBadIndex
anderWithNothingWrong
anderWithWrongNumberOfArguments
arrayRefToArrayRef
assignLength
assignLengthHelper
badIntLiteralForFloat
badIntLiteralForInt
buildArrayThenSumIt
buildArrayThenSumItUsingArrayReference
boolBitAnd
boolBitNot
boolBitOr
boolBitXor
builtinMatrices
defaultEnumConstructor
equality
equalityTypeFailure
notEquality
equalsWrongArgumentLength
equalsWrongReturnType
floatMath
lessThanWrongArgumentLength
lessThanWrongReturnType
lessEqualWrongArgumentLength
lessEqualWrongReturnType
enumDuplicates
enumArrayRefBase
enumFloatBase
enumPtrBase
enumNoMembers
enumStructBase
matrixMultiplication
makeArrayRefFromArrayRef
makeArrayRefFromLocal
makeArrayRefFromPointer
pointerIndexGetter
pointerGetter
pointerToPointer
pointerToMember
postfixMinusMinus
postfixMinusMinusResult
postfixPlusPlus
postfixPlusPlusResult
prefixMinusMinus
prefixMinusMinusResult
prefixPlusPlus
prefixPlusPlusResult
returnAnArrayFromAFunction
returnIf
returnReferenceToSameParameter
returnReferenceToParameterWithDifferentFunctions
returnReferenceToParameter
returnReferenceToLocalVariableWithNesting
returnReferenceToLocalVariable
returnNullArrayRef
returnNull
returnIntLiteralFloat
returnIntLiteralUint
referenceTakenToLocalVariableInEntryPointShouldntMoveAnything
simpleAssignment
simpleDefault
simpleVariable
simpleDereference
simpleStruct
simpleMakePtr
simpleLength
simpleUnreachableCode
simpleNoReturn
simpleRecursiveStruct
simpleRecursion
simpleGetter
simpleSetter
threadArrayRefLoad
threadArrayRefLoadIntLiteral
threadArrayRefStore
twoIntLiterals
typeMismatchAssignment
typeMismatchReturn
typeMismatchReturnParam
typeMismatchVariableDecl
threadPointerLoad
threadPointerStore
uintBitAnd
uintBitNot
uintBitOr
uintBitXor
uintLShift
uintRShift
uintSimpleMath
ternaryExpression
generalNegation
skipping:
ucharBitAnd
ucharBitNot
ucharBitOr
ucharBitXor
ucharLShift
ucharRShift
ucharSimpleMath
exhaustiveUcharSwitch
notQuiteExhaustiveUcharSwitch
notQuiteExhaustiveUcharSwitchWithDefault
halfSimpleMath
not done:
fail:
shaderStages // Need a way for harness to do this.
lexerKeyword // we don't have any such facility in our harness at the moment.
cannotCallAnotherEntryPoint // Need to expand our harness to not insert entrypoints. We may already have tests for exactly this, though?
shaderTypes // Need to expand our harness to not insert entrypoints. We may already have tests for exactly this, though?
deviceArrayRefLoad // needs harness changes
deviceArrayRefStore // needs harness changes
deviceArrayRefStoreIntLiteral // needs harness changes
devicePointerLoad // needs harness changes
devicePointerStore // needs harness changes
arrayLoad // Make test harness support arrays as input types.
constantAddressSpace // We need to support this in test harness (and maybe compiler?)
textureDimensions // Need support for this in harness
textureDimensionsNull // Need support for this in harness
textureGather // Need support for this in harness
textureLoad // Need support for this in harness
textureSample // Need support for this in harness
textureStore // Need support for this in harness
standardLibraryDevicePointers // need support for this in harness
numThreads // We need to have a checkFail that doens't assume we already have one compute function. Harness support.
structFieldEnumElemClash // enums need to work
enumSwitchBreakExhaustive // Need enums working
enumSwitchBreakNotQuiteExhaustive // Need enums working
enumSwitchBreakNotQuiteExhaustiveWithDefault // Need enums working
enumWithExplicitIntBase // Need enums working
enumWithManualValues // need enums working
enumWithSomeManualValues // need enum values
enumWithUintBase // need enums working
enumWithoutZero // Need enums working
simpleEnum // fails in type name resolution
copyConstructors // enums
divideEquals // divide doesn't work
divideEqualsResult // divide doesn't work
forLoop // crashes compiler
typedefArray // crashes
storeNullArrayRef // crashes in checker.
loadNullArrayRef // crashes checker
nestedSubscriptWithArraysInStructs // fails in checker
indexAnderWithArrayRef // Fails in checker.
atomics // fails in checker
atomicsNull // fails in checker
nestedSubscriptLValueEmulationSimple // Fails in checker
nestedSubscript // fails in checker
switchFallThrough // fails in statement checker
simpleSwitch // fails in statement checker
convertLocalVariableToArrayRef // We support "thread int[] foo = @x; return foo;", but not "return @x;". Checer
andReturnedArrayRef // Doesn't work. Checker?
anderWithArrayRef // We fail. Checker?
mutuallyRecursiveStructWithPointers // doesn't work. Checker?
convertPtrToArrayRef // We support "thread int[] foo = @x; return foo;", but not "return @x;". Checker.
referenceEquality // Causes a metal compile error.
duplicateTypes // We don't fail even though we should with duplicate struct declarations.
arrayIndex // doesn't work with dynamic indices. Also, some of the indices may be backwards w.r.t selecting column/row.
assignUintToInt // we don't parse '42u' last I checked. Parser.
booleanShortcircuiting // We don't short circuit
trap // we're thinking of removing "trap;"
trapTransitively // we're thinking of removing "trap;"
badIntLiteralForUint // doesn't work
inliningDoesNotAffectNestedCalls // Seems specific to JS implementation and inlining
inliningDoesntProduceAliasingIssues // Seems specific to JS implementation and inlining
linkedList // fails in resolveNamesInTypes
// We don't support this, but according to JS spec tests should:
int foo5()
{
while (true) {
return 7;
}
}
Current status: // works divideEquals divideEqualsResult done: storeNullArrayRef loadNullArrayRef enumWithUintBase simpleEnum enumWithoutZero enumWithSomeManualValues enumWithExplicitIntBase enumSwitchBreakExhaustive enumSwitchBreakNotQuiteExhaustiveWithDefault enumWithManualValues enumSwitchBreakNotQuiteExhaustive copyConstructors operatorWithoutUninferrableTypeVariable lotsOfLocalVariables logicalNegation intOverloadResolution intOverloadResolutionReverseOrder notEqualsOverload trapBecauseOfIndexAcesss incrementAndDecrement evaluationOrderForArguments doubleNot copyArray callArgumentsAreCopiedImmediatelyAfterEvaluation lValues casts selfCasts badAdd break continue booleanMath identityBool literalBool operatorBool duplicateFunctions variableShadowing nameResolutionFailure switchBreak timesEquals timesEqualsResult minusEquals minusEqualsResult passingArrayToFunction passNullToPtrMonomorphic storeNull commentParsing setterWithMatchedType setterWithNoGetterOverload setterWithNoGetterOverloadFixed recursiveSetters loneSetter loneSetterPointer nonArrayRefArrayLengthFail nonArrayRefArrayLengthSucceed indexSetterWithNoGetterOverload indexSetterWithNoGetterOverloadFixed notLoneIndexSetter loneIndexSetter loneIndexSetterPointer indexAnderWithNothingWrong indexAnderWithWrongNumberOfArguments vectorTypeSyntax settingAnArrayInsideAStruct emptyStruct defaultInitializedNull defaultInitializedNullArrayRef dereferenceDefaultNull dereferenceStore ifElseIfElseStatement ifElseIfStatement ifElseStatement ifStatement plusEquals plusEqualsResult overrideSubscriptStructAndUsePointers overrideSubscriptStructAndUsePointersIncorrectly overrideSubscriptStructAndDoStores overrideSubscriptStruct builtinVectorGetters builtinVectorIndexSetters builtinVectorSetters builtinVectors mutuallyRecursiveStruct mutuallyRecursiveStructWithPointersBroken setterType getterType loadNull defaultInitializedNullArrayRefIntLiteral dereferenceDefaultNullArrayRef passNullToPtrMonomorphicArrayRef simpleWhile doWhile decWrongTypes incWrongTypes setterWithMismatchedType indexSetterWithMismatchedType greaterThanWrongReturnType greaterEqualWrongReturnType bitAndWrongArgumentLength bitNotWrongArgumentLength bitOrWrongArgumentLength bitXorWrongArgumentLength decWrongArgumentLength divideWrongArgumentLength dotOperatorSetterWrongArgumentLength dotOperatorWrongArgumentLength greaterEqualWrongArgumentLength greaterWrongArgumentLength incWrongArgumentLength indexOperatorSetterWrongArgumentLength indexOperatorWrongArgumentLength lShiftWrongArgumentLength minusWrongArgumentLength timesWrongArgumentLength rShiftWrongArgumentLength plusWrongArgumentLength moduloWrongArgumentLength add1 intSimpleMath intRShift intBitAnd intBitNot intBitOr intBitXor intLShift indexAnderDoesntReturnPointer indexAnderDoesntTakeReference anderDoesntReturnPointer anderDoesntTakeReference anderWithBadIndex anderWithNothingWrong anderWithWrongNumberOfArguments arrayRefToArrayRef assignLength assignLengthHelper badIntLiteralForFloat badIntLiteralForInt buildArrayThenSumIt buildArrayThenSumItUsingArrayReference boolBitAnd boolBitNot boolBitOr boolBitXor builtinMatrices defaultEnumConstructor equality equalityTypeFailure notEquality equalsWrongArgumentLength equalsWrongReturnType floatMath lessThanWrongArgumentLength lessThanWrongReturnType lessEqualWrongArgumentLength lessEqualWrongReturnType enumDuplicates enumArrayRefBase enumFloatBase enumPtrBase enumNoMembers enumStructBase matrixMultiplication makeArrayRefFromArrayRef makeArrayRefFromLocal makeArrayRefFromPointer pointerIndexGetter pointerGetter pointerToPointer pointerToMember postfixMinusMinus postfixMinusMinusResult postfixPlusPlus postfixPlusPlusResult prefixMinusMinus prefixMinusMinusResult prefixPlusPlus prefixPlusPlusResult returnAnArrayFromAFunction returnIf returnReferenceToSameParameter returnReferenceToParameterWithDifferentFunctions returnReferenceToParameter returnReferenceToLocalVariableWithNesting returnReferenceToLocalVariable returnNullArrayRef returnNull returnIntLiteralFloat returnIntLiteralUint referenceTakenToLocalVariableInEntryPointShouldntMoveAnything simpleAssignment simpleDefault simpleVariable simpleDereference simpleStruct simpleMakePtr simpleLength simpleUnreachableCode simpleNoReturn simpleRecursiveStruct simpleRecursion simpleGetter simpleSetter threadArrayRefLoad threadArrayRefLoadIntLiteral threadArrayRefStore twoIntLiterals typeMismatchAssignment typeMismatchReturn typeMismatchReturnParam typeMismatchVariableDecl threadPointerLoad threadPointerStore uintBitAnd uintBitNot uintBitOr uintBitXor uintLShift uintRShift uintSimpleMath ternaryExpression generalNegation skipping: ucharBitAnd ucharBitNot ucharBitOr ucharBitXor ucharLShift ucharRShift ucharSimpleMath exhaustiveUcharSwitch notQuiteExhaustiveUcharSwitch notQuiteExhaustiveUcharSwitchWithDefault halfSimpleMath not done: fail: shaderStages // Need a way for harness to do this. lexerKeyword // we don't have any such facility in our harness at the moment. cannotCallAnotherEntryPoint // Need to expand our harness to not insert entrypoints. We may already have tests for exactly this, though? shaderTypes // Need to expand our harness to not insert entrypoints. We may already have tests for exactly this, though? deviceArrayRefLoad // needs harness changes deviceArrayRefStore // needs harness changes deviceArrayRefStoreIntLiteral // needs harness changes devicePointerLoad // needs harness changes devicePointerStore // needs harness changes arrayLoad // Make test harness support arrays as input types. constantAddressSpace // We need to support this in test harness (and maybe compiler?) textureDimensions // Need support for this in harness textureDimensionsNull // Need support for this in harness textureGather // Need support for this in harness textureLoad // Need support for this in harness textureSample // Need support for this in harness textureStore // Need support for this in harness standardLibraryDevicePointers // need support for this in harness numThreads // We need to have a checkFail that doens't assume we already have one compute function. Harness support. structFieldEnumElemClash // enums need to work forLoop // crashes compiler typedefArray // crashes nestedSubscriptWithArraysInStructs // fails in checker indexAnderWithArrayRef // Fails in checker. atomics // fails in checker atomicsNull // fails in checker nestedSubscriptLValueEmulationSimple // Fails in checker nestedSubscript // fails in checker switchFallThrough // fails in statement checker simpleSwitch // fails in statement checker convertLocalVariableToArrayRef // We support "thread int[] foo = @x; return foo;", but not "return @x;". Checer andReturnedArrayRef // Doesn't work. Checker? anderWithArrayRef // We fail. Checker? mutuallyRecursiveStructWithPointers // doesn't work. Checker? convertPtrToArrayRef // We support "thread int[] foo = @x; return foo;", but not "return @x;". Checker. referenceEquality // Causes a metal compile error. duplicateTypes // We don't fail even though we should with duplicate struct declarations. arrayIndex // doesn't work with dynamic indices. Also, some of the indices may be backwards w.r.t selecting column/row. assignUintToInt // we don't parse '42u' last I checked. Parser. booleanShortcircuiting // We don't short circuit trap // we're thinking of removing "trap;" trapTransitively // we're thinking of removing "trap;" badIntLiteralForUint // doesn't work inliningDoesNotAffectNestedCalls // Seems specific to JS implementation and inlining inliningDoesntProduceAliasingIssues // Seems specific to JS implementation and inlining linkedList // fails in resolveNamesInTypes WHLSL is no longer relevant. |