Bug 195681

Summary: [WHLSL] Make the C++ compiler pass all tests in JS reference compiler
Product: WebKit Reporter: Myles C. Maxfield <mmaxfield>
Component: WebGPUAssignee: 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:    

Myles C. Maxfield
Reported 2019-03-13 10:13:56 PDT
Import test suite
Attachments
Radar WebKit Bug Importer
Comment 1 2019-05-13 17:07:57 PDT
Saam Barati
Comment 2 2019-06-26 15:57:12 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
Saam Barati
Comment 3 2019-07-08 18:52:49 PDT
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
Saam Barati
Comment 4 2019-07-09 15:28:32 PDT
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
Saam Barati
Comment 5 2019-07-09 15:29:06 PDT
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
Saam Barati
Comment 6 2019-07-09 16:38:28 PDT
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
Saam Barati
Comment 7 2019-07-09 19:33:10 PDT
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
Saam Barati
Comment 8 2019-07-10 17:41:47 PDT
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; } }
Saam Barati
Comment 9 2019-07-22 13:09:57 PDT
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
Myles C. Maxfield
Comment 10 2020-05-05 00:42:31 PDT
WHLSL is no longer relevant.
Note You need to log in before you can comment on or make changes to this bug.