| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 | |
| ; RUN: opt < %s -passes=instsimplify -S | FileCheck %s | |
| define bfloat @bfloat_to_half() { | |
| ; CHECK-LABEL: define bfloat @bfloat_to_half() { | |
| ; CHECK-NEXT: ret bfloat 2.658460e+36 | |
| ; | |
| %val = bitcast half 0xH7C00 to bfloat | |
| ret bfloat %val | |
| } | |
| define <2 x bfloat> @bfloat_to_half_vec() { | |
| ; CHECK-LABEL: define <2 x bfloat> @bfloat_to_half_vec() { | |
| ; CHECK-NEXT: ret <2 x bfloat> splat (bfloat 2.658460e+36) | |
| ; | |
| %val = bitcast <2 x half> splat (half 0xH7C00) to <2 x bfloat> | |
| ret <2 x bfloat> %val | |
| } | |
| define half @half_to_bfloat() { | |
| ; CHECK-LABEL: define half @half_to_bfloat() { | |
| ; CHECK-NEXT: ret half +inf | |
| ; | |
| %val = bitcast bfloat 0xR7C00 to half | |
| ret half %val | |
| } | |
| define <2 x half> @half_to_bfloat_vec() { | |
| ; CHECK-LABEL: define <2 x half> @half_to_bfloat_vec() { | |
| ; CHECK-NEXT: ret <2 x half> splat (half +inf) | |
| ; | |
| %val = bitcast <2 x bfloat> splat (bfloat 0xR7C00) to <2 x half> | |
| ret <2 x half> %val | |
| } | |
| define half @recursive() { | |
| ; CHECK-LABEL: define half @recursive() { | |
| ; CHECK-NEXT: ret half +inf | |
| ; | |
| %first = bitcast bfloat 0xR7C00 to half | |
| %second = bitcast half %first to bfloat | |
| %third = bitcast bfloat %second to half | |
| ret half %third | |
| } |