)]}'
{
  "commit": "32eb3295a3c814c1551f94ebc29eed1dec3cb3b1",
  "tree": "9aa7444c7cd9ba701cedae371321915a3ccf9317",
  "parents": [
    "73e3f397e84d6d2a34bded52b0a77af3f4062ac2"
  ],
  "author": {
    "name": "Andrew Waterman",
    "email": "aswaterman@gmail.com",
    "time": "Tue Oct 20 18:37:46 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 20 18:37:46 2026 -0700"
  },
  "message": "Add basic BF16 routines (#45)\n\n* Improve bf16_to_f32 performance\n\nSigned-off-by: Andrew Waterman \u003candrew@sifive.com\u003e\n\n* Add basic BF16 routines\n\nThese are implemented so as to make them more-or-less obviously correct\n(with the exception of the FMA, which is a bit more subtle, because of\ndouble rounding).  As such, they are implemented by widening into formats\nwith existing native support, then rounding back to BF16.  The hope is\nthat optimized, functionally equivalent variants will eventually supplant\nthese.\n\nSigned-off-by: Andrew Waterman \u003candrew@sifive.com\u003e\n\n---------\n\nSigned-off-by: Andrew Waterman \u003candrew@sifive.com\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e58561a494f5d39df2e50eeceb92518859718859",
      "new_mode": 33188,
      "new_path": "source/bf16_add.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d034463662e6385d850207b400da950d649474d7",
      "new_mode": 33188,
      "new_path": "source/bf16_div.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "91d7b304d320e862241d2b82e75afce3a5d5a789",
      "new_mode": 33188,
      "new_path": "source/bf16_eq.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0f60b26d6a901f6b3f949e4b76006b18f3b824a3",
      "new_mode": 33188,
      "new_path": "source/bf16_le.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4057f6f3c493a0ac3ebe0e18fc09e85062591646",
      "new_mode": 33188,
      "new_path": "source/bf16_lt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0e26130eb0e74a9053e642ac19a5a9b2b8e9beed",
      "new_mode": 33188,
      "new_path": "source/bf16_mul.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20c8793372920a9d6e20bd6a60b2218d5a424fc6",
      "new_mode": 33188,
      "new_path": "source/bf16_mulAdd.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "149916b759d0a4a424ae26b0be775948fe1ba2ac",
      "new_mode": 33188,
      "new_path": "source/bf16_sqrt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "140f064da9e7a1532e01463fc4aacd6e04bf1437",
      "new_mode": 33188,
      "new_path": "source/bf16_sub.c"
    },
    {
      "type": "modify",
      "old_id": "9a64b2bb89dc8a2c70ffaa3d0db4579fc7b36045",
      "old_mode": 33188,
      "old_path": "source/bf16_to_f32.c",
      "new_id": "dbba2ce22424ab61f67adcbb7fd872dd4890bbf0",
      "new_mode": 33188,
      "new_path": "source/bf16_to_f32.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ba23a3853e3e368dcc11214aca5acf7d5583d2aa",
      "new_mode": 33188,
      "new_path": "source/bf16_to_f64.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "260b772afcc3c04165b2f33310f71ed20d5d01b8",
      "new_mode": 33188,
      "new_path": "source/bf16_to_i32.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2b1efa1221e6421c00edf2a7cb2bb3f07ed06414",
      "new_mode": 33188,
      "new_path": "source/bf16_to_ui32.c"
    },
    {
      "type": "modify",
      "old_id": "bf5014bf9399e1ca2e1eb882e0f0a0582e37f680",
      "old_mode": 33188,
      "old_path": "source/include/softfloat.h",
      "new_id": "49b55a1aa690cca7015bed961f56a534260001c5",
      "new_mode": 33188,
      "new_path": "source/include/softfloat.h"
    }
  ]
}
