xref: /llvm-project/llvm/test/CodeGen/M68k/Data/load-extend.ll (revision d3c10b51a99d4476261f57ceaa7db60960cd5493)
1*d3c10b51SPeter Lafreniere; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2*d3c10b51SPeter Lafreniere; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s
3*d3c10b51SPeter Lafreniere
4*d3c10b51SPeter Lafreniere@0 = external constant <{ [32 x i8] }>
5*d3c10b51SPeter Lafreniere
6*d3c10b51SPeter Lafrenieredefine i32 @"test_zext_pcd_i8_to_i32"() {
7*d3c10b51SPeter Lafreniere; CHECK-LABEL: test_zext_pcd_i8_to_i32:
8*d3c10b51SPeter Lafreniere; CHECK:         .cfi_startproc
9*d3c10b51SPeter Lafreniere; CHECK-NEXT:  ; %bb.0:
10*d3c10b51SPeter Lafreniere; CHECK-NEXT:    move.b (__unnamed_1+16,%pc), %d0
11*d3c10b51SPeter Lafreniere; CHECK-NEXT:    and.l #255, %d0
12*d3c10b51SPeter Lafreniere; CHECK-NEXT:    rts
13*d3c10b51SPeter Lafreniere  %p = getelementptr inbounds i8, ptr @0, i32 16
14*d3c10b51SPeter Lafreniere  %val = load i8, ptr %p
15*d3c10b51SPeter Lafreniere  %val2 = zext i8 %val to i32
16*d3c10b51SPeter Lafreniere  ret i32 %val2
17*d3c10b51SPeter Lafreniere}
18*d3c10b51SPeter Lafreniere
19*d3c10b51SPeter Lafrenieredefine i16 @"test_zext_pcd_i8_to_i16"() {
20*d3c10b51SPeter Lafreniere; CHECK-LABEL: test_zext_pcd_i8_to_i16:
21*d3c10b51SPeter Lafreniere; CHECK:         .cfi_startproc
22*d3c10b51SPeter Lafreniere; CHECK-NEXT:  ; %bb.0:
23*d3c10b51SPeter Lafreniere; CHECK-NEXT:    move.b (__unnamed_1+16,%pc), %d0
24*d3c10b51SPeter Lafreniere; CHECK-NEXT:    and.w #255, %d0
25*d3c10b51SPeter Lafreniere; CHECK-NEXT:    rts
26*d3c10b51SPeter Lafreniere  %p = getelementptr inbounds i8, ptr @0, i32 16
27*d3c10b51SPeter Lafreniere  %val = load i8, ptr %p
28*d3c10b51SPeter Lafreniere  %val2 = zext i8 %val to i16
29*d3c10b51SPeter Lafreniere  ret i16 %val2
30*d3c10b51SPeter Lafreniere}
31*d3c10b51SPeter Lafreniere
32*d3c10b51SPeter Lafrenieredefine i32 @"test_zext_pcd_i16_to_i32"() {
33*d3c10b51SPeter Lafreniere; CHECK-LABEL: test_zext_pcd_i16_to_i32:
34*d3c10b51SPeter Lafreniere; CHECK:         .cfi_startproc
35*d3c10b51SPeter Lafreniere; CHECK-NEXT:  ; %bb.0:
36*d3c10b51SPeter Lafreniere; CHECK-NEXT:    move.w (__unnamed_1+16,%pc), %d0
37*d3c10b51SPeter Lafreniere; CHECK-NEXT:    and.l #65535, %d0
38*d3c10b51SPeter Lafreniere; CHECK-NEXT:    rts
39*d3c10b51SPeter Lafreniere  %p = getelementptr inbounds i16, ptr @0, i32 8
40*d3c10b51SPeter Lafreniere  %val = load i16, ptr %p
41*d3c10b51SPeter Lafreniere  %val2 = zext i16 %val to i32
42*d3c10b51SPeter Lafreniere  ret i32 %val2
43*d3c10b51SPeter Lafreniere}
44