Tom Stellard | 41fc785 | 2013-07-23 01:48:42 +0000 | [diff] [blame^] | 1 | ; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s --check-prefix=EG-CHECK |
| 2 | ; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s --check-prefix=CM-CHECK |
| 3 | ; RUN: llc < %s -march=r600 -mcpu=SI | FileCheck %s --check-prefix=SI-CHECK |
| 4 | |
| 5 | ; EG-CHECK: @i32_mul24 |
| 6 | ; Signed 24-bit multiply is not supported on pre-Cayman GPUs. |
| 7 | ; EG-CHECK: MULLO_INT |
| 8 | ; CM-CHECK: MUL_INT24 {{[ *]*}}T{{[0-9].[XYZW]}}, KC0[2].Z, KC0[2].W |
| 9 | ; SI-CHECK: V_MUL_I32_I24 |
| 10 | define void @i32_mul24(i32 addrspace(1)* %out, i32 %a, i32 %b) { |
| 11 | entry: |
| 12 | %0 = shl i32 %a, 8 |
| 13 | %a_24 = ashr i32 %0, 8 |
| 14 | %1 = shl i32 %b, 8 |
| 15 | %b_24 = ashr i32 %1, 8 |
| 16 | %2 = mul i32 %a_24, %b_24 |
| 17 | store i32 %2, i32 addrspace(1)* %out |
| 18 | ret void |
| 19 | } |