{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/5196","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/5196/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/5196/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/5196/events","html_url":"https://github.com/dotnet/coreclr/pull/5196","id":156609137,"number":5196,"title":"ARM64: ABI - Passing HFA struct arguments in floating point registers","user":{"login":"briansull","id":11621884,"avatar_url":"https://avatars.githubusercontent.com/u/11621884?v=3","gravatar_id":"","url":"https://api.github.com/users/briansull","html_url":"https://github.com/briansull","followers_url":"https://api.github.com/users/briansull/followers","following_url":"https://api.github.com/users/briansull/following{/other_user}","gists_url":"https://api.github.com/users/briansull/gists{/gist_id}","starred_url":"https://api.github.com/users/briansull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briansull/subscriptions","organizations_url":"https://api.github.com/users/briansull/orgs","repos_url":"https://api.github.com/users/briansull/repos","events_url":"https://api.github.com/users/briansull/events{/privacy}","received_events_url":"https://api.github.com/users/briansull/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/coreclr/labels/2%20-%20In%20Progress","name":"2 - In Progress","color":"CCCCCC"},{"url":"https://api.github.com/repos/dotnet/coreclr/labels/cla-already-signed","name":"cla-already-signed","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2016-05-24T21:06:04Z","updated_at":"2016-05-25T22:53:41Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/5196","html_url":"https://github.com/dotnet/coreclr/pull/5196","diff_url":"https://github.com/dotnet/coreclr/pull/5196.diff","patch_url":"https://github.com/dotnet/coreclr/pull/5196.patch"},"body":"Enable HFA support for passing arguments on ARM64\r\n   Fixes #4946 ARM64: ABI - Passing HFA struct arguments in floating point registers\r\n   We are now passing 24 additional HFA tests and have one test regression\r\n \r\n   Previously HFA support was enabled on ARM32 using #ifdef _TARGET_ARM_\r\n   Now HFA support is enabled for both platform using #ifdef FEATURE_HFA\r\n   Note that FEATURE_HFA is a VM define and enable on for platforms that have HFA support\r\n   The VM is responsible for determining if a stuct is a HFA or not\r\n   The JIT Calls this method CorInfoType CEEInfo::getHFAType(CORINFO_CLASS_HANDLE hClass) to identify HFA types\r\n   Note that when using an AltJit targeting Arm32 or Arm64 we will never see an HFA type  \r\n\r\nIn CodegenArm64.cpp \r\nMethod genPutArgStk\r\n   Implement passing of HFA structs on the stack\r\n   Refactored to handle both 16-byte structs and HFA struct\r\n   Track GC types for the 16-byte structs or he floating point types for HFA's\r\n   Use ldp when we have a 16-byte struct with no GC pointers\r\n   Added asserts to check that we never write past the end of the outgoing arg area\r\n\r\nIn CodegenCommon.cpp \r\nMethod genFnPrologCalleRegArgs\r\n   Implement the homing of incoming HDF variables\r\n   These are currently homed into a stack based struct as we did for ARM32\r\n   Use floating point types and registers when handling HFAs\r\n   Added asserts to check that we never write past the end of the stack based struct\r\n\r\nAdded Dump method for fgArgTabEntry to display how arguments will be passed\r\nAdded GetNextSlotNum for fgArgInfo which returns what stack offset we would use for the next stack base argument\r\nFixed tree dump so that it can print multireg struct arguments \r\n\r\nIn Morph.cpp\r\nMethod ArgsComplete\r\n   We currently chose to spill odd sized structs (11,13,14,15 bytes in size) into a GT_LCL_VAR temp so that we don't\r\n   need to use more than two instructions to pass a GT_OBJ struct.  (Since we cannot read beyond the end of a GT_OBJ struct)\r\nMethod fgMorpgArgs\r\n   Handle HFAs for multireg and stack arguments\r\n   In this method 'size' is the number of registers used when passing an argument in registers\r\n   or the number of TARGET_POINTER_SIZE stack slots when passing them on the stack\r\n   For HFA this means that 'size' can change if we can't pass them using registers.\r\n   Use new Dump method to print out how each argument is passed (what register or what stack slot)\r\nMethod fgMorphMultiregStuctArg\r\n   Implement the expansion of multireg HFA arguments into GT_LISTs\r\n   Refactored to handle both 16-byte structs and HFA struct\r\n   Track GC types for the 16-byte structs or he floating point types for HFA's    \r\n"},"comment":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/comments/221731774","html_url":"https://github.com/dotnet/coreclr/pull/5196#issuecomment-221731774","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/5196","id":221731774,"user":{"login":"briansull","id":11621884,"avatar_url":"https://avatars.githubusercontent.com/u/11621884?v=3","gravatar_id":"","url":"https://api.github.com/users/briansull","html_url":"https://github.com/briansull","followers_url":"https://api.github.com/users/briansull/followers","following_url":"https://api.github.com/users/briansull/following{/other_user}","gists_url":"https://api.github.com/users/briansull/gists{/gist_id}","starred_url":"https://api.github.com/users/briansull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briansull/subscriptions","organizations_url":"https://api.github.com/users/briansull/orgs","repos_url":"https://api.github.com/users/briansull/repos","events_url":"https://api.github.com/users/briansull/events{/privacy}","received_events_url":"https://api.github.com/users/briansull/received_events","type":"User","site_admin":false},"created_at":"2016-05-25T22:53:41Z","updated_at":"2016-05-25T22:53:41Z","body":"@dotnet-bot test Windows_NT arm64 Checked"}}
{"actor":{"display_login":"briansull"}}